這篇文章主要講解了“Tomcat-Ajp協(xié)議漏洞分析”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Tomcat-Ajp協(xié)議漏洞分析”吧!
東鄉(xiāng)族網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司自2013年起到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。安全公告編號(hào):CNTA-2020-0004
2020年02月20日, 360CERT 監(jiān)測(cè)發(fā)現(xiàn) 國(guó)家信息安全漏洞共享平臺(tái)(CNVD) 收錄了 CNVD-2020-10487 Apache Tomcat文件包含漏洞。
CNVD-2020-10487/CVE-2020-1938是文件包含漏洞,xxx者可利用該高危漏洞讀取或包含 Tomcat 上所有 webapp 目錄下的任意文件,如:webapp 配置文件或源代碼等。
受影響的版本包括:Tomcat 6,Tomcat 7的7.0.100以下版本,Tomcat 8的8.5.51以下版本,Tomcat 9的9.0.31以下版本。
CNVD 對(duì)該漏洞的綜合評(píng)級(jí)為“高?!薄?/p>
Apache Tomcat服務(wù)器通過(guò)Connector連接器組件與客戶程序建立連接,Connector表示接收請(qǐng)求并返回響應(yīng)的端點(diǎn)。即Connector組件負(fù)責(zé)接收客戶的請(qǐng)求,以及把Tomcat服務(wù)器的響應(yīng)結(jié)果發(fā)送給客戶。
在Apache Tomcat服務(wù)器中我們平時(shí)用的最多的8080端口,就是所謂的Http Connector,使用Http(HTTP/1.1)協(xié)議
在conf/server.xml文件里,它對(duì)應(yīng)的配置為:
而 AJP Connector,它使用的是 AJP 協(xié)議(Apache Jserv Protocol)是定向包協(xié)議。因?yàn)樾阅茉?,使用二進(jìn)制格式來(lái)傳輸可讀性文本,它能降低 HTTP 請(qǐng)求的處理成本,因此主要在需要集群、反向代理的場(chǎng)景被使用。
Ajp協(xié)議對(duì)應(yīng)的配置為:
Tomcat服務(wù)器默認(rèn)對(duì)外網(wǎng)開(kāi)啟該端口 Web客戶訪問(wèn)Tomcat服務(wù)器的兩種方式:
漏洞產(chǎn)生的主要位置在處理Ajp請(qǐng)求內(nèi)容的地方
org.apache.coyote.ajp.AbstractAjpProcessor.java#prepareRequest()
這里首先判斷SCAREQ_ATTRIBUTE,意思是如果使用的Ajp屬性并不在上述的列表中,那么就進(jìn)入這個(gè)條件
SC_A_REQ_REMOTE_PORT對(duì)應(yīng)的是AJP_REMOTE_PORT,這里指的是對(duì)遠(yuǎn)程端口的轉(zhuǎn)發(fā),Ajp13并沒(méi)有轉(zhuǎn)發(fā)遠(yuǎn)程端口,但是接受轉(zhuǎn)發(fā)的數(shù)據(jù)作為遠(yuǎn)程端口。
于是這里我們可以進(jìn)行對(duì)Ajp設(shè)置特定的屬性,封裝為request對(duì)象的Attribute屬性 比如以下三個(gè)屬性可以被設(shè)置
javax.servlet.include.request_urijavax.servlet.include.path_infojavax.servlet.include.servlet_path
當(dāng)請(qǐng)求被分發(fā)到org.apache.catalina.servlets.DefaultServlet#serveResource()方法
調(diào)用getRelativePath方法,需要獲取到request_uri不為null,然后從request對(duì)象中獲取并設(shè)置pathInfo屬性值和servletPath屬性值
接著往下看到getResource方法時(shí),會(huì)把path作為參數(shù)傳入,獲取到文件的源碼
漏洞演示: 讀取到/WEB-INF/web.xml文件
當(dāng)在處理 jsp 請(qǐng)求的uri時(shí),會(huì)調(diào)用 org.apache.jasper.servlet.JspServlet#service()
最后會(huì)將pathinfo交給serviceJspFile處理,以jsp解析該文件,所以當(dāng)我們可以控制服務(wù)器上的jsp文件的時(shí)候,比如存在jsp的文件上傳,這時(shí),就能夠造成rce
漏洞演示: 造成rce
Apache Tomcat 6 已經(jīng)停止維護(hù),請(qǐng)升級(jí)到最新受支持的 Tomcat 版本以免遭受漏洞影響,請(qǐng)更新到如下Tomcat 版本:
感謝各位的閱讀,以上就是“Tomcat-Ajp協(xié)議漏洞分析”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Tomcat-Ajp協(xié)議漏洞分析這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!