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

    JNDI注入工具代碼結構分析

    一顆小胡椒2022-04-27 22:02:31

    該文章首發于Sec-IN,文章鏈接:https://www.sec-in.com/article/1632

    工具鏈接:https://github.com/Jeromeyoung/JNDIExploit-1

    如下是一些模塊的作用:

    controllers模塊:負責LDAP請求的處理

    enum模塊:負責存儲各種模板類型名稱,如:反序列化的Gadget、內存馬的類型

    異常模塊:負責處理可能拋出的異常

    反序列化模塊:各種反序列化鏈的處理

    模板模塊:命令執行、回顯、DNS、內存馬模板

    工具類模塊:主要是為了方便而編寫的一些工具類

    協議服務及啟動模塊:負責LDAP、HTTP協議的具體實現

    下面先對啟動及協議服務模塊進行說明

    com.feihong.ldap.Starter類為整個工具的啟動入口,從命令行接收參數傳參到com.feihong.ldap.utils.Config類

    Config類中的@Parameter注解為參數的說明及代表的意思,類似于py中的argparse,命令接收到參數,分別賦值給Config類的幾個私有變量。

    然后在之后的HTTPServer與LDAPServer中得到應用

    關于LDAP服務端的編寫和Demo可以參考以下鏈接:https://www.freebuf.com/vuls/253545.html,

    HTTPServer則是正常的Java Demo編寫即可

    THE SPRING EQUINOX

    注解的應用

    在JNDIEXP中,作者為了可以反射一種類型的類,Controller類,這里的類起到了尋找特定類的作用,而且每個注解類都給定了uri屬性

    在LDAPServer.start()之前,會先通過new Reflections(this.getClass().getPackage().getName())的方法獲取到com.feihong.ldap包下面所有LdapMapping的類,之后將其以鍵值對(TreeMap)放入到Map中,以便于后續調用

    比如com.feihong.ldap.controllers.BasicController類,在Map中的存儲格式就是(basic=>Object BasicController)

    根據發送來的LDAP請求去決定調用哪個類,具體通過com.feihong.ldap.processSearchResult

    根據工具運行的實際效果,如果我們的LDAP請求為ldap://192.168.85.1:1389/Basic/123

    那么DN為Basic/123,首先根據DN中的開頭字符串決定是哪個Controller來處理當前的LDAP的請求

    THE SPRING EQUINOX

    服務端動態調用類

    在LDAP調用LdapController接口實現類之后(以BasicController為例),會先調用process方法,以/為標志分割,獲取到相應的模塊名稱,比如ldap://0.0.0.0:1389/Basic/Command/whoami,那么第一部分Basic用來指定是BasicController,Command指定執行BasicController下的命令執行模塊

    如果是命令執行模塊

    通過com.feihong.ldap.utils.Util的getCmdFromBase方法獲取到執行命令的內容,如果是base編碼的,進行base64解碼后返回內容

    將其賦值給params,之后再調用BasicController的sendResult方法,如果是command模塊,初始化該模塊,通過asm碼的方法,這里為了避免出現類名重復的情況,使用隨機字符命令類名

    之后命令執行模塊調用cache方法

    將其存儲在map中,之后開始進行LDAP的步驟

    首先LDAP設定好

    javaClassName:記錄序列化對象的類名,這樣應用程序就可以確定類信息,而不必首先反序列化

    javaClassNames:關于序列化對象的附加類信息。

    javaCodebase:實例化工廠所需的類定義的位置(HTTP地址)

    javaFactory:用于存儲對象工廠的完全限定類的可選屬性(即類名)

    一張圖說明LDAP請求的過程

    接下來看HTTPServer如何接收HTTP請求并返回

    當HTTPServer接收到請求之后,將Cache類中map存儲的類寫入到響應中,這樣避免了class文件落地的情況。

    版權申明:內容來源網絡,版權歸原創者所有。除非無法確認,都會標明作者及出處,如有侵權,煩請告知,我們會立即刪除并致歉!

    ldapjndi
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    筆者繼續帶大家炒Fastjson的冷飯。關于漏洞分析和利用鏈分析文章網上已有大量,但是關于如何自動化檢測的文章還是比較少見的,尤其是如何不使用Java對Fastjson做檢測。
    最近這log4j熱度很高。好久沒寫文章了,而且目前市面有些文章里面的內容信息已經有些過時缺少最新信息迭代,借此機會我劍指系列基于國內外的關于此漏洞的研究我進行了總結和歸納,并且將我自己目前發現的小眾的技巧方法分享給各位,希望能給各位帶來幫助不會讓各位失望。
    本文作者Betta,首發于火線Zone安全社區。
    Apache Log4j2是一款優秀的Java日志框架,最近爆出了一個jndi注入的漏洞,影響面非常廣,各大廠商都被波及。Log4j2作為日志記錄的第三方庫,被廣泛得到使用,這次主要分享一下,最近的一些調試記錄。
    JNDI漏洞利用探索
    2022-01-23 19:33:23
    最近學習了淺藍師傅尋找的一些JNDI漏洞的利用鏈受益匪淺,自己也嘗試關于JNDI漏洞利用做一些挖掘,目前JN
    Java命名和目錄接口是Java編程語言中接口的名稱( JNDI )。它是一個API(應用程序接口),與服務器一起工作,為開發人員提供了查找和訪問各種命名和目錄服務的通用、統一的接口。 可以使用命名約定從數據庫獲取文件。JNDI為Java?戶提供了使?Java編碼語?在Java中搜索對象的?具。 簡單來說呢,JNDI相當與是Java里面的一個api,它可以通過命名來查找數據和對象。
    0x01 前言學習一下 WebLogic JNDI 注入 RCE0x02 環境搭建和之前 WebLogic 的環境搭建是一致的,本文不再贅述。到依賴里面0x03 漏洞分析與復現漏洞影響版本與前提條件Oracle WebLogic Server 10.3.6.0.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0, 14.1.1.0.0。頁面的用戶權限,或者存在 CVE-2020-14883 未授權訪問漏洞。類,從而造成 RCE。中存在 JNDI Binding 操作的處理容器,如圖具體的處理邏輯在?方法,疑似存在 jndi 注入的漏洞。觀察需要如何構造惡意 payload,c 是由?的邏輯并不復雜,最終會調用 JndiBindingHandle 的構造函數。如圖,我們在 payload 當中的這一段被放進了構造函的?
    收集內存馬打入方式
    2023-05-29 09:42:33
    收集內存馬打入方式
    當殺瘋了的內存馬遇到河馬
    Log4j2 漏洞實戰案例
    2022-02-23 09:18:32
    在現在以及未來的一段時間里,Log4j2 漏洞依然是滲透和排查的重點。在測試靶場里復現多次,在實戰中遇到還是十分興奮,So,總得記錄點什么吧。
    一顆小胡椒
    暫無描述
      亚洲 欧美 自拍 唯美 另类