成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

struts2最近量產漏洞分析

安全 漏洞
在struts中,框架接收到的用戶輸入,除了參數、值以外,還有其他地方,比如文件名。這個漏洞,是struts2對url中的文件名做了解析,導致的ognl代碼執行。

可能是由于溝通問題,導致struts2官方對我提交的S2-012漏洞名稱理解錯誤,漏洞描述為struts 2的某個示例應用出現漏洞,但是struts2是按照框架出現漏洞修補的。而這個s2-012竟然引發了一連串血案。

其實發這篇文章,我非常惱火,任誰手里有一個0day,捂了半天,結果又被別人公開,都會非常惱火。去年我在XCON發布的S2-012漏洞,其實struts 2還存在相似的漏洞。在struts中,框架接收到的用戶輸入,除了參數、值以外,還有其他地方,比如文件名。這個漏洞,是struts2對url中的文件名做了解析,導致的ognl代碼執行。

這中間存在一些技術細節,下面展開分析。

enableOGNLEvalExpression的騙局

從漏洞公告上看到這個詞,很容易認為是struts 2把ognl表達式干掉了,可以選擇終結一切。事實上禁止的是OGNL的其中一種調用方式,而這種調用方式,也只是在S2-013這里調用。

struts2有另外一段威武的代碼,真正在防守這個漏洞。

org.apache.struts2.views.util.DefaultUrlHelper這個類:

原本是這樣寫的,代碼走到translateAndEncode就會調用ognl執行,它的邏輯一共包括ognl的translate,以及urlencode這兩個功能。

struts 2最近量產漏洞分析

補丁之后,這里被改為僅僅urlencode,不再做ognl執行。這個和enableOGNLEvalExpression沒有任何關系。

struts 2最近量產漏洞分析

我沒有細看內容,只看方法名的變動,就感覺可以洗洗睡了,不必往下跟進了。

allowStaticMethodAccess騙局

一直以來allowStaticMethodAccess是struts2的poc標配,從第一個poc出現開始,就一直存在。

在2013年5月27日,也就是前幾天,大家可以自行查看SVNlog,struts2做了一件很猥瑣的事情,把以下代碼刪除了:

struts 2最近量產漏洞分析

這個動作直接導致一個結果,以后在OGNL的POC中執行

#_memberAccess["allowStaticMethodAccess"]=true

一定會報錯的,因為沒有set方法了。

很有終結一切的意思,就像以后有新的OGNL漏洞,就不能寫這一句了。但是我可以繞過這個東西,下面結合s2-015漏洞做個示例。

struts2框架s2-015吐槽

這個漏洞,被人公布出來,實際上,發布者一共發布了幾個漏洞,包含S2-015、以及S2-012。具體地址在

https://communities.coverity.com/blogs/security/2013/05/29/struts2-remote-code-execution-via-ognl-injection

非常詳細,某同事認為他比我分析的好,所以我就不寫翻譯了,大家自己看。

后來仔細想了想,猜測老外可能遇到s2-012,導致了該文章的發布,當然,這只是我的個人YY。

發布者手握2個0day,很不幸,我也有這兩個0day,去年xcon發布了一個,之后提交了官方,但是他不知道,因為官方到今年才公開修補。

前幾天官方突然公開修補了我發布的一個0day,這個老外看到s2-012后,可能也非常惱火,因為這個漏洞和他手頭分析的0day剛好相同,所以一怒之下和其他0day一起發出來了,共同組成一篇文章。可以看到,發布者直接從blog發布,之后官方才收到消息開始修補。

這個漏洞的觸發代碼展現形式和s2-012非常像,所以理解了s2-012后,可以聯想到這個0day,很容易通過測試出來,我當時也是看到類似的使用,隨手測試就發現了。相信有很多漏洞,都是類似的情況下發現的。甚至可能不止我們手里有,其實你也非常惱火。

S2-015的poc在老外的文章中如下:

http://127.0.0.1:8080/struts2-blank/example/$%7B%23context

['xwork.MethodAccessor.denyMethodExecution']

=%21%28%23_memberAccess['allowStaticMethodAccess']=t

rue%29,%28@java.lang.Runtime@getRuntime%28%29%29.exec

%28'touch%20aaa'%29.waitFor%28%29%7D.action/

由于POC中存在#_memberAccess["allowStaticMethodAccess"]=true,所以發布者提到升級到s2-014可以緩解。

其實發布者誤解了,但是struts2開發者沒有誤解,所以趕緊推出了S2-015。

但是如果不講出來,你還是會發現那個POC在S2-014之后其實不能打,就如老外文章中所說,被緩解了。那要怎么打呢?

OGNL的POC有個小技巧

這個東西的含義,是允許靜態方法執行,那么官方禁止修改這個設置,意思就是永遠禁止靜態方法執行。

