近日檢測到CNVD發佈了CNVD-2020-10487漏洞通告,360靈騰安全實驗室判斷漏洞等級爲嚴重,利用難度中,威脅程度高,影響面大。建議使用用戶及時安裝最新補丁,以免遭受黑客攻擊。

0x00 漏洞概述

Tomcat是由Apache軟件基金會屬下Jakarta項目開發的Servlet容器,按照Sun Microsystems提供的技術規範,實現了對Servlet和JavaServer Page(JSP)的支持,並提供了作爲Web服務器的一些特有功能,如Tomcat管理和控制平臺、安全局管理和Tomcat閥等。由於Tomcat本身也內含了HTTP服務器,因此也可以視作單獨的Web服務器。

攻擊者通過Ajp協議端口利用該漏洞進行文件讀取或包含 Tomcat 上所有 webapp 目錄下的任意文件,如:webapp 配置文件、源代碼等。

0x01 漏洞詳情

查看 Github 上 tomcat commit 歷史記錄可以看到有許多對AJP協議的代碼提交

在其中一條 commit 中,發現了AJP白名單的添加

對代碼塊進行分析,發現 java/org/apache/coyote/ajp/AbstractAjpProcessor.java 中的 prepareRequest() 函數的功能是對 AJP 協議進行解析

通過對該函數的調試,可以發現在處理 Constants.SC_A_REQ_ATTRIBUTE 這部分內容時,代碼中未進行內容校驗,盲目的將請求的內容進行復制

因此,我們可以修改AJP請求的屬性,進行能夠控制任意 request.setAttribute 的key和value,通過控制request對象中這三個屬性的值實現文件讀取

javax.servlet.include.request_uri
javax.servlet.include.path_info
javax.servlet.include.servlet_path

利用效果:

0x02 影響版本

  • Tomcat 6.*
  • Tomcat 7.* < 7.0.100
  • Tomcat 8.* < 8.5.51
  • Tomcat 9.* < 9.0.31

0x03 漏洞檢測

相關用戶可通過版本檢測的方法判斷當前應用是否存在漏洞風險:

在web管理頁面左上方可查看當前所使用的Tomcat版本

若當前版本在受影響範圍內,則可能存在安全風險。

0x04 處置建議

1.Apache官方已發佈9.0.31、8.5.51及7.0.100版本針對此漏洞進行修復,Apache Tomcat 6 已經停止維護,請升級到最新受支持的 Tomcat 版本以免遭受漏洞影響:

https://tomcat.apache.org/download-70.cgi
https://tomcat.apache.org/download-80.cgi
https://tomcat.apache.org/download-90.cgi

2.使用AJP協議的臨時處置方法:爲AJP Connector配置secret來設置 AJP 協議的認證憑證,且注意口令強度

3.未使用AJP協議的臨時處置方法:禁用AJP協議端口,在conf/server.xml配置文件中註釋,並重啓Tomcat服務

<Connector port="8009" protocol="AJP/1.3"redirectPort="8443" />

0x05 關於我們

靈騰安全實驗室(REDTEAM)正式成立於2020年,隸屬於360政企-實網威脅感知部;主攻研究方向包括紅隊技術、物理攻防、安全狩獵等前瞻技術,爲 360AISA全流量威脅分析系統360天相資產威脅與漏洞管理系統360虎安服務器安全管理系統360蜃景攻擊欺騙防禦系統 核心產品提供安全賦能。

0X06 Reference

https://www.cnvd.org.cn/flaw/show/CNVD-2020-10487?spm=a2c4g.11174464.0.0.48a21051t59uVP

相關文章