S2-52 分析

From: S2-52 分析(含POC)

0x01 漏洞描述

2017年9月5日,Apache Struts發(fā)布最新安全公告,Apache Struts2的REST插件存在遠(yuǎn)程代碼執(zhí)行的高危漏洞,該漏洞由lgtm.com的安全研究員匯報(bào),漏洞編號(hào)為CVE-2017-9805(S2-052)。Struts2 REST插件的XStream組件存在反序列化漏洞,使用XStream組件對(duì)XML格式的數(shù)據(jù)包進(jìn)行反序列化操作時(shí),未對(duì)數(shù)據(jù)內(nèi)容進(jìn)行有效驗(yàn)證,存在安全隱患,可被遠(yuǎn)程攻擊。

Struts2啟用了rest-plugin后并編寫(xiě)并設(shè)置了XStreamHandler后,可以導(dǎo)致遠(yuǎn)程命令執(zhí)行這一嚴(yán)重問(wèn)題。

xxlegend師傅已經(jīng)分析了官方緩解措施無(wú)效《S2-052漏洞分析及官方緩解措施無(wú)效驗(yàn)證》

建議升級(jí)到Struts 2.5.13 or Struts 2.3.34

0x02 測(cè)試環(huán)境

使用struts官方showcase, 2.5.12、2.3.33及以下,下載地址: https://archive.apache.org/dist/struts/ 。

載入工程,apps目錄下rest-showcase為可進(jìn)行。

image.png

0x03 漏洞分析

struts2的ContentTypeInterceptor會(huì)根據(jù)ContentType、url后綴尋找響應(yīng)的處理handler,并調(diào)用handler相關(guān)的反序列化函數(shù)。xml形式的restfull請(qǐng)求轉(zhuǎn)至XStreamHandler進(jìn)行處理。

image.png

struts2-rest-plugin請(qǐng)求處理handler定義:

image.png

XStreamHandler在沒(méi)有進(jìn)行任何驗(yàn)證的情況下直接反序列化xml形式的數(shù)據(jù)。

image.png

這里在調(diào)試的是否發(fā)現(xiàn)一坑,反序列化的棧中若只有一個(gè)對(duì)象,將會(huì)導(dǎo)致直接返回toObject函數(shù)傳入的target對(duì)象。

image.png
image.png

0x04 POC執(zhí)行

目前公布的POC由于使用了jdk.nashorn,javax.imageio,需要用jdk1.8以上。

POC執(zhí)行鏈

image.png

最終在ImageIO$ContainsFilter.filter中觸發(fā)POC構(gòu)造的命令執(zhí)行

image.png
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容