常见web中间件及其漏洞概述
常見web中間件及其漏洞概述
- 一、 IIS漏洞分析
- (一)PUT漏洞
- (二)短文件名猜解
- (三) 遠程代碼執行
- (四) 解析漏洞
- 二、 Apache漏洞分析
- (一) 解析漏洞
- (二) 目錄遍歷
- 三、 Nginx漏洞分析
- (一)文件解析
- (二)目錄遍歷
- (三) CRLF注入
- (四) 目錄穿越
- 四、 Tomcat漏洞分析
- (一) 遠程代碼執行
- (二)war后門文件部署
- 五、 jBoss漏洞分析
- (一) 反序列化漏洞
- (二) war后門文件部署
- 六、 WebLogic漏洞分析
- (一) 反序列化漏洞
- (二) SSRF
- (三) 任意文件上傳
- (四) war后門文件部署
- 七、 其它中間件相關漏洞
- (一) FastCGI未授權訪問、任意命令執行
- (二) PHPCGI遠程代碼執行
一、 IIS漏洞分析
IIS簡介
IIS是Internet Information Services的縮寫,意為互聯網信息服務,是由微軟公司提供的基于運行Microsoft Windows的互聯網基本服務。最初是Windows NT版本的可選包,隨后內置在Windows 2000、Windows XP Professional和Windows Server 2003一起發行,但在Windows XP Home版本上并沒有IIS。IIS是一種Web(網頁)服務組件,其中包括Web服務器、FTP服務器、NNTP服務器和SMTP服務器,分別用于網頁瀏覽、文件傳輸、新聞服務和郵件發送等方面,它使得在網絡(包括互聯網和局域網)上發布信息成了一件很容易的事。
IIS的安全脆弱性曾長時間被業內詬病,一旦IIS出現遠程執行漏洞威脅將會非常嚴重。遠程執行代碼漏洞存在于 HTTP 協議堆棧 (HTTP.sys) 中,當 HTTP.sys 未正確分析經特殊設計的 HTTP 請求時會導致此漏洞。成功利用此漏洞的攻擊者可以在系統帳戶的上下文中執行任意代碼,可以導致IIS服務器所在機器藍屏或讀取其內存中的機密數據
(一)PUT漏洞
1、漏洞介紹及成因
IIS Server 在 Web 服務擴展中開啟了 WebDAV ,配置了可以寫入的權限,造成任意文件上傳。
版本: IIS6.0
2、漏洞復現
1) 開啟WebDAV 和寫權限
2) 利用burp測試
抓包,將GET請求改為OPTIONS
3)利用工具進行測試
成功上傳,再上傳一句話木馬,然后用菜刀連接,getshell
3、漏洞修復
關閉WebDAV 和寫權限
(二)短文件名猜解
1、漏洞介紹及成因
IIS的短文件名機制,可以暴力猜解短文件名,訪問構造的某個存在的短文件名,會返回404,訪問構造的某個不存在的短文件名,返回400。
2、漏洞復現
1)、在網站根目錄下添加aaaaaaaaaa.html文件
3) 進行猜解
3、漏洞修復
修復方法:
1)升級.net framework
2)修改注冊表禁用短文件名功能
快捷鍵Win+R打開命令窗口,輸入regedit打開注冊表窗口,找到路徑:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,將其中的 NtfsDisable8dot3NameCreation這一項的值設為 1,1代表不創建短文件名格式,修改完成后,需要重啟系統生效
3)CMD關閉NTFS 8.3文件格式的支持
4)將web文件夾的內容拷貝到另一個位置,如c:\www到d:\w,然后刪除原文件夾,再重命名d:\w到c:\www。
修復后:
4、局限性
此漏洞只能確定前6個字符,如果后面的字符太長、包含特殊字符,很難猜解;
如果文件名本身太短(無短文件名)也是無法猜解的;
如果文件名前6位帶空格,8.3格式的短文件名會補進,和真實文件名不匹配;
(三) 遠程代碼執行
1、 漏洞介紹及成因
在IIS6.0處理PROPFIND指令的時候,由于對url的長度沒有進行有效的長度控制和檢查,導致執行memcpy對虛擬路徑進行構造的時候,引發棧溢出,從而導致遠程代碼執行。
2、 漏洞復現
1)漏洞環境搭建
在windows server 2003 r2 32位上安裝iis6.0
2) 觸發漏洞
在本地執行exp,exp如下
執行成功后,服務器端彈出計算器:
3、 漏洞修復
1)關閉 WebDAV 服務
2) 使用相關防護設備
(四) 解析漏洞
1、 漏洞介紹及成因
IIS 6.0 在處理含有特殊符號的文件路徑時會出現邏輯錯誤,從而造成文件解析漏洞。這一漏洞有兩種完全不同的利用方式:
/test.asp/test.jpg
test.asp;.jpg
2、漏洞復現
利用方式 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 程序執行了。
3、 漏洞修復
1)對新建目錄文件名進行過濾,不允許新建包含‘.’的文件
2)曲線網站后臺新建目錄的功能,不允許新建目錄
3)限制上傳的腳本執行權限,不允許執行腳本
4)過濾.asp/xm.jpg,通過ISApi組件過濾
二、 Apache漏洞分析
Apache簡介
Apache 是世界使用排名第一的Web 服務器軟件。它可以運行在幾乎所有廣泛使用的 計算機平臺上,由于其 跨平臺 和安全性被廣泛使用,是最流行的Web服務器端軟件之一。它快速、可靠并且可通過簡單的API擴充,將 Perl/ Python等 解釋器編譯到服務器中。
(一) 解析漏洞
1、 漏洞介紹及成因
Apache文件解析漏洞與用戶的配置有密切關系,嚴格來說屬于用戶配置問題。
Apache文件解析漏洞涉及到一個解析文件的特性:
Apache默認一個文件可以有多個以點分隔的后綴,當右邊的后綴無法識別(不在mime.tyoes內),則繼續向左識別,當我們請求這樣一個文件:shell.xxx.yyy
yyy->無法識別,向左
xxx->無法識別,向左
php->發現后綴是php,交給php處理這個文件
2、 漏洞復現
上傳一個后綴名為360的php文件
3、 漏洞修復
將AddHandler application/x-httpd-php .php的配置文件刪除。
(二) 目錄遍歷
1、 漏洞介紹及成因
由于配置錯誤導致的目錄遍歷
2、 漏洞復現
3、 漏洞修復
修改apache配置文件httpd.conf
找到Options+Indexes+FollowSymLinks +ExecCGI并修改成 Options-Indexes+FollowSymLinks +ExecCGI 并保存;
三、 Nginx漏洞分析
** Nginx簡介**
Nginx 是一款 輕量級的 Web 服務器、 反向代理 服務器及 電子郵件(IMAP/POP3)代理服務器,并在一個BSD-like 協議下發行。其特點是占有內存少, 并發能力強,事實上nginx的并發能力確實在同類型的網頁服務器中表現較好
(一)文件解析
1、 漏洞介紹及成因
對任意文件名,在后面添加/任意文件名.php的解析漏洞,比如原本文件名是test.jpg,可以添加test.jpg/x.php進行解析攻擊。
2、 漏洞復現
在網站根目錄下新建一個i.gif的文件,在里面寫入phpinfo()
在瀏覽器中打開
利用文件解析漏洞,輸入192.168.139.129:100/i.gif.2.php,發現無法解析
將/etc/php5/fpm/pool.d/www.conf中security.limit_extensions = .php中的.php刪除
再次在瀏覽器中打開,成功解析
3、 漏洞修復
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
(二)目錄遍歷
1、 漏洞簡介及成因
Nginx的目錄遍歷與Apache一樣,屬于配置方面的問題,錯誤的配置可到導致目錄遍歷與源碼泄露‘
2、 漏洞復現
打開test目錄,發現無法打開
修改/etc/nginx/sites-avaliable/default,在如下圖所示的位置添加autoindex on
再次訪問
3、 漏洞修復
將/etc/nginx/sites-avaliable/default里的autoindex on改為autoindex off
(三) CRLF注入
1、 漏洞簡介及成因
CRLF時“回車+換行”(\r\n)的簡稱。
HTTP Header與HTTP Body時用兩個CRLF分隔的,瀏覽器根據兩個CRLF來取出HTTP內容并顯示出來。
通過控制HTTP消息頭中的字符,注入一些惡意的換行,就能注入一些會話cookie或者html代碼,由于Nginx配置不正確,導致注入的代碼會被執行。
2、 漏洞復現
訪問頁面,抓包
請求加上/%0d%0a%0d%0a
由于頁面重定向,并沒有彈窗。
3、 漏洞修復
Nginx的配置文件/etc/nginx/conf.d/error1.conf修改為使用不解碼的url跳轉。
(四) 目錄穿越
1、 漏洞簡介及成因
Nginx反向代理,靜態文件存儲在/home/下,而訪問時需要在url中輸入files,配置文件中/files沒有用/閉合,導致可以穿越至上層目錄。
2、 漏洞復現
訪問:http://192.168.139.128:8081/files/
訪問:http://192.168.139.128:8081/files…/
成功實現目錄穿越:
3、 漏洞修復
Nginx的配置文件/etc/nginx/conf.d/error2.conf的/files使用/閉合。
四、 Tomcat漏洞分析
Tomcat簡介
Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用 服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。對于一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache 服務器,可利用它響應 HTML ( 標準通用標記語言下的一個應用)頁面的訪問請求。實際上Tomcat是Apache 服務器的擴展,但運行時它是獨立運行的,所以當運行tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的。
(一) 遠程代碼執行
1、 漏洞簡介及成因
Tomcat 運行在Windows 主機上,且啟用了 HTTP PUT 請求方法,可通過構造的攻擊請求向服務器上傳包含任意代碼的 JSP 文件,造成任意代碼執行。
影響版本: Apache Tomcat 7.0.0 – 7.0.81
2、 漏洞復現
配置漏洞,開啟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,burp抓包,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。
彈出計算器:
3、 漏洞修復
1)檢測當前版本是否在影響范圍內,并禁用PUT方法。
2)更新并升級至最新版。
(二)war后門文件部署
1、漏洞簡介及成因
Tomcat 支持在后臺部署war文件,可以直接將webshell部署到web目錄下。
若后臺管理頁面存在弱口令,則可以通過爆破獲取密碼。
2、漏洞復現
Tomcat安裝目錄下conf里的tomcat-users.xml配置如下:
訪問后臺,登陸:
上傳一個war包,里面是jsp后門:
成功上傳并解析,打開:
可執行系統命令:
也可進行文件管理,任意查看、刪除、上傳文件:
3、漏洞修復
1)在系統上以低權限運行Tomcat應用程序。創建一個專門的 Tomcat服務用戶,該用戶只能擁有一組最小權限(例如不允許遠程登錄)。
2)增加對于本地和基于證書的身份驗證,部署賬戶鎖定機制(對于集中式認證,目錄服務也要做相應配置)。在CATALINA_HOME/conf/web.xml文件設置鎖定機制和時間超時限制。
3)以及針對manager-gui/manager-status/manager-script等目錄頁面設置最小權限訪問限制。
4)后臺管理避免弱口令。
五、 jBoss漏洞分析
jBoss簡介
jBoss是一個基于J2EE的開發源代碼的應用服務器。 JBoss代碼遵循LGPL許可,可以在任何商業應用中免費使用。JBoss是一個管理EJB的容器和服務器,支持EJB1.1、EJB 2.0和EJB3的規范。但JBoss核心服務不包括支持servlet/JSP的WEB容器,一般與Tomcat或Jetty綁定使用。
(一) 反序列化漏洞
1、 漏洞介紹及成因
Java序列化,簡而言之就是把java對象轉化為字節序列的過程。而反序列話則是再把字節序列恢復為java對象的過程,然而就在這一轉一變得過程中,程序員的過濾不嚴格,就可以導致惡意構造的代碼的實現。
2、 漏洞復現
靶機啟動jboss。
攻擊機訪問靶機服務:
訪問/invoker/readonly。
返回500,說明頁面存在,此頁面有反序列化漏洞:
抓包:
改包。
POST payload.bin中數據。
查看靶機,彈出計算器。
3、 漏洞修復
有效解決方案:升級到JBOSS AS7版本臨時解決方案:
1)不需要http-invoker.sar 組件的用戶可直接刪除此組件;
2)用于對 httpinvoker 組件進行訪問控制。
(二) war后門文件部署
1、 漏洞介紹及成因
jBoss后臺管理頁面存在弱口令,通過爆破獲得賬號密碼。登陸后臺上傳包含后門的war包。
2、 漏洞復現
點擊Web Application(war)s。
點擊add a new resource。
選擇一個war包上傳,上傳后,進入該war包,點擊start。
查看status為sucessful。
訪問該war包頁面,進入后門。
可進行文件管理和系統命令執行。
六、 WebLogic漏洞分析
WebLogic簡介
WebLogic是美國Oracle公司出品的一個applicationserver,確切的說是一個基于JAVAEE架構的中間件,WebLogic是用于開發、集成、部署和管理大型分布式Web應用、網絡應用和數據庫應用的Java應用服務器。將Java的動態功能和Java Enterprise標準的安全性引入大型網絡應用的開發、集成、部署和管理之中。
(一) 反序列化漏洞
1、 漏洞簡介及成因
Java序列化,簡而言之就是把java對象轉化為字節序列的過程。而反序列話則是再把字節序列恢復為java對象的過程,然而就在這一轉一變得過程中,程序員的過濾不嚴格,就可以導致惡意構造的代碼的實現。
2、漏洞復現
使用vulhub實驗環境,啟動實驗環境,訪問靶機,抓包,修改數據包。
Kali啟動監聽。
發送數據包成功后,拿到shell。
3、漏洞修復
1)升級Oracle 10月份補丁。
2)對訪問wls-wsat的資源進行訪問控制。
(二) SSRF
1、 漏洞簡介及成因
Weblogic 中存在一個SSRF漏洞,利用該漏洞可以發送任意HTTP請求,進而攻擊內網中redis、fastcgi等脆弱組件。
2、 漏洞復現
使用vulhub實驗環境,啟動環境。
訪問http://192.168.139.129:7001/uddiexplorer/SearchPublicRegistries.jsp。
用burp抓包,修改請求。
啟動nc監聽2222端口。
拿到shell。
3、 漏洞修復
方法一:
以修復的直接方法是將SearchPublicRegistries.jsp直接刪除就好了;
方法二:
1)刪除uddiexplorer文件夾
2)限制uddiexplorer應用只能內網訪問
方法三:(常用)
Weblogic服務端請求偽造漏洞出現在uddi組件(所以安裝Weblogic時如果沒有選擇uddi組件那么就不會有該漏洞),更準確地說是uudi包實現包uddiexplorer.war下的SearchPublicRegistries.jsp。方法二采用的是改后輟的方式,修復步驟如下:
1)將weblogic安裝目錄下的wlserver_10.3/server/lib/uddiexplorer.war做好備份
2)將weblogic安裝目錄下的server/lib/uddiexplorer.war下載
3)用winrar等工具打開uddiexplorer.war
4)將其下的SearchPublicRegistries.jsp重命名為SearchPublicRegistries.jspx
5)保存后上傳回服務端替換原先的uddiexplorer.war
6)對于多臺主機組成的集群,針對每臺主機都要做這樣的操作
7)由于每個server的tmp目錄下都有緩存所以修改后要徹底重啟weblogic(即停應用–停server–停控制臺–啟控制臺–啟server–啟應用)
(三) 任意文件上傳
1、 漏洞簡介及成因
通過訪問config.do配置頁面,先更改Work Home工作目錄,用有效的已部署的Web應用目錄替換默認的存儲JKS Keystores文件的目錄,之后使用"添加Keystore設置"的功能,可上傳惡意的JSP腳本文件。
2、 漏洞復現
訪問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。
然后點擊安全 -> 增加,然后上傳 webshell ,這里我上傳一個 jsp 大馬。
上傳后,查看返回的數據包,其中有時間戳:
可以看到時間戳為1543145154632。
訪問http://192.168.139.129:7001/ws_utc/css/config/keystore/1543145154632_lele.jsp。
可以進行文件管理、文件上傳、系統命令執行等。
嘗試以下執行系統命令。
命令執行成功。
3、 漏洞修復
方案1:
使用Oracle官方通告中的補丁鏈接:
http://www.oracle.com/technetwork/security-advisory/cpujul2018-4258247.html
https://support.oracle.com/rs?type=doc&id=2394520.1
方案2:
1)進入Weblogic Server管理控制臺;
2)domain設置中,啟用”生產模式”。
(四) war后門文件部署
1、 漏洞簡介及成因
由于WebLogic后臺存在弱口令,可直接登陸后臺上傳包含后門的war包。
2、 漏洞復現
訪問http://192.168.139.129:7001/console
使用弱口令登陸至后臺。
點擊鎖定并編輯。
選擇部署,進一步點擊右邊的安裝。
點擊上傳文件 – 進入文件上傳界面,選擇要上傳的 war 包。
進入下一步,選擇對應的 war 包進行部署,下一步下一步直至完成。
點擊激活更改。
啟動上傳的 war 包所生成的服務。
拿到 webshell。
3、 漏洞修復
防火墻設置端口過濾,也可以設置只允許訪問后臺的IP列表,避免后臺弱口令。
七、 其它中間件相關漏洞
(一) FastCGI未授權訪問、任意命令執行
1、 漏洞簡介及成因
服務端使用fastcgi協議并對外網開放9000端口,可以構造fastcgi協議包內容,實現未授權訪問服務端.php文件以及執行任意命令。
2、 漏洞復現
使用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`; ?>’
3、 漏洞修復
更改默認端口
(二) PHPCGI遠程代碼執行
1、 漏洞簡介及成因
在apache調用php解釋器解釋.php文件時,會將url參數傳我給php解釋器,如果在url后加傳命令行開關(例如-s、-d 、-c或-dauto_prepend_file%3d/etc/passwd±n)等參數時,會導致源代碼泄露和任意代碼執行。
此漏洞影響php-5.3.12以前的版本,mod方式、fpm方式不受影響。
2、 漏洞復現
使用vulhub實驗環境,啟動環境。
訪問http://192.168.139.129:8080/index.php。
抓包,修改包。
命令成功執行。
3、 漏洞修復
三種方法:
1)升級php版本;(php-5.3.12以上版本);
2)在apache上做文章,開啟url過濾,把危險的命令行參數給過濾掉,由于這種方法修補比較簡單,采用比較多吧。
具體做法:
修改http.conf文件,找到增加以下三行
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/
總結
以上是生活随笔為你收集整理的常见web中间件及其漏洞概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件工程教程:第7章软件维护 课后习题
- 下一篇: java monitor怎么使用_Jav