天天看點

Apache Struts2再爆高危漏洞60網站安全檢測最新struts2指令執行漏洞分析

60網站安全檢測最新struts2指令執行漏洞分析

時間:2013-07-18 09:46

在struts2中,DefaultActionMapper類支援以"action:"、"redirect:"、"redirectAction:"作為導航或是重定向字首,但是這些字首後面同時可以跟OGNL表達式,由于struts2沒有對這些字首做過濾,導緻利用OGNL表達式調用java靜态方法執行任意系統指令。

這裡以“redirect:”字首舉例,struts2會将“redirect:”字首後面的内容設定到redirect.location當中,這裡我們一步步跟蹤,首先是這個getMapping函數跟入

truts架構是Apache基金會Jakarta項目組的一個Open Source項目,它采用MVC模式,幫助java開發者利用J2EE開發Web應用。Struts架構廣泛應用于營運商、政府、金融行業的門戶網站建設,作為網站開發的底層模版使用,目前大量開發者利用j2ee開發web應用的時候都會利用這個架構。Apache Struts2 是第二代基于Model-View-Controller (MVC)模型的JAVA企業級WEB應用架構。

  根據分析結果,此問題源于Apache Struts2對參數action的值redirect以及redirectAction沒有正确過濾,導緻ognl代碼執行。Apache Struts2的action:、redirect:和redirectAction:字首參數在實作其功能的過程中使用了Ognl表達式,并将使用者通過URL送出的内容拼接入Ognl表達式中,遠端攻擊者可以通過構造惡意URL來執行任意Java代碼,進而可執行任意指令。redirect:和redirectAction:此兩項字首為Struts預設開啟功能。

此次爆出的高危漏洞,受影響Apache Struts2版本: Struts 2.0.0 - Struts 2.3.15。

Apache Struts2再爆高危漏洞60網站安全檢測最新struts2指令執行漏洞分析

這裡一直到這個handleSpecialParameters(),繼續跟入

Apache Struts2再爆高危漏洞60網站安全檢測最新struts2指令執行漏洞分析
Apache Struts2再爆高危漏洞60網站安全檢測最新struts2指令執行漏洞分析

這裡真正傳入OGNL表達式是在這個parameterAction.execute()中,繼續跟入來到DefaultActionMapper.java的代碼

Apache Struts2再爆高危漏洞60網站安全檢測最新struts2指令執行漏洞分析

這裡key.substring(REDIRECT_PREFIX.length())便是字首後面的内容也就是OGNL表達式,struts2會調用setLocation方法将他設定到redirect.location中。然後這裡調用mapping.setResult(redirect)将redirect對象設定到mapping對象中的result裡,如圖所示

Apache Struts2再爆高危漏洞60網站安全檢測最新struts2指令執行漏洞分析

然而上面的過程隻是傳遞OGNL表達式,真正執行是在後面,這裡是在FilterDispatcher類中的dispatcher.serviceAction()方法,這裡的mapping對象中設定了傳入的OGNL

Apache Struts2再爆高危漏洞60網站安全檢測最新struts2指令執行漏洞分析

這裡跟入方法最終會在TextParseUtil這個類的調用stack.findValue()方法執行OGNL。

Apache Struts2再爆高危漏洞60網站安全檢測最新struts2指令執行漏洞分析

PoC:

http://192.168.237.131:8080/u/hello1.action?redirect:${#a=(new java.lang.ProcessBuilder(new java.lang.String[]{'calc'})).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#matt=#context.get('com.opensymphony.xwork2.dispatcher.HttpServletResponse'),#matt.getWriter()}

漏洞重制:

Apache Struts2再爆高危漏洞60網站安全檢測最新struts2指令執行漏洞分析

轉載  http://blog.sina.com.cn/s/blog_62347f3c0101a0da.html

繼續閱讀