Java-webshell 排查

參考:

https://javasec.org/javaweb/MemoryShell/

https://goodapple.top/archives/1355

簡介

本次分享爲 java webshell 排查初級。拋磚引玉

java 獲取 web 權限的 shell,包括:

落地webshell:

  1. 普通一句話木馬
  2. 冰蟹、蟻劍、哥斯拉等 webshell 管理工具自帶 webshell

無文件 webshell:

  1. 動態註冊 servlet/filter/listener(使用 servlet-api 的具體實現)
  2. 動態註冊 interceptor/controller(使用框架如 spring/struts2)
  3. 動態註冊使用職責鏈設計模式的中間件、框架的實現(例如 Tomcat 的 Pipeline & Valve,Grizzly 的 FilterChain & Filter 等等)
  4. 使用 java agent 技術寫入字節碼。wsmemshell

排查方法:調試 jvm,因爲所有的 java 代碼都得加載到 jvm 中運行

用到的工具:

arthas Java診斷利器Arthas

copagent java 內存馬提取工具

java-memshell-scanner jsp 腳本,識別 filter 、servlet 型內存馬

D盾、河馬webshell 查殺、在線文件分析平臺、火眼金睛。

behinder godzillaantswordwsmemshell

常見排查技巧

使用 arthas

直接使用 arthas 找所有的類即可,因爲 jsp 編譯過後的類名末尾都會帶上 jsp 後綴。

sc *_jsp*

image-20220907154630778

sc *_jsp$*

常見的連接工具的 webshell ,都會使用 在 webshell 落地文件內創建內部類,而內部類都是通過 $ 標識的 。

image-20221129163239251

classloader -l

通過 classloader 去看 org.apache.jasper.servlet.JasperLoader 加載的類,落地的 webshell jsp 文件都是通過該類去加載

image-20221130005737494

使用 copagent,其輸出的 allLoadedClasses.txt 按照加載順序展示出jvm 加載的所有類。此處可以從下往上依次去找

image-20221130072032237

工具使用技巧

arthas

image-20221130074320862

在jvm中導出可疑類,導出路徑默認爲 pwd 路徑。

jad --source-only org.apache.jsp.webshells.behinder_002d4_0_4_jsp > z.java

image-20220907160932897

若排查到了內存馬,通常的處置方式是進行重啓業務服務器,而 arthas 提供了redefine 、retransform 機制,可以直接對 jvm 中的類進行替換。

image-20221130074026890

copagent

copagent 可以掃描jvm,導出可疑的字節碼,並進行反編譯。輸出物中通常需要關注的有三個:

image-20221130072656677
  1. result.txt 存放可疑類的掃描結果。

    可以查看其掃描結果。

    image-20221130072138901
  2. allLoadedClasses.txt 按照加載順序 展示出 jvm 加載的所有類。

    可以根據加載時間,定位一段時間後加載的所有類。

    image-20221130073543188
  3. java 目錄,輸出所有可疑類的源碼。

    使用多種webshell查殺工具,對 java 目錄下的webshell 進行查殺。

    image-20221130073724717
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章