9 月 19 日,腾讯云安全中心监测到 Apache Tomcat 修复了2个严重级别的漏洞, 分别为: 信息泄露漏洞(CVE-2017-12616)、远程代码执行漏洞(CVE-2017-12615
9 月 19 日,騰訊云安全中心監(jiān)測到 ?Apache Tomcat 修復(fù)了2個嚴(yán)重級別的漏洞, 分別為: 信息泄露漏洞(CVE-2017-12616)、遠(yuǎn)程代碼執(zhí)行漏洞(CVE-2017-12615),在某些場景下,攻擊者將分別能通過這兩個漏洞,獲取用戶服務(wù)器上 JSP 文件的源代碼,或是通過精心構(gòu)造的攻擊請求,向用戶服務(wù)器上傳惡意 JSP 文件,通過上傳的 JSP 文件 ,可在用戶服務(wù)器上執(zhí)行任意代碼。 ? ??
?
云鼎實驗室通過對于漏洞描述,搭建漏洞環(huán)境,并對其進(jìn)行復(fù)現(xiàn)。此漏洞為高危漏洞,即使是非默認(rèn)配置,但是一旦存在漏洞,那么攻擊者可以成功上傳 webshell,并控制服務(wù)器。
?
復(fù)現(xiàn)
?
根據(jù)描述,在 Windows 服務(wù)器下,將 readonly 參數(shù)設(shè)置為 false 時,即可通過 PUT 方式創(chuàng)建一個 JSP 文件,并可以執(zhí)行任意代碼。 ??
通過閱讀 conf/web.xml 文件,可以發(fā)現(xiàn): ?
?
默認(rèn) readonly 為 true,當(dāng) readonly 設(shè)置為 false 時,可以通過 PUT / DELETE 進(jìn)行文件操控。 ?
配置 readonly 為 false:
?
啟動 Tomcat,利用 PUT 請求創(chuàng)建文件:
?
提示 404。通過描述中的 Windows 受影響,可以結(jié)合 Windows 的特性。其一是 NTFS 文件流,其二是文件名的相關(guān)限制(如 Windows 中文件名不能以空格結(jié)尾)來繞過限制:?
?
?
?
訪問發(fā)現(xiàn)可以正常輸出:?
?
?
分析
Tomcat 的 Servlet 是在 conf/web.xml 配置的,通過配置文件可知,當(dāng)后綴名為 .jsp 和 .jspx 的時候,是通過JspServlet處理請求的: ?
?
可以得知,“1.jsp ”(末尾有一個和空格)并不能匹配到?JspServlet,而是會交由DefaultServlet去處理。當(dāng)處理 PUT 請求時:
?
會調(diào)用resources.rebind:
?
dirContext?為FileDirContext:
?
調(diào)用?rebind創(chuàng)建文件:
?
又由于 Windows 不允許“ ”作為文件名結(jié)尾,所以會創(chuàng)建一個?.jsp 文件,導(dǎo)致代碼執(zhí)行。
?
Bypass 分析
?
然而,經(jīng)過黑盒測試,當(dāng) PUT 地址為/1.jsp/時,仍然會創(chuàng)建 JSP,會影響 Linux 和 Windows 服務(wù)器,并且 Bypass 了之前的補(bǔ)丁,分析如下。?
?
在進(jìn)入 bind 函數(shù)時,會聲明一個 File 變量:
?
進(jìn)入 File 后,會對 name 進(jìn)行 normalize
?
最后得到的 path 就是沒有最后?/?的 path 了:
?
?
影響?
?
由于存在去掉最后的 / 的特性,那么這個漏洞自然影響 Linux 以及 Windows 版本。而且經(jīng)過測試,這個漏洞影響全部的 Tomcat 版本,從 5.x 到 9.x 無不中槍。目前來說,最好的解決方式是將 conf/web.xml 中對于 DefaultServlet 的 readonly 設(shè)置為 true,才能防止漏洞。
?
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的9 月 19 日,腾讯云安全中心监测到 Apache Tomcat 修复了2个严重级别的漏洞, 分别为: 信息泄露漏洞(CVE-2017-12616)、远程代码执行漏洞(CVE-2017-12615的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EasyJoyStick使用以及两种操作
- 下一篇: Unity3D 自动打包整个项目(以As