因為POC中的“@java.lang.Runtime@getRuntime”其實就是在執行靜態方法,所以才一定要開啟靜態,但是這只是java代碼的一種寫法罷了。

我們可以用另一個寫法,繞過這個限制。

(new java.lang.ProcessBuilder('calc')).start()

這段代碼中,沒有調用任何靜態方法,僅僅是new一個對象,之后執行其中一個動態方法,所以不必allowStaticMethodAccess一樣能達到執行系統命令的效果。

這個小技巧,可以干很多事情。

1、可以繞過某些WAF,我不告訴你是哪些,免得你拿去騙獎品。

2、可以為以后新的OGNL代碼執行鋪路,避免0day來了,我們居然因為這個不會寫POC。

S2-015的修補

簡單說一句,這里沒有什么研究價值,這次修補,官方采用了限制action的名稱,只能

[a-z]*[A-Z]*[0-9]*[.\-_!/]*

總結struts2出現過的ognl表達式輸入點

1、request參數名

2、request參數值

3、request文件名

4、request的cookie名

5、respose的body

慘不忍睹,好像HTTP頭基本都出了問題,也沒剩下多少了。一個流行框架,能夠在這么多地方出現遠程代碼執行,真是難為struts開發者了。

同時也問一下使用struts的同學們,你們這些年,是怎么過來的?

在阿里巴巴,我時常分析struts2漏洞然后發報告,有時候會是0day,那就要出個補丁給各個項目用,最后等到官方發布補丁時,我們再評估是否需要重新更新回去。導致我們時常勸說開發人員盡量不要使用這個框架,尤其是項目初期評審時,發現struts2,深惡痛絕,說很多很多話用于嚇唬開發人員。

在這種趨勢下,我對這個東西已經再無任何僥幸心理,決定推出一個虛擬補丁。至于阿里的真實方案,我肯定不能告訴大家,但是可以講講思路。

統一防御方案

首先升級到最新版本。

在ognl這個語言的入口,加入攔截代碼,一旦發現危險調用,直接干掉。

代碼原理是,在OGNL執行之前,對語句做判斷,看到有黑名單的代碼,就干掉。理論上,開發人員理論上不會自己寫OGNL用于操作文件,執行命令等,他們最多從session中取一個值,或者在頁面上取一個值。

覆蓋掉Ognl.Ognl類,添加如下代碼:

struts 2最近量產漏洞分析

加入QQ郵箱呢?具體原因不說,只說結果,結果是,我的郵箱可以收到0DAY,你如果真的看懂了,自己猜猜原因?

責任編輯:藍雨淚 來源: inbreak
相關推薦

2013-07-18 15:09:27

2017-07-11 09:42:22

漏洞

2012-12-18 16:18:06

2013-07-22 10:45:56

2016-06-08 10:09:24

2013-05-22 10:28:19

2013-07-24 10:35:02

2009-07-29 09:54:34

struts2和str

2013-07-18 15:57:42

2016-04-29 10:58:13

2017-07-14 13:51:19

2009-06-25 15:11:28

Struts2教程Struts2程序

2012-08-30 09:48:02

Struts2Java

2009-06-08 16:44:00

struts2 ogn

2012-12-18 16:38:26

2013-07-18 10:06:54

2009-02-04 10:51:07

2009-06-05 10:43:29

struts2 checheckbox實例

2009-07-03 09:35:57

Struts2 JSP

2009-06-04 08:34:24

Struts2配置struts.xml
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 人人看人人搞 | 国产精品自产拍在线观看蜜 | 中文字幕在线观看视频网站 | 成人在线视频免费看 | 久久精品久久久 | 亚洲精品一区二三区不卡 | www九色| 色屁屁在线观看 | 成人精品一区二区三区 | 亚洲首页 | 亚洲97| 成人一区二区三区 | 亚洲一区二区在线视频 | 国产av毛片| 成人综合视频在线观看 | 中文字幕欧美日韩一区 | 精品一区二区三区在线观看 | 成人影院网站ww555久久精品 | 亚洲成人av | 日本一二三区在线观看 | www.久久 | 日本特黄a级高清免费大片 国产精品久久性 | av一级久久 | www.国产| 亚洲一区二区三区免费在线 | jizz18国产 | 久久69精品久久久久久久电影好 | 四虎av电影 | 91精品一区二区三区久久久久久 | 日韩中文一区二区三区 | 在线国产一区 | wwww.xxxx免费 | 一区二区中文 | 久久亚洲欧美日韩精品专区 | av中文字幕在线观看 | 免费a国产 | 男女羞羞的网站 | 国产精品免费福利 | 国产亚洲精品精品国产亚洲综合 | 欧美一区二区三区在线观看视频 | 久久精品二区亚洲w码 |