Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    863561412

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

0x00 前言在上篇文章介紹了Jetty Filter型內存馬的實現思路和細節,本文介紹Jetty Servlet型內存馬的實現思路和細節

0x01 簡介本文將要介紹以下內容:

實現思路

實現代碼

Zimbra環境下的Servlet型內存馬

0x02 實現思路同樣是使用Thread獲得webappclassloaer,進而通過反射調用相關方法添加Servlet型內存馬

0x03 實現代碼1.添加ServletJetty下可用的完整代碼如下:

1.png 2.png 3.png 4.png2.枚舉Servlet(1)通過request對象調用getServletRegistrations枚舉Servlet

Jetty下可用的完整代碼如下:

6.png

(2)通過Thread獲得webappclassloaer,通過反射讀取_servlets屬性來枚舉Servlet

Jetty下可用的完整代碼如下:

7.png 8.png

注:

該方法在Zimbra環境下會存在多個重複結果

0x04 Zimbra環境下的Servlet型內存馬Zimbra存在多個名為WebAppClassLoader的線程,所以在添加Servlet時需要修改判斷條件,避免提前退出,在實例代碼的基礎上直接修改即可。

9.png當然,我們可以通過反射刪除內存馬對應的jsp實例,測試代碼如下:

10.png

無論是Filter型內存馬還是Servlet型內存馬,刪除內存馬對應的jsp實例不影響內存馬的正常使用

0x05 利用思路同Filter型內存馬一樣,Servlet型內存馬的優點是不需要寫入文件,但是會在服務重啟時失效

0x06 小結本文介紹了Jetty Servlet型內存馬的實現思路和細節,給出了可供測試的代碼,分享了Zimbra環境的利用方法。