<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>

    Java 安全之 CC4 鏈

    Andrew2020-11-05 11:09:44

    0x00 前言

    繼續來分析一波CC4的鏈,在寫該文前,看到網上大部分的文章都只給了一個調用鏈和POC。其實看CC4調用鏈的時候,能看出來CC4的調用鏈用到的也是前面的一些類去構造,只不過把CC2 和CC3的鏈給拼接了一下。

    Java安全之Commons Collections2分析

    https://www.cnblogs.com/nice0e3/p/13860621...

    Java安全之Commons Collections3分析

    https://www.cnblogs.com/nice0e3/p/13854098...

    0x01 POC

    package com.test;

    用網上的POC做了一個小小的改動。前面的一大段代碼,在這里就不分析了,因為在CC2和CC3的鏈中,都是一樣的。

    Transformer[] trans = new Transformer[]{

    CC4鏈中在這段代碼中就做了一個簡單的修改。

    第一步是new了一個ConstantTransformer對象存儲在Transformer[]數組中傳入的參數是TrAXFilter.class

    如果調用到ConstantTransformer實例化對象的transform方法會直接返回一個TrAXFilter對象。

    第二步new了一個InstantiateTransformer對象傳入的是Templates.class和構造的惡意templates實例化對象。

    第三步是使用了ChainedTransformer的修飾器將Transformer[]數組傳入參數,當調用transform方法將給Transformer[]數組給遍歷調用transform方法。

    第四步將ChainedTransformer修飾后的對象再使用TransformingComparator修飾器給修飾一遍,這里再使用TransformingComparator來修飾一下,這樣等調用到該實例化對象的compare,方法的時候就會去遍歷調用Transformer[]transform方法。

    Field com = PriorityQueue.class.getDeclaredField("comparator");

    這里反射獲取PriorityQueue的成員變量comparator,然后設置PriorityQueuecomparator值為transCom

    其他的都和前面的一模一樣,這里就不做具體分析了,感興趣的可以去看看前面3條鏈的一個調試和分析過程。下面來做CC鏈的調試。

    0x03 POC調試

    該鏈中利用的也是通過PriorityQueuereadObject作為入口點。在該readObject復寫點打個斷點進行跟蹤。

    readObject會調用到heapify方法。跟進一下heapify方法。

    heapify方法會再去調用siftDown方法。

    在這里如果comparator不為空,還會繼續調用siftDownUsingComparator方法,comparator在這里是被修飾的Transformer[]數組。前面使用反射去進行設置的。繼續跟進siftDownUsingComparator方法。

    到了這一步后,就會調用comparatorcompare方法,在前面使用到了TransformingComparator來修飾,所有調用到TransformingComparatorcompare方法。

    在被TransformingComparator修飾前,還使用了ChainedTransformer修飾器進行修飾,在this.transformerChainedTransformer的實例化對象。所以這里調用的是ChainedTransformertransform。前面也提過該方法會遍歷調用Transformer[]數組的transform方法。

    在第一次遍歷調用transform方法時i,因為前面Transformer[]存儲的第一個是ConstantTransformerConstantTransformertransform會直接返回TrAXFilter對象。

    第二次調用的時候則是傳入TrAXFilter調用InstantiateTransformertransform方法。

    這里的this.iParamTypestemplates,而this.iArgs為構造的惡意TemplatesImpl實例化對象。

    那么這一步就是獲取TrAXFiltertemplates的構造方法。然后調用該構造方法實例化對象,并且傳入TemplatesImpl惡意類。跟進到TrAXFilter構造方法里面,查看一下具體實現。

    在他的構造方法里面還會對傳入的對象調用newTransformer方法。

    此時傳入的是惡意的TemplatesImpl實例化對象。調用的則是TemplatesImplnewTransformer方法。繼續跟進。

    在該方法還會調用到getTransletInstance方法。繼續跟進。

    到了這里會判斷_class為空的話就會去調用defineTransletClasses進行賦值。跟蹤一下defineTransletClasses方法查看是如何賦值的。

    _bytecodes_class進行賦值。_bytecodesRuntime類執行命令代碼的字節碼。在執行完方法后,來到下一步。

    _class進行newInstance,進行實例化對象。執行完這一步后,就會彈出計算器,也就是說執行了我們前面構造好的命令執行代碼。

    調用鏈

    getTransletInstancePriorityQueue.readObject->PriorityQueue.heapify

    0x04 結尾

    在CC1和CC3里面只能在低版本執行,而CC2和CC4可以在1.8的版本下執行,調試CC1,3用的是JDK7u21版本,而2和4使用的是jdk8U181版本,親測可用。

    CC4的鏈在一開始并不想去做一個分析,因為和前面分析的鏈基本一樣。但是還是需要把它給記錄下來,也可以去加深一下影響。

    原創: Keefe SecIN技術平臺
    原文鏈接:https://mp.weixin.qq.com/s/pWjK-nndbIAoDBy...

    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    Java 安全 CC4
    2020-11-05 11:09:44
    第二步new了一個InstantiateTransformer對象傳入的是和構造的惡意templates實例化對象。0x03 POC調試 該中利用的也是通過PriorityQueue的readObject作為入口點。在該readObject復寫點打個斷點進行跟蹤。繼續跟進siftDownUsingComparator方法。在被TransformingComparator修飾前,還使用了ChainedTransformer修飾器進行修飾,在為ChainedTransformer的實例化對象。ConstantTransformer的transform會直接返回TrAXFilter對象。第二次調用的時候則是傳入TrAXFilter調用InstantiateTransformer的transform方法。此時傳入的是惡意的TemplatesImpl實例化對象。_bytecodes對_class進行賦值。_bytecodes為Runtime類執行命令代碼的字節碼。在執行完方法后,來到下一步。
    Java安全反射
    2022-11-22 10:36:15
    前言關于Java安全,反序列化漏洞一直是一個熱門話題,而反序列化漏洞?可以從反射開始說起。通過反射,對象可以通過反射獲取他的類,類可以通過反射拿到所有?附加上動態特性。入門有以下三種方法獲取?個“類”,也就是java.lang.Class對象://1、通過對象調用 getClass() 方法來獲取,通常應用在:比如你傳過來一個 Object類型的對象,而我不知道你具體是什么類,用這種方法
    java反射機制是什么
    Thymeleaf SSTI漏洞分析
    2021-11-11 12:56:34
    要了解SSTI漏洞,首先要對模板引擎有所了解。下面是模板引擎的幾個相關概念。 模板引擎(這里特指用于Web開發的模板引擎)是為了使用戶界面與業務數據(內容)分離而產生的,它可以生成特定格式的文檔,用于網站的模板引擎就會生成一個標準的文檔。 模板引擎的本質是將模板文件和數據通過模板引擎生成最終的HTML代碼。 模板引擎不屬于特定技術領域,它是跨領域跨平臺的概念。 模板引擎的出現是為了解決前后端分離
    本篇文章是WebLogic中間件漏洞復現,記錄了近幾年來爆出的WebLogic中間件漏洞主要分為六個部分:WebLogic簡介、WebLogic安裝、WebLogic漏洞復現、WebLogic SSRF聯動Redis、WebLogic實戰和WebLogic防御措施。
    本篇文章是Fastjson框架漏洞復現,記錄了近幾年來爆出的Fastjson框架漏洞,主要分為四個部分:Fastjson簡介、Fastjson環境搭建、Fastjson漏洞復現、Fastjson工具介紹。 本篇文章由淺入深地介紹了Fastjson的一系列反序列化漏洞,基于RMI或LDAP方式反序列化漏洞利用對Fastjson進行RCE。在學習Fastjson過程中閱讀了幾十篇中英文Fastjson
    接著定義 Person 類實現前面的接口:public?XStream 序列化是調用?unmarshall : xml-> object 解碼兩個重要的實現類:?Mapper 映射器簡單來說就是通過 mapper 獲取對象對應的類、成員、Field 屬性的 Class 對象,賦值給 XML 的標簽字段。Converter 轉換器XStream 為 Java 常見的類型提供了 Converter 轉換器。EventHandler 類EventHandler 類為動態生成事件偵聽器提供支持,這些偵聽器的方法執行一條涉及傳入事件對象和目標對象的簡單語句。EventHandler 類是實現了 InvocationHandler 的一個類,設計本意是為交互工具提供 beans,建立從用戶界面到應用程序邏輯的連接。
    安全從業者更是有著一般的計算機從業人員所沒有的風險,需要步步小心,可能某些行為會游走在法律邊緣,稍有不慎便會越界,這不是在危言聳聽。
    最近在分析JDK7u21的Gadgets,有兩個不解處,閱讀前輩們的文章發現并未提起。1.為什么有的POC入口是LinkedHashSet,有的是HashSet,兩個都可以觸發嗎?
    Andrew
    暫無描述
      亚洲 欧美 自拍 唯美 另类