Apache Struts2是應用於創建網站,平台,Java環境的一個開放式源代碼MVC框架
系統。在Struts2 2.3.5-2.3.31 Struts 2.5-Struts 2.5.10版本上發現漏洞,這個漏
洞是利用Struts2的上傳功能代碼裡的非正常處理函數代碼,沒有正確的去處理訪問客
戶輸入的錯誤內容。導致駭客可以通過輸入那裡發送惡意的POST數據包,利用這個漏
洞在windows 2003 2008 2012主機跟Linux centos系統主機上執行系統權限命令。
駭客在上傳文件的同時,通過POST提交HTTP請求頭中的Content-Type值來利用這個漏洞,進而執行主機的管理員權限命令。eSafe白帽資安網公司是一家專注於:主機安全、網站安全、網站安全檢測、網站漏洞修復,滲透測試,安全服務於一體的網絡安全服務提供商。
1.基於Jakarta插件的文件上傳功能
2.入侵攻擊者偽造post 請求裡的Content-Type的值
出問題的網站代碼如下:
if (LocalizedTextUtil.findText(this.getClass(), errorKey, defaultLocale, null, new Object[0]) == null) {
return LocalizedTextUtil.findText(this.getClass(), "struts.messages.error.uploading", defaultLocale, null, new Object[] { e.getMessage() });
} else {
return LocalizedTextUtil.findText(this.getClass(), errorKey, defaultLocale, null, args);
}
在以下3個代碼文件裡都含有漏洞代碼:
1.coresrcmainjavaorgapachestruts2dispatchermultipartMultiPartRequestWrapper.java
2.coresrcmainjavaorgapachestruts2dispatchermultipartJakartaMultiPartRequest.java
3.coresrcmainjavaorgapachestruts2dispatchermultipartJakartaStreamMultiPartRequest.java
漏洞利用代碼如下:(python 利用方法)
Struts2 漏洞修復:
安全檢查下網站web根目錄下的 /WEB-INF/lib/,以及子目錄下的struts-
core.x.x.jar ,如果存在這個文件,說明是有漏洞,這個版本在Struts2.3.5 到
Struts2.3.31 以及 Struts2.5跟Struts2.5.10之間。
更新到Strusts2.3.32或者Strusts2.5.10.1最新版本,或使用第三方網站安全公司進
行安全加固以及安全防禦。
臨時的安全解決方案:刪除/WEB-INF/lib/下的commons-fileupload-x.x.x.jar文件
(如果刪除會造成網站的上傳功能受到影響)eSafe白帽資安網公司是一家專注於:主機安
全、網站安全、網站安全檢測、網站漏洞修復,滲透測試,安全服務於一體的網絡安全服務
提供商。
全、網站安全、網站安全檢測、網站漏洞修復,滲透測試,安全服務於一體的網絡安全服務
提供商。
eSafe白帽資安網工程師認為這次的漏洞很嚴重 可以跟2013年的那個st2-016漏洞可以相提並
論了,網站運營者要加強安全審計,寧可累一點,也不要讓這種漏洞攻擊造成的損失
發生在自己的網站上。