0x00 前言在上篇文章介紹了Jetty Filter型內存馬的實現思路和細節,本文介紹Jetty Servlet型內存馬的實現思路和細節
0x01 簡介本文將要介紹以下內容:
實現思路
實現代碼
Zimbra環境下的Servlet型內存馬
0x02 實現思路同樣是使用Thread獲得webappclassloaer,進而通過反射調用相關方法添加Servlet型內存馬
0x03 實現代碼1.添加ServletJetty下可用的完整代碼如下:
2.枚舉Servlet(1)通過request對象調用getServletRegistrations枚舉Servlet
Jetty下可用的完整代碼如下:
(2)通過Thread獲得webappclassloaer,通過反射讀取_servlets屬性來枚舉Servlet
Jetty下可用的完整代碼如下:
注:
該方法在Zimbra環境下會存在多個重複結果
0x04 Zimbra環境下的Servlet型內存馬Zimbra存在多個名為WebAppClassLoader的線程,所以在添加Servlet時需要修改判斷條件,避免提前退出,在實例代碼的基礎上直接修改即可。
當然,我們可以通過反射刪除內存馬對應的jsp實例,測試代碼如下:
無論是Filter型內存馬還是Servlet型內存馬,刪除內存馬對應的jsp實例不影響內存馬的正常使用
0x05 利用思路同Filter型內存馬一樣,Servlet型內存馬的優點是不需要寫入文件,但是會在服務重啟時失效
0x06 小結本文介紹了Jetty Servlet型內存馬的實現思路和細節,給出了可供測試的代碼,分享了Zimbra環境的利用方法。