這應(yīng)該不是一個(gè)嚴(yán)重的漏洞,可能評分只能為低,因?yàn)椴]有什么卵用。
話不多說,直接進(jìn)入正題
我的復(fù)現(xiàn)環(huán)境:
tomcat-8.5.50
首先我們得簡單寫一個(gè)servlet,當(dāng)然不寫也沒事,因?yàn)槲覀兊姆治龅讲涣颂幚韘ervlet這一步,只用tomcat默認(rèn)提供的ROOT就行
首先我們需要在web.xml中注冊RemoteIpFilter 這個(gè)過濾器
<filter>
<filter-name>remote-ip-filter</filter-name>
<filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>remote-ip-filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
然后把tomcat啟動(dòng)起來,打斷點(diǎn)調(diào)試,因?yàn)閱栴}是出在X-Forwarded-Proto
這個(gè)HTTP標(biāo)頭,我們就在RemoteIpFilter
這個(gè)文件中搜索該關(guān)鍵字
如果獲取到X-Forwarded-Proto
并且其值為https就設(shè)置Secure屬性為True,這個(gè)屬性最終就體現(xiàn)在cookie上,我們假設(shè)一種情況,當(dāng)反代服務(wù)器與提供服務(wù)的服務(wù)器之間使用http通信時(shí)會(huì)發(fā)生什么,因?yàn)榉创?wù)器設(shè)置了X-Forwarded-Proto: https
,服務(wù)提供者會(huì)將請求的secure屬性設(shè)置為True導(dǎo)致被設(shè)置了secure的cookie被通過http傳輸,從而使的cookie存在被劫持的可能。
這幾乎就是這個(gè)漏洞的全部
我們看看官方的修復(fù)commit
Fix BZ 66471 - JSessionId secure attribute missing with RemoteIpFilte…
老實(shí)說他這個(gè)修復(fù)方法我沒太看懂
修改了setSecure
方法,獲取了request
對象,修改后獲取的request
應(yīng)該和修改前不一樣,修改前獲取的是XForwardedRequest
對象,修改后應(yīng)該是原始的ServletRequest
對象,所以這里設(shè)置secure
屬性并沒有修改到XRequest
對象的secure值,所以并不會(huì)對轉(zhuǎn)發(fā)請求造成影響,從而完成修復(fù)文章來源:http://www.zghlxwxcb.cn/news/detail-484134.html
在該commit里還加了一個(gè)測試用例
如果能對該測試用例有足夠的理解,理解該漏洞應(yīng)該不難文章來源地址http://www.zghlxwxcb.cn/news/detail-484134.html
到了這里,關(guān)于CVE-2023-28708 原理剖析的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!