<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Spring 視圖操縱漏洞

    Andrew2020-11-03 14:06:15

    聲明

    由于傳播、利用此文所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負責,雷神眾測以及文章作者不為此承擔任何責任。

    雷神眾測擁有對此文章的修改和解釋權。如欲轉載或傳播此文章,必須保證此文章的完整性,包括版權聲明等全部內容。未經雷神眾測允許,不得任意修改或者增減此文章內容,不得以任何方式將其用于商業目的。

    No.1 概述

    知識點起源于一個小哥的GitHub的demo,已經在 R**eference** 提及了,核心觀點想要表達如果能操縱spring的視圖(view)是一件很危險的事情,緊接著用到了 Thymeleaf 這個模版來舉例子。

    No.2 跟蹤過程

    小哥在代碼中舉了兩個例子,這兩個例子分別是由相同的特征,返回的內容可被攻擊者操縱。

        //GET /path?lang=en HTTP/1.1

    這里先慢慢看,spring的模版處理在這里 *org.springframework.web.servlet.ViewView# render *,根據注釋可以知道這個地方是個接口,要實現需要到相關模版渲染引擎單中去實現。

      /**

    而實際上的處理過程是在 org.springframework.web.servlet.DispatcherServlet.render

      protected void render(ModelAndView mv, HttpServletRequest request, HttpServletResponse response) throws Exception {

    跟一下流程,首先在String viewName = mv.getViewName();的過程中就獲取到我們傳入的POC。

    緊接著進行view = resolveViewName(viewName, mv.getModelInternal(), locale, request);處理,這個 resolveViewName ,當從英文翻譯就知道它大概要解析視圖名字 ,當然本著嚴謹的角度還是需要看代碼的,跟進來之后會來到 ContentNegotiatingViewResolver# resolveViewName *當中,關注一下 *getCandidateViews

      public View resolveViewName(String viewName, Locale locale) throws Exception {

    先跟進來 getCandidateViews ,這玩意會循環當前的 *this.viewResolvers *內容,并且進行處理。

    當解析到 ThymeleafViewResolver *這個方法的時候,會進入 *createView ,在這個方法中根據幾個條件進行判斷,比如redirect:或者forward:等等。因此我們的 ViewName *不滿足,自然是在 *resolveViewName 處理之后返回了*ThymeleafView *

    同理在** UrlBasedViewResolver# createView** 方法當中也是大概根據redirect:或者forward:進行判斷,因此在** resolveViewName** 處理之后返回了*InternalResourceView *

    再看 getBestView,我們當前的 candidateViews *這個 *list *當中有兩個view分別是 *InternalResourceViewThymeleafView ,進入處理之后返回的是** ThymeleafView** 。也就是說經過view = resolveViewName(viewName, mv.getModelInternal(), locale, request);處理之后,返回了我們的視圖方法是 ThymeleafView ,緊接著就是view.render(mv.getModelInternal(), request, response);來到相關的視圖方法中進行解析了。

    當然最后的模版解析過程在 org.thymeleaf.spring5.expression.SPELVariableExpressionEvaluator# evaluate

    exec:347, Runtime (java.lang)

    No.3 區分

    1、加上@ResponseBody注釋

        //GET /fragment?section=main

    首先需要了解 *@ResponseBody *注釋的作用。

    1、該注解用于讀取Request請求的body部分數據,使用系統默認配置的HttpMessageConverter進行解析,然后把相應的數據綁定到要返回的對象上;

    而實際上在** RequestMappingHandlerAdapter# handleInternal *返回view的對象的時候返回空,找不到模版對象,自然也就沒有下面的模版解析 *render **的渲染過程了。

    2、redirect:或者forward:前綴

    @GetMapping("/safe/redirect")

    實際上我們前面也聊過了在** AbstractCachingViewResolver# resolveViewName 當中,當調用view = createView(viewName, locale);會進入每個模版的 createView** 方法,而這個方法根據前綴redirect:或者forward:進行匹配,返回的是 RedirectView 或者** InternalResourceView** ,所以自然不會進行模版解析。

    3、HttpServletResponse標記

    在構造方法中指定HttpServletResponse response的org/springframework/web/servlet/DispatcherServlet# doDispatch **方法之后,實際上就不返回 modelandView ,**也就是說實際上沒有進行模版解析。

          @GetMapping("/doc/{document}")

    No.4 后話

    那么 velocity 和** freemarker **有這個問題嗎,目前我還沒發現,似乎傳入進來不會做表達式解析,可以順著這個思路再看看,總體來說還是挺有趣的。

    而** Thymeleaf *傳入進來之后在 *ThymeleafView# renderFragment **會針對傳入的進行表達式解析。

    當然一般開發的時候,好像是不會這么處理視圖的,因此這么寫的實際面應該不會太大,當然和** spring** 解析過程有關方法調試斷點可以下在** DispatcherServlet# doDispatch **,一般都是可以命中的。

    No.5 Reference

    https://github.com/veracode-research/sprin...

    原創:l1nk3r 雷神眾測
    鏈接:https://mp.weixin.qq.com/s/pJGE7nS2zg-tuz4...

    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    Spring 視圖操縱漏洞
    2020-11-03 14:06:15
    聲明 由于傳播、利用此文所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負責,雷神眾測以及文章作者不為此承擔任何責任。雷神眾測擁有對此文章的修改和解釋權。如欲轉載或傳播此文章,必須保證此文章的完整性,包括版權聲明等全部內容。未經雷神眾測允許,不得任意修改或者增減此文章內容,不得以任何方式將其用于商業目的。因此我們的 ViewName *不滿足,自然是在 *resolveViewName 處理之后返回了*ThymeleafView *。
    作為一只網安新人小白,在RCE方向上的求知經高人指點落腳在了Struts2上。
    可以認為IAM分成兩類,一個是AWS提供的IAM,這是一個完整的身份管理系統,但AWS只提供了系統,基于該系統的配置及信息維護,由客戶完全負責。AWS 提供了虛擬網絡及其之上的VPC,子網,ACL,安全組等,客戶需要準確設計配置自己的網絡,以確保正確的隔離和防護。用戶控制權限的修改通常由特權用戶或者管理員組實現。
    2022年1月,研究人員發現了一個名為ChromeLoader(也稱為ChoziosiLoader和ChromeBack)的新瀏覽器劫持者/廣告軟件活動。盡管使用了簡單的惡意廣告,該惡意軟件還是被廣泛傳播,可能會泄露成千上萬用戶和組織的數據。
    2022 年 1 月,發現了一個名為ChromeLoader(也稱為 Choziosi Loader 和 ChromeBack)的新瀏覽器劫持者/廣告軟件活動。盡管使用了簡單的惡意廣告,該惡意軟件還是變得廣泛傳播,可能會泄露成千上萬用戶和組織的數據。
    spring-boot下的thymeleaf模板注入挺有趣的,本文嘗試對該漏洞一探究竟,如有謬誤,還請同學們指教。
    Spring框架是一個開放源代碼的J2EE應用程序框架,是針對bean的生命周期進行管理的輕量級容器。Spring可以單獨應用于構筑應用程序,也可以和Struts、Webwork、Tapestry等眾多Web框架組合使用,并且可以與 Swing等桌面應用程序AP組合。 Spring框架主要由七部分組成,分別是 Spring Core、 Spring AOP、 Spring ORM、 Spring
    ?2021年11月22日,360漏洞云團隊監測到VMware發布安全公告,修復了一個 Spring Cloud Netflix中的模板解析漏洞漏洞編號:CVE-2021-22053,漏洞威脅等級:高危。
    2021年11月22日,360漏洞云團隊監測到VMware發布安全公告,修復了一個 Spring Cloud Netflix中的模板解析漏洞漏洞編號:CVE-2021-22053,漏洞威脅等級:高危。
    近期Spring遠程命令執行漏洞事件引發多方關注。多云基礎設施中的開源漏洞成為重要攻擊對象有報告數據顯示,針對開源系統及應用,攻擊者已開發出大量的勒索軟件、挖礦病毒等,以破壞受感染的Linux系統,并從中非法獲益。這就要求企業更加全面的管理多云資產,及時根據資產的變動情況進行維護,并將安全防護能力覆蓋至所有的云上資產。
    Andrew
    暫無描述
      亚洲 欧美 自拍 唯美 另类