常见的web中间件java框架漏洞总结
對(duì)近期的web中間件漏洞進(jìn)行了解。因此我對(duì)常見(jiàn)的web中間件漏洞進(jìn)行了收集以及整理。(本篇文章將持續(xù)更新)
文章目錄
一、IIS
IIS6.x
IIS7.x
二、Apache
Apache HTTPD換行解析漏洞(CVE-2017-15715)
三、Nginx
Nginx 配置文件錯(cuò)誤導(dǎo)致的解析漏洞
四、Tomcat
Tomcat任意文件寫(xiě)入(CVE-2017-12615)
Tomcat? 遠(yuǎn)程代碼執(zhí)行( CVE-2019-0232)
log4j漏洞
shiro反序列化漏洞
struts2漏洞
一、IIS
IIS6.x
解析漏洞
原理:服務(wù)器默認(rèn)不解析; 號(hào)及其后面的內(nèi)容,相當(dāng)于截?cái)?/p>
*.asp;.jpg的文件會(huì)當(dāng)成asp文件執(zhí)行;/*.asp文件夾下的文件也會(huì)被當(dāng)作asp腳本執(zhí)行
另外,IIS6.x除了會(huì)將擴(kuò)展名為.asp的文件解析為asp之外,還默認(rèn)會(huì)將擴(kuò)展名為.asa,.cdx,.cer解析為asp
修復(fù)建議:
1.限制上傳的目錄執(zhí)行權(quán)限,不允許執(zhí)行腳本
2.不允許新建文件夾
3.對(duì)上傳的文件都進(jìn)行重命名((時(shí)間戳+隨機(jī)數(shù)+.jpg)
IIS7.x
解析漏洞
在Fast-CGI運(yùn)行模式(phpinfo的server API可以看到是否開(kāi)啟)下,在任意文件(test.jpg)后面加上/.php,會(huì)將(test.jpg)文件 解析為php文件。
修復(fù)建議:
配置cgi.fix_pathinfo(php.ini中)為0并重啟php-cgi程序
二、Apache
解析漏洞
Apache默認(rèn)一個(gè)文件可以有多個(gè)以點(diǎn)分割的后綴,當(dāng)最右邊的后綴無(wú)法識(shí)別( 不在?mime.types文件內(nèi)),則繼續(xù)向左識(shí)別,直到識(shí)別到合法后綴才進(jìn)行解析。
xxx.jpg.php.xxx會(huì)解析成php腳本執(zhí)行
Apache HTTPD換行解析漏洞(CVE-2017-15715)
影響范圍:2.4.0~2.4.29
此漏洞形成的根本原因在于$,正則表達(dá)式中$不僅匹配字符串結(jié)尾位置,也可以匹配\n或\r ,在解析PHP時(shí),1.php\x0a將被按照PHP后綴進(jìn)行解析,導(dǎo)致繞過(guò)一些服務(wù)器的安全策略。
修復(fù)建議:
1.升級(jí)到最新版本
2.限制上傳的目錄執(zhí)行權(quán)限,不允許執(zhí)行腳本
3.對(duì)上傳的文件都進(jìn)行重命名((時(shí)間戳+隨機(jī)數(shù)+.jpg)
三、Nginx
Nginx 配置文件錯(cuò)誤導(dǎo)致的解析漏洞
對(duì)于任意文件名,在后面添加/xxx.php( xxx為任意字符)后,即可將文件作為php解析。
例:info.jpg后面加上/xxx.php,會(huì)將info.jpg以php解析。
修復(fù)建議:
1.配置cgi.fix_pathinfo(php.ini中)為0并重啟php-cgi程序
2.如果需要使用到cgi.fix_pathinfo這個(gè)特性(例如:Wordpress),那么可以禁止上傳目錄的執(zhí)行腳本權(quán)限。或?qū)⑸蟼鞔鎯?chǔ)的內(nèi)容與網(wǎng)站分離,即站庫(kù)分離。
3.高版本PHP提供了security.limit_extensions這個(gè)配置參數(shù),設(shè)置security.limit_extensions = .php
四、Tomcat
Tomcat任意文件寫(xiě)入(CVE-2017-12615)
漏洞本質(zhì)是Tomcat配置文件/conf/web.xml 配置了可寫(xiě)( readonly=false),導(dǎo)致我們可以往服務(wù)器寫(xiě)文件
修復(fù)建議:
將readonly=true,默認(rèn)為true。
Tomcat? 遠(yuǎn)程代碼執(zhí)行( CVE-2019-0232)
影響范圍:9.0.0.M1 ~ 9.0.17, 8.5.0 ~ 8.5.39 , 7.0.0 ~ 7.0.93
修復(fù)建議:
1.升級(jí)版本
2.關(guān)閉WEB-INF
log4j漏洞
?????????log4j是apache開(kāi)源項(xiàng)目,apache log4j2組件開(kāi)啟了日志記錄功能后,凡是可以觸發(fā)錯(cuò)誤記錄日志的地方,插入漏洞利用代碼,即可利用成功。如果組件還包含其他系統(tǒng)的日志,有可能造成間接投毒。
主要原因是log4j在日志輸出時(shí),未對(duì)字符合法性進(jìn)行限制,執(zhí)行了jndi協(xié)議加載的惡意腳本,造成rce。
通過(guò)jndi協(xié)議訪問(wèn)遠(yuǎn)程服務(wù),包含rmi,ldap,dns等協(xié)議調(diào)用,加載遠(yuǎn)程的惡意class,然后本地反序列化執(zhí)行。
修復(fù)建議:
升級(jí)到最新的log4j
shiro反序列化漏洞
????????shiro<=1.2.4
shiro是一款常見(jiàn)的java框架,提供了RememberMe的功能。漏洞產(chǎn)生登陸時(shí)在記住我(remember me)的功能。
特征:返回包存在set-cookie=deleteMe
生成cookie:序列化 -> 使用密鑰進(jìn)行AES加密 -> Base64編碼,最后返回客戶(hù)端 remebreme Cookie
識(shí)別cookie:得到rememberMe的cookie值->Base64解碼->使用密鑰進(jìn)行AES解密->反序列化
無(wú)論是否升級(jí),密鑰一旦泄露,就會(huì)導(dǎo)致反序列化漏洞。
修復(fù)建議:
不能使用網(wǎng)上的密鑰,自己base64一個(gè)AES密鑰,利用官方提供的方法生成。升級(jí)到1.2.4版本以上,使用動(dòng)態(tài)密鑰。
struts2漏洞
????????struts2是一款java web框架,頁(yè)面一般以.action結(jié)尾。
處理 action時(shí)通過(guò)調(diào)用底層的getter/setter方法來(lái)處理http的參數(shù),它將每個(gè)http參數(shù)聲明為一個(gè)ONGL語(yǔ)句,訪問(wèn)靠#號(hào)區(qū)分,使用(\u0023)能繞過(guò)#號(hào)過(guò)濾。
修復(fù)建議:
最簡(jiǎn)單是更新到最新版本
反序列化漏洞
原理:程序在進(jìn)行反序列化的時(shí),會(huì)自動(dòng)調(diào)用例如__wakeup(),__destruct()等函數(shù),如果傳入函數(shù)的參數(shù)可以被用戶(hù)控制的話,用戶(hù)就可以輸入一些惡意代碼到函數(shù)中執(zhí)行,從而導(dǎo)致反序列化漏洞。
phar文件反序列化(不需要反序列化函數(shù))
phar文件本質(zhì)上是一種壓縮文件,會(huì)以序列化的形式存儲(chǔ)用戶(hù)自定義的meta-data。當(dāng)受影響的文件操作函數(shù)調(diào)用phar文件時(shí),會(huì)自動(dòng)反序列化meta-data內(nèi)的內(nèi)容。(漏洞利用點(diǎn))
利用:
1、phar上傳到服務(wù)器(需要文件上傳)
2、有可用的魔術(shù)方法
3、文件操作函數(shù)的參數(shù)可控
修復(fù)建議:
不要把用戶(hù)的輸入或者是用戶(hù)可控的參數(shù)直接放進(jìn)反序列化的操作中去。
在進(jìn)入反序列化函數(shù)之前,對(duì)參數(shù)進(jìn)行限制過(guò)濾。
總結(jié)
以上是生活随笔為你收集整理的常见的web中间件java框架漏洞总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: USACO Section 1.2 Br
- 下一篇: 哪个品牌的蓝牙耳机降噪好?主动降噪耳机排