0x00 前言
1. 描述
官方github描述:
1 | Java Unmarshaller Security - Turning your data into code execution |
“将数据转换为代码执行”,我对其理解就是,在java反序列化时,利用序列化数据造成代码执行攻击。
Apache Shiro is a powerful and easy-to-use Java security framework that performs authentication, authorization, cryptography, and session management. With Shiro’s easy-to-understand API, you can quickly and easily secure any application – from the smallest mobile applications to the largest web and enterprise applications.
Apache Shiro是一个功能强大且易于使用的Java安全框架,它执行身份验证、授权、加密和会话管理。通过Shiro易于理解的API,您可以快速、轻松地保护任何应用程序——从最小的移动应用程序到最大的web和企业应用程序。
以往看到很多讲述RMI、JNDI、JRMP的文章,有部分文章都描述的并不是很清晰,看着通篇大论,觉得很详细,但看完之后却搞不懂,也解释不清,反正就是感觉自己还没搞懂,却又好像懂了点,很迷糊…
这篇文章,我想要的就是以最简短的内容和例子,去阐述RMI、JNDI、JRMP…,并讲讲为什么用InitialContext lookup一个JNDI的rmi、ldap服务会导致自身被反序列化RCE,为什么Registry bind暴露一个服务对象到RmiRegistry会导致Registry服务自身被反序列化RCE,为什么使用JRMP能互相对打等等。虽然我不能百分百保证我写的毫无错误,但是,我觉得你看了这篇文章之后,大概应该就懂了。