|
||||
日前,Apache Struts2發布漏洞公告,稱其Struts2 Web應用框架存在一個可以遠程執行任意命令的高危漏洞。利用該漏洞,黑客可輕易攻陷網站服務器,獲取網站注冊用戶的帳號密碼和個人資料,而Struts2框架正廣泛應用在國內大量知名網站上,包括各大門戶、電商、銀行等官網也受其影響。360互聯網安全中心為此發出紅色警報,呼吁相關網站盡快更新Struts2漏洞補丁,或開啟360網站衛士防范攻擊。
據360安全專家石曉虹博士介紹,由於Struts2屬於底層框架,其漏洞影響范圍廣、利用難度低,“菜鳥”也可以使用攻擊工具直接控制網站服務器,盜取用戶數據庫,甚至導致2011年底多家網站“密碼庫”泄露事件再次上演。
目前,網絡上已開始一些自動化、傻瓜化的Stuts2漏洞攻擊軟件,只要在軟件中填寫存在Struts2漏洞的網站地址,即可直接執行服務器命令,讀取網站數據或讓服務器關機等操作。而不幸的是,國內大批網站均存在該漏洞,甚至連Stuts2之前的老漏洞尚未修復,從而將網站注冊用戶信息赤裸裸地暴露在黑客攻擊槍口面前。
石曉虹博士建議,廣大網站應盡快自查漏洞、安裝Apache官網補丁程序,也可使用360網站衛士防范漏洞攻擊。對普通網民來說,近期最好更換一下常用網絡帳號的密碼,重要帳號密碼應單獨設置,以免網站密碼庫泄露危及自身帳號安全。
附:Struts2高危漏洞分析
此漏洞影響Struts2.0-Struts2.3所有版本,可直接導致服務器被黑客遠程控制,從而引起數據泄露。漏洞根源在於,DefaultActionMapper類支持以"action:"、"redirect:"、"redirectAction:"作為導航或是重定向前綴,但是這些前綴後面同時可以跟OGNL表達式,由於struts2沒有對這些前綴做過濾,導致利用OGNL表達式調用java靜態方法執行任意系統命令。
這裡以“redirect:”前綴舉例,struts2會將“redirect:”前綴後面的內容設置到redirect.location當中,如圖所示:
key.substring(REDIRECT_PREFIX.length())便是前綴後面的內容也就是OGNL表達式,struts2會調用setLocation方法將他設置到redirect.location中。然後這裡調用mapping.setResult(redirect)將redirect對象設置到mapping對象中的result裡,如圖所示:
然而上面的過程只是傳遞OGNL表達式,真正執行是在後面,這裡是在FilterDispatcher類中的dispatcher.serviceAction()方法,
這裡跟入方法最終會在TextParseUtil這個類的調用stack.findValue()方法執行OGNL。