fastjson反序列化-JdbcRowSetImpl利用鍊
這裡涉及了JNDI與RMI的概念。
其本質為JNDI注入。
附上示例代碼
JdbcRowSetImplPoC.java
RMIServer.java
EvilObject.java
我們在JSONObject.parse方法下斷點調試

還是調用了parse.Object,步入
調用deserialze方法,進行反序列化
接下來會對JdbcRowSetImpl進行 初始化
在調用完構造函數後,parseObject還會去調用set方法。
根據poc的字段,可以在setDataSourceName與setAutoCommit下斷點。
發現确實調用了這兩個函數,在setDataSourceName方法中設定了資料源,setAutoCommit方法中,調用了connect方法。
connect方法
lookup方法
decodeObject中就是解析reference,之後調用getOnjectInstance去執行個體化對象。
調用流程總結:
具體利用方法:
搭建一個rmi伺服器和一個http伺服器
将exp類部署到http伺服器上。
如果目标網站存在fastjson包,且有json格式資料的輸入點。則可以構造json資料,達到遠端調用http伺服器上的類,造成指令執行。