中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行Spring Data Commons RCE分析

發布時間:2021-12-28 17:06:34 來源:億速云 閱讀:125 作者:柒染 欄目:安全技術

如何進行Spring Data Commons RCE分析,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

Spring Data是一個用于簡化數據庫訪問,并支持云服務的開源框架,其主要目標是使數據庫的訪問變得方便快捷。Spring Data Commons是Spring Data下所有子項目共享的基礎框架。Spring的核心是控制反轉(IoC)和面向切面(AOP),相比Struts 2框架絕大部分的安全漏洞都都是由于OGNL產生,而自從Spring引入SpEL,也引起很多安全漏洞,今天利用Spring Data Commons (CVE-2018-1273)作為案例和大家聊一聊。

01 漏洞描述

Spring Data Commons(1.13至1.13.10之前的版本,2.0至2.0.5的版本以及較舊的不受支持的版本)包含由于特殊元素的不正確中和而導致的屬性綁定器漏洞。未經身份驗證的遠程惡意用戶(或攻擊者)可以針對Spring Data REST支持的HTTP資源提供特制的請求參數,或者使用Spring Data的基于投影的請求有效負載綁定帽可能導致遠程執行代碼攻擊。

02 源碼分析

Spring MVC框架會處理來自前端的頁面的請求,并根據請求進行數據的封裝,處理前端頁面的請求暫不贅述,我們現在主要探討對數據的封裝處理,因為Spring Data Commons框架在做數據封裝處理的時候產生了漏洞,進入org.springframework.web.method.support.InvocableHandlerMethod類,進入getMethodArgumentValues方法,如下圖所示:

如何進行Spring Data Commons RCE分析

如上圖所示紅框所示位置,resolveArgument對請求參數進行了進一步處理,進入org.springframework.web.method.support.HandlerMethodArgumentResolverComposite類的resolveArgument方法,如下圖所示:

如何進行Spring Data Commons RCE分析

由于resolveArgument方法,并沒有明顯的邏輯,定位到resolve.resolveArgument行進入到org.springframework.web.method.annotation.ModelAttributeMethodProcessor類的resolveArgument方法,如下圖所示:

如何進行Spring Data Commons RCE分析

進入到resolveArgument方法的第132行代碼,如下圖所示,該行代碼創建attribute的實例對象,并實現具體的數據綁定功能。

如何進行Spring Data Commons RCE分析

進入org.springframework.data.web.ProxyingHandlerMethodArgumentResolver類的createAttribute方法,createAttribute方法中調用MapDataBinder類進行傳入數據的數據綁定。

如何進行Spring Data Commons RCE分析

定位到binder.bind語句進入bind方法,看實現的具體邏輯,進入到org.springframework.web.bind.WebDataBinder類的bind方法,如下圖所示:

如何進行Spring Data Commons RCE分析

因為WebDataBinder類繼承了DataBinder類,所以super.doBind語句是將參數傳遞給WebDataBinder類的doBinder方法,進入DataBinder類的doBinder方法,如下圖所示,在該方法中前兩句是校驗語句,applyPropertyValues方法是具體的處理邏輯。

如何進行Spring Data Commons RCE分析

進入org.springframework.validation.DataBinder類的applyPropertyValues方法,如下圖所示:

如何進行Spring Data Commons RCE分析

如上圖所示箭頭位置,繼續進入org.springframework.beans.AbstractPropertyAccessor類的setPropertyValues方法,如下圖所示:

如何進行Spring Data Commons RCE分析

定位到該方法的第97行,如下圖所示:

如何進行Spring Data Commons RCE分析

進入setPropertyValue方法,如下圖所示:

如何進行Spring Data Commons RCE分析

繼續跟蹤進入org.springframework.data.web.MapDataBinder類的setPropertyValue方法,如下圖所示:

如何進行Spring Data Commons RCE分析

在serPropertyValue方法中對前端出入的參數進行處理,定位到setPropertyValue方法中的第182行代碼,如下圖所示:

如何進行Spring Data Commons RCE分析

第182行代碼中使用Spring 的SpEL表達式對外部的參數進行處理,但是并沒有對參數進行進行有效的校驗,所示第182行代碼是漏洞注入點。

03 漏洞復現

抓取前端傳入后臺的數據包,如下圖所示:

如何進行Spring Data Commons RCE分析

構造payload,如下圖所示:

如何進行Spring Data Commons RCE分析

響應結果,如下圖所示:

如何進行Spring Data Commons RCE分析

04 總結與修復

本次漏洞問題出現在 Spring Data Commons中。該漏洞是由前端參數傳入后臺,后臺框架使用SpEL表達式處理未校驗的惡意字符串所引起的,因此建議采取IP白名單對IP進行限制,或者升級框架到最新版本。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

rce
AI

博湖县| 扎赉特旗| 永和县| 浮山县| 南澳县| 新乡市| 壶关县| 宝兴县| 邵阳市| 晋中市| 保康县| 温宿县| 乌兰察布市| 麦盖提县| 莆田市| 石嘴山市| 阳原县| 左云县| 胶州市| 兰考县| 甘孜县| 绥德县| 昂仁县| 巴塘县| 北碚区| 佛冈县| 灌南县| 门头沟区| 芷江| 平乐县| 金寨县| 行唐县| 会理县| 乐亭县| 仙桃市| 阿尔山市| 罗平县| 固阳县| 习水县| 手机| 连城县|