一、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和寫入權限.


利用BurpSute測試:
BurpSute抓包,將GET請求改為OPTIONS.

利用桂林老兵寫入權限:

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

PUT漏洞修復:關閉WebDAV和寫入權限.
二、短文件名猜解漏洞介紹及成因:
IIS的短文件名機制,可以暴力猜解短文件名,訪問構造的某個存在的短文件名,會返回404,訪問構造的某個不存在的短文件名,返回400,漏洞復現:在網站根目錄下添加aaaaaaaaaa.html文件:

進行猜解:


漏洞修復: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,如圖:

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

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

短文件名猜解漏洞漏洞修復:1.關閉WebDAV服務;2.使用相關防護設備.
四、解析漏洞介紹及成因:
IIS 6.0在處理含有特殊符號的文件路徑時會出現邏輯錯誤,從而造成文件解析漏洞,漏洞有兩種完全不同的利用方式:
/test.asp/test.jpg
test.asp;.jpg
漏洞復現:利用方式1:
第一種是新建名為 “test.asp”目錄,該目錄中的任何文件都被IIS當作asp程序執行,特殊符號是 “/”:

利用方式2:第二種是上傳名為 “test.asp;.jpg” 的文件,雖然該文件真正的后綴名是 “.jpg”, 但由於含有特殊符號 “;” ,仍會被 IIS 當做asp程序執行:

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文件:

Apache解析漏洞修復:將AddHandler application/x-httpd-php .php配置文件刪除.
目錄遍歷漏洞介紹及成因:
由於配置錯誤導致的目錄遍歷,漏洞復現:

Apache目錄遍歷漏洞修復:
修改apache配置文件httpd.conf,找到Options+Indexes+FollowSymLinks +ExecCGI並修改成 Options-Indexes+FollowSymLinks +ExecCGI 並保存:


四、 Nginx文件解析漏洞介紹及成因:
對任意文件名,在后面添加/任意文件名.php的解析漏洞,比如原本文件名是test.jpg,可以添加test.jpg/x.php進行解析攻擊,漏洞復現:在網站根目錄下新建一個i.gif的文件,在里面寫入phpinfo(),在瀏覽器中打開測試:

利用文件解析漏洞,輸入192.168.139.129:100/i.gif.2.php,發現無法解析:

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

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

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目錄,發現無法打開:

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

再次訪問:

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/)>,由於頁面重定向,並沒有彈窗:

CRLF注入漏洞修復:Nginx的配置文件/etc/nginx/conf.d/error1.conf修改為使用不解碼的url跳轉.
五、目錄穿越漏洞簡介及成因:
Nginx反向代理,靜態文件存儲在/home/下,而訪問時需要在url中輸入files,配置文件中/files沒有用/閉合,導致可以穿越至上層目錄,漏洞復現,訪問:http://192.168.139.128:8081/files/

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

目錄穿越漏洞修復: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服務:

注:訪問127.0.0.1:8080,BurpSute抓包,send to Repeater選項重放模塊,將請求方式改為PUT,創建一個122.jsp,並用%20轉義空格字符,123.jsp代碼:
<%Runtime.getRuntime().exec(request.getParameter("cmd"));%>
返回201,說明創建成功:

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

Tomcat遠程代碼執行漏洞修復:1.檢測當前版本是否在影響范圍內,並禁用PUT方法;2.更新並升級至最新版.
War后門文件部署漏洞簡介及成因:
Tomcat支持在后台部署war文件,可以直接將webshell部署到web目錄下,若后台管理頁面存在弱口令,則可以通過爆破獲取密碼,漏洞復現:Tomcat安裝目錄conf.tomcat-users.xml配置如下:

訪問后台,登陸:

上傳一個war包jsp后門:

成功上傳並解析,打開:

可執行系統命令:

漏洞修復:1.在系統上以低權限運行Tomcat應用程序。創建一個專門的 Tomcat服務用戶,該用戶只能擁有一組最小權限,例如不允許遠程登錄;2.增加對於本地和基於證書的身份驗證,部署賬戶鎖定機制,對於集中式認證,目錄服務也要做相應配置,在CATALINA_HOME/conf/web.xml文件設置鎖定機制和時間超時限制;3.以及針對manager-gui/manager-status/manager-script等目錄頁面設置最小權限訪問限制;4.后台管理避免弱口令.
六、 jBoss反序列化漏洞介紹及成因:
Java序列化,簡而言之就是把java對象轉化為字節序列的過程。而反序列話則是再把字節序列恢復為java對象的過程,然而就在這一轉一變得過程中,程序員的過濾不嚴格,就可以導致惡意構造的代碼的實現,漏洞復現:靶機啟動jboss,攻擊機訪問靶機服務:

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

BrupSute抓包:

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


查看靶機,彈出計算器:

漏洞修復:1.不需要http-invoker.sar 組件的用戶可直接刪除此組件;2.用於對httpinvoker組件進行訪問控制.
War后門文件部署漏洞介紹及成因:
jBoss后台管理頁面存在弱口令,通過爆破獲得賬號密碼,登陸后台上傳包含后門war包,漏洞復現:


點擊Web Application(war)s:

點擊add a new resource:

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

查看status為sucessful:

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


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

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

WebLogic反序列化漏洞修復:1.升級Oracle 10月份補丁;2.對訪問wls-wsat的資源進行訪問控制.
SSRF漏洞簡介及成因:
Weblogic中存在一個SSRF漏洞,利用該漏洞可以發送任意HTTP請求,進而攻擊內網中redis、fastcgi等脆弱組件,漏洞復現,使用vulhub實驗環境,啟動環境,訪問:http://192.168.139.129:7001/uddiexplorer/SearchPublicRegistries.jsp:

BurpSute抓包,修改請求:

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

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:

注:設置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:

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

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

嘗試以下執行系統命令:

任意文件上傳漏洞修復: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

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

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

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

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



點擊激活更改:

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

獲取WebShell:

War后門文件部署漏洞修復:防火牆設置端口過濾,也可以設置只允許訪問后台的IP列表,避免后台弱口令.
八、 FastCGI未授權訪問、任意命令執行漏洞簡介及成因:
服務端使用fastcgi協議並對外網開放9000端口,可以構造fastcgi協議包內容,實現未授權訪問服務端.php文件以及執行任意命令,
漏洞復現:使用vulhub實驗環境,啟動實驗環境,python fpm.py 192.168.237.136 /etc/passwd:

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

利用命令進行任意命令執行復現:
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`; ?>'

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:

BrupSute抓包,修改包:

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
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。