實驗環境
操作機:Windows XP
目標機:CentOS 6.5
實驗目的
了解S2-045 Struts2遠程命令執行漏洞的危害
掌握檢測修復S2-045 Struts遠程命令執行漏洞技術
實驗內容
Apache Struts 2被曝存在遠程命令執行漏洞,漏洞編號S2-045,CVE編號CVE-2017-5638,在使用基於Jakarta插件的文件上傳功能時,有可能存在遠程命令執行,導致系統被黑客入侵。
惡意用戶在上傳文件時通過修改HTTP請求頭中的Content-Type值來觸發該漏洞,進而執行系統命令。
影響范圍
Struts 2.3.5 --Struts 2.3.31
Struts 2.5 --Struts 2.5.10
不受影響的范圍
Struts 2.3.32 Struts 2.5.10.1
快速檢測方式
使用知道創宇SeeBug照妖鏡可以直接檢測該站點是否存在漏洞。
漏洞危害
在default.properties文件中,struts.multipart.parser的值有兩個選項分別是jakarta和pell。其中的jakarta解析器是Struts 2框架的標准組成部分。默認情況下jakarta是啟用的,所以該漏洞的嚴重性需得到正視。
攻擊者可以通過遠程命令注入執行,另系統執行惡意命令,導致黑客入侵,從而威脅服務器安全,影響極大。
實驗步驟
步驟一:驗證漏洞
打開目標網站:http://172.16.12.2/
發現目標網站跳轉至:http://172.16.12.2/example/HelloWorld.actiond
打開cmd並切換至poc.exe所在目錄,執行下列命令:
poc.exe http://172.16.12.2/example/HelloWorld.action "ifconfig"
成功執行,說明漏洞存在。可以嘗試其他命令:
poc.exe http://172.16.12.2/example/HelloWorld.action "cat /etc/passwd"
步驟二:修復漏洞
修改Struts2的Multipart parser
1,使用ssh登陸到目標主機172.16.12.2,用戶名root,密碼123456
2,將struts2-core-2.3.31.jar(路徑:/var/www/apache-tomcat-7.0.14/webapps/ROOT/WEB-INT/lib/)下載到桌面,修改文件擴展名為struts2-core-2.3.31.zip,解壓並打開文件夾org\apache\struts2。
編輯struts.multipart parser文件,該選項就是Struts2的Multipart parser應用配置,默認值是jakarta,即此次出現命令執行漏洞的上傳框架。
將其修改為pell,相當於將存在漏洞的jakarta框架禁用了。
修改值struts.multipart parser,保存,退出。(在struts.multipart parser=jakarta前加上#,去掉struts.multipart parser=pell前面的#)
3,重新打包.jar文件
在struts2-core-2.3.31文件夾全部選中,壓縮打包為struts2-core-2.3.31.jar
4,替換.jar文件
使用SSH工具中的Xftp,將原有的文件mov至/目錄,將新打包的文件放到該目錄下。
5,重啟tomcat
1 cd /var/www/apache-tomcat-7.0.14/bin 2 ./shutdow.sh 3 ./startup.sh
6,漏洞驗證
poc.exe http://172.16.12.2/example/HelloWorld.action "ifconfig"
此時poc程序已無法成功利用了。
