<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利用技巧:通過反射實現webshell編譯文件的自刪除

    VSole2022-02-16 10:11:47

    0x00 前言

    我們知道,當我們訪問jsp文件時,Java環境會先將jsp文件轉換成.class字節碼文件,再由Java虛擬機進行加載,這導致了Java服務器上會生成對應名稱的.class字節碼文件。對于webshell,這會留下痕跡。

    為了實現自刪除.class字節碼文件,我們可以通過反射獲得.class字節碼文件的路徑,再進行刪除。本文將以Zimbra環境為例,結合AntSword-JSP-Template,分析利用思路。

    0x01 簡介

    本文將要介紹以下內容:

    ?通過反射實現webshell編譯文件的自刪除

    ?通過反射實現AntSword-JSP-Template

    0x02 通過反射實現webshell編譯文件的自刪除

    根據上篇文章《Java利用技巧——通過反射修改屬性》的內容,我們按照映射request->_scope->_servlet->rctxt->jsps,通過多次反射最終能夠獲得JspServletWrapper實例

    查看JspServletWrapper類中的成員,jsps->value->ctxt->servletJavaFileName保存.java編譯文件的路徑,jsps->value->ctxt->classFileName保存.class編譯文件的路徑,示例如下圖

    為了只篩選出當前jsp,可以通過request類的getServletPath()方法獲得當前Servlet,如下圖

    從ctxt對象獲取servletJavaFileName可以調用JspCompilationContext類的getServletJavaFileName()方法,如下圖

    從ctxt對象獲取classFileName可以調用JspCompilationContext類的getClassFileName()方法,如下圖

    綜上,由此我們可以得出通過反射獲取編譯文件路徑的實現代碼如下:

    刪除編譯文件的代碼如下:

    0x03 通過反射實現AntSword-JSP-Template

    rebeyond在《利用動態二進制加密實現新型一句話木馬之Java篇》介紹了Java一句話木馬的實現方法,AntSword-JSP-Template也采用了相同的方式

    我在測試AntSword-JSP-Template的過程中,發現編譯文件會多出一個,例如test.jsp,訪問后,生成的編譯文件為test_jsp.class和test_jsp.java,如果使用了AntSword-JSP-Template,會額外生成編譯文件test_jsp$U.class

    rebeyond在《利用動態二進制加密實現新型一句話木馬之Java篇》提到:

    “正常情況下,Java并沒有提供直接解析class字節數組的接口。不過classloader內部實現了一個protected的defineClass方法,可以將byte[]直接轉換為Class

    因為該方法是protected的,我們沒辦法在外部直接調用,當然我們可以通過反射來修改保護屬性,不過我們選擇一個更方便的方法,直接自定義一個類繼承classloader,然后在子類中調用父類的defineClass方法。”

    這里我打算通過反射修改保護屬性,調用ClassLoader類的defineClass()方法

    在ClassLoader類中,defineClass()方法有多個重載,如下圖

    這里選擇defineClass(byte[] b, int off, int len)

    rebeyond在《利用動態二進制加密實現新型一句話木馬之Java篇》還提到:

    “如果想要順利地在equals中調用Request、Response、Seesion這幾個對象,還需要考慮一個問題,那就是ClassLoader的問題。JVM是通過ClassLoader+類路徑來標識一個類的唯一性的。我們通過調用自定義ClassLoader來defineClass出來的類與Request、Response、Seesion這些類的ClassLoader不是同一個,所以在equals中訪問這些類會出現java.lang.ClassNotFoundException異常”

    解決方法同樣是復寫ClassLoader的如下構造函數,傳遞一個指定的ClassLoader實例進去:

    最終,得到通過反射實現AntSword-JSP-Template的核心代碼:

    訪問通過反射實現AntSword-JSP-Template的test.jsp后,額外生成的編譯文件為test_jsp$1.class

    0x04 小結

    本文介紹了通過反射實現webshell編譯文件自刪除和AntSword-JSP-Template,記錄關于反射的學習心得。

    webshell
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    webshell新工具 -- PyShell
    2023-07-24 10:21:11
    0x01 工具介紹PyShell是多平臺Python WebShell。該工具可以幫助您在web服務器上獲得shell式的界面,以便遠程訪問。與其他webshell不同的是,該工具的主要目標是在服務器端使用盡可能少的代碼,而不考慮使用的語言或服務器的操作系統。您可以在 Windows 和 Linux 中使用不同類型的 shell,具有命令歷史記錄、上傳和下載文件,甚至可以像在目錄中一樣移動標準外殼。
    場景:己經拿到了一個webshell,但是無法正常執行命令,因為被360安全大腦的主動防御攔截了。由于目標是 java 環境,這里可以嘗試利用 jsp 執行系統命令上線,具體做法是先寫一個 jsp的腳本然后放到 weblogic 的 webshell 路徑下,如果找不到 webshell 可以使用文件查找命令dir c:\ /s /b |find "fuck4.jsp"
    Webshell-Sniper是一款使用Python編寫的基于終端的Webshell管理器,和以往我們分享的Webshell管理工具有所不同,所有操作都在終端中完成。使用它可對您的網站進行遠程管理。雖然它沒有圖形化的GUI也沒有WEB界面,但這樣的操作也是另有一翻感覺。功能基于終端的shell交互反向連接shell數據庫管理Webshell-Sniper安裝與使用環境服務端 :. 需要注意的是,Webshell-Sniper服務端只支持Unix系統環境。
    0x01 工具介紹該工具沒什么技術含量,學了一點javafx,使用jdk8開發出了幾個簡單功能用來管理webshell。工具整合并改寫了各類webshell,支持各個語言的cmd、蟻劍、冰蝎、哥斯拉,又添加了實際中應用到的一些免殺技巧,以方便實際需要。0x02 安裝與使用直接下載releases版即可。
    Webshell 檢測綜述
    2022-12-15 09:45:32
    通過Webshell,攻擊者可以在目標服務器上執行一些命令從而完成信息嗅探、數據竊取或篡改等非法操作,對Web服務器造成巨大危害。Webshell惡意軟件是一種長期存在的普遍威脅,能夠繞過很多安全工具的檢測。許多研究人員在Webshell檢測領域進行了深入研究,并提出了一些卓有成效的方法。本文以PHP Webshell為例。
    動態函數PHP中支持一個功能叫 variable function ,變量函數的意思。//最終是system;當一個變量后邊帶括號,那他就被視作一個函數。編譯器會解析出變量的值,然后會去找當前是否存在名為“system()”的函數并執行它。這里就不給實例了,很多免殺案例中都用到了這個特性。也是被瘋狂查殺的特征。回調函數回調函數,簡單來說就是一個函數不是由我直接調用,而是通過另一個函數去調用它。
    前言提到webshell免殺,方法無外乎對靜態特征的變形,編碼,或利用語言特性繞過。計算機中有很多符號,它們在編程語言中占據一席之地,這些符號作為運算符號,標識符號或起到特殊含義。本文以PHP為例介紹一些利用符號免殺方法。免殺WAF檢測通過對安全狗、護衛神、D盾等常見軟WAF的測試,發現WAF查殺主要依賴兩種檢測方法1.靜態檢測:通過匹配特征來查找webshell。如危險函數,文件特征碼等。例如 ${$my_var[8]}與${$my_var}[8]的區分${xxx} 括起來的要當成變量處理。
    通過URL信息獲取如果能獲取到惡意請求的URL信息,就可以根據URL信息定位到Webshell文件。URL信息可以通過態勢感知、WAF等監測預警系統獲取,也可以通過對系統異常時間段的Web日志進行審計獲取。通過掃描工具掃描獲取通過Webshell查殺工具進行掃描,可以定位到部分免殺能力不強的Webshell文件。默認情況下,Windows將僅在索引位置中查找最近修改的文件。
    webshell免殺之傳參方式及特征繞過傳參方式 在這里解釋一下為什么,需要講述傳參方式,由于在很多情況下,以請求頭作為參數傳遞并非waf和人工排查的重中之重且非常誤導和隱藏
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类