漏洞復現環境搭建請參考
http://t.csdnimg.cn/rZ34p
kali切換jdk版本請參考
Kali安裝JAVA8和切換JDK版本的詳細過程_kali安裝jdk8-CSDN博客
漏洞原理
Strust2會將http的每個參數名解析成為OGNL語句執行,OGNL表達式通過#來訪問Struts的對象,并且通過過濾#來防止安全問題,在漏洞S2-003中攻擊者可以通過unicode編碼或者8進制編碼繞過#的檢測,漏洞S2-003的修復方法是禁止靜態方法調用和類方法執行,而漏洞S2-005可以通過OGNL表達式將漏洞S2-003修復方法的安全模式關閉,從而繞過漏洞S2-003的修復方法
漏洞版本
Struts 2.0.0 - 2.1.8.1
漏洞驗證
(1)訪問8080端口,出現明顯struts框架特征
(2)liqun進行漏掃,漏洞存在,進行s2-005復現操作
(3)或者訪問/struts/webconsole.html頁面是否存在
/struts/webconsole.html
(4)再者通過添加參數actionerrors進行判斷
利用方法:如原始 URL 為 https://threathunter.org/則檢測所用的 URL 為
https://threathunter.org/?actionErrors=1111如果返回的頁面出現異常,則可以認定為目標是基于 Struts2 構建的。異常包括但不限于以下幾種現象:
1、 頁面直接出現 404 或者 500 等錯誤。
2、 頁面上輸出了與業務有關錯誤消息,或者 1111 被回顯到了頁面上。
3、 頁面的內容結構發生了明顯的改變。
4、 頁面發生了重定向。
漏洞利用
(1)Liqun工具實現遠程命令執行