灰鴿子遠程控制軟件

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

查看: 12595|回復: 1
打印 上一主題 下一主題

Struts2漏洞淺析之Ongl代碼執行分析灰鴿子論壇www.dumiaotech.com

[復制鏈接]
跳轉到指定樓層
樓主
發表于 2012-12-19 22:07:12 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式




2010年7月exploitdb爆出的《Struts2/XWork < 2.2.0 Remote Command Execution Vulnerability》,可以稱之為神一樣的漏洞,攻擊者只要構造出合適的語句,就有很大的幾率獲得系統權限(System或者root,因為tomcat默認都會以這樣的權限運行),而且時至今日存在這個漏洞的網站仍然大有存在。本文將從源碼層面簡單的分析這個漏洞形成的根本原因。
0x02 Ognl表達式實現代碼執行
Ognl表達式是一種基于Java的功能強大的表達式。通過使用它,我們能夠通過表達式存取Java對象樹中的任意屬性和調用Java對象樹的方法,可以輕松解決在數據流轉的過程中所碰到的各種問題。但是在實際使用中,編程人員更多使用的是Ognl的數據流轉傳輸的功能,卻忘記了Ognl表達式可以執行Java代碼的功能。下面我們來通過一個常用的方法來看下它的實現過程。
public class Login extends ActionSupport{
     public String execute() {
         ActionContext AC = ActionContext.getContext();
         Map Parameters = (Map)AC.getParameters();
         String[] username = (String[])Parameters.get("username");
         System.out.println(AC.getValueStack().findValue(username[0]));
         return SUCCESS;
     }
}
上面這段代碼是我自己搭建的一個Struts2實現的簡單java web功能的action部分的代碼,具體功能就是,獲得用戶提交的username參數,然后從值棧(Value Stack)中找到符合參數值的內容,并打印。紅色字體部分的findValue方法是關鍵點,下面我將在這句代碼中加上斷點,來跟蹤分析它的行為。
跟蹤進入OgnlValueStack文件中的findValue(String expr)方法,關鍵代碼如下:
Object value = ognlUtil.getValue(expr, context, root);
繼續深入追蹤進入OgnlUtil文件,看到如下代碼:
public Object getValue(String name, Map context, Object root) throws OgnlException {
     return Ognl.getValue(compile(name), context, root);
}
紅色部分為Ognl類自帶的方法,其作用是根據表達式(參數1),在上下文(參數2)和指定類中(參數3)查找響應的內容,并返回,若沒有則返回空。在查詢的過程中,表達式會被執行,這使得攻擊者有可乘之機,可以利用這個方法來執行一些惡意的行為。
0x03利用實現
還是使用之前部分構造的代碼,搭建一個可以用于web交互的測試平臺。通過傳遞名為username的參數來看下這個函數的威力。提交如下url:

http://target:8080/Login.action?username='#_memberAccess["allowStaticMethodAccess"]=true,@java.lang.Runtime@getRuntime().exec('calc'))'
在目標服務器中,彈出了計算器
我們所傳遞的內容被作為參數傳遞給了AC.getValueStack().findValue,之后它的內容便被執行了。解釋下傳入的語句作用,首先是給#_memberAccess["allowStaticMethodAccess"]變量賦予true值,這個變量是Xwork用于管理Ognl權限類中的成員,它控制Ognl是否可以執行Java的靜態方法。第二句調用Java方法執行系統調用,“@”是Ognl調用Java靜態方法的標識。
0x04總結
Ognl被用戶Xwork和Struts框架的核心代碼中,在這些框架中很多地方都存在findValue的調用,例如:Struts的校驗框架,如果類型不匹配則默認也會調用findValue函數來檢索用戶輸入的內容。2010年爆出的Struts2遠程代碼執行和其之后出現的代碼執行問題,都和這個函數有關系。Struts2漏洞淺析之Ongl代碼執行分析灰鴿子論壇www.dumiaotech.com
評帖賺銀幣(0) 收起
分享到:  QQ好友和群QQ好友和群
收藏收藏
回復

使用道具 舉報

沙發
發表于 2022-7-10 22:41:43 | 只看該作者

強烈感謝樓主
評帖賺銀幣(0) 收起
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

Archiver|手機版|小黑屋|灰鴿子遠程控制軟件|灰鴿子遠程控制軟件 ( 魯ICP備14000061號-4 )

GMT+8, 2025-3-12 23:54 , Processed in 0.084558 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产乱子伦精品无码专区| 亚洲AV无码成人网站在线观看| 无码视频在线播放一二三区| 亚洲精品无码永久中文字幕| 亚洲av无码一区二区三区天堂| 国产精品无码素人福利不卡| 无码A级毛片免费视频内谢| 无码综合天天久久综合网| 无码国产精品一区二区免费3p| 日韩激情无码免费毛片| 亚洲精品无码久久毛片波多野吉衣| 无码专区一va亚洲v专区在线| 精品深夜AV无码一区二区老年| 中文字幕丰满乱子伦无码专区| 免费无码不卡视频在线观看| 久久精品无码一区二区无码| 久久无码av三级| av无码人妻一区二区三区牛牛 | 国产av无码专区亚洲av果冻传媒| 久久亚洲AV成人无码软件| 亚洲精品无码久久千人斩| 无码日韩精品一区二区人妻| 亚洲爆乳精品无码一区二区| 久久精品无码一区二区WWW | 无码人妻精品一区二区三区99仓本| 无码免费又爽又高潮喷水的视频| 伊人久久精品无码麻豆一区| 精品亚洲成在人线AV无码| 色窝窝无码一区二区三区| 亚洲精品色午夜无码专区日韩| 免费无码H肉动漫在线观看麻豆| 深夜a级毛片免费无码| 无码人妻丰满熟妇啪啪| 人妻系列无码专区久久五月天| 麻豆人妻少妇精品无码专区| 国产精品成人无码久久久| 亚洲美日韩Av中文字幕无码久久久妻妇 | 人妻无码久久精品人妻| 老司机无码精品A| 国产精品99无码一区二区 | 国产精品无码一区二区在线观一|