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