Web中间件漏洞总结
Web中間件常見漏洞總結
一、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服務器所在機器藍屏或讀取其內存中的機密數據
1、PUT漏洞
漏洞介紹及成因
IIS Server 在 Web 服務擴展中開啟了 WebDAV ,配置了可以寫入的權限,造成任意文件上傳。
版本: IIS6.0
漏洞復現
1) 開啟WebDAV 和寫權限
2) 利用burp測試
抓包,將GET請求改為OPTIONS
修復建議
關閉WebDAV 和 寫權限
2、短文件名猜解
漏洞介紹及成因
Windows 以 8.3 格式生成與 MS-DOS 兼容的(短)文件名,以允許基于 MS-DOS 或 16 位 Windows的程序訪問這些文件。在cmd下輸入"dir /x"即可看到短文件名的效果。
IIS短文件名產生:
1.當后綴小于4時,短文件名產生需要文件(夾)名前綴字符長度大于等于9位。
2.當后綴大于等于4時,文件名前綴字符長度即使為1,也會產生短文件名。
目前IIS支持短文件名猜測的HTTP方法主要包括:DEBUG、OPTIONS、GET、POST、HEAD、TRACE六種。 IIS 8.0之后的版本只能通過OPTIONS和TRACE方法被猜測成功。
IIS的短文件名機制,可以暴力猜解短文件名,訪問構造的某個存在的短文件名,會返回404,訪問構造的某個不存在的短文件名,返回400。
漏洞復現
IIS8.0以下版本需要開啟ASP.NET支持,IIS大于等于8.0版本,即使沒有安裝ASP.NET,通過OPTIONS和TRACE方法也可以猜解成功。 以下通過開啟IIS6.0 ASP.NET后進行復現。
1)、在網站根目錄下添加aaaaaaaaaa.html文件
2) 進行猜解
IIS短文件漏洞局限性:
如果文件名本身太短也是無法猜解的;
此漏洞只能確定前6個字符,如果后面的字符太長、包含特殊字符,很難猜解;
如果文件名前6位帶空格,8.3格式的短文件名會補進,和真實文件名不匹配;
如果文件夾名前6位字符帶點".",掃描程序會認為是文件而不是文件夾,最終出現誤報;
不支持中文文件名,包括中文文件和中文文件夾。一個中文相當于兩個英文字符,故超過4個中文字會產生短文件名,但是IIS不支持中文猜測。
IIS短文件利用工具:https://github.com/irsdl/IIS-ShortName-Scanner
修復建議
1)從CMD命令關閉NTFS 8.3文件格式的支持
Windows Server 2003: (1代表關閉,0代表開啟) 關閉該功能:fsutil behavior set disable8dot3 1
Windows Server 2008 R2:查詢是否開啟短文件名功能:fsutil 8dot3name query
關閉該功能:fsutil 8dot3name set 1
不同系統關閉命令稍有區別,該功能默認是開啟的.
2)或從修改注冊表關閉NTFS 8.3文件格式的支持
快捷鍵Win+R打開命令窗口,輸入regedit打開注冊表窗口
找到路徑: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,將其中的 NtfsDisable8dot3NameCreation這一項的值設為 1,1代表不創建短文件名格式
以上兩種方式修改完成后,均需要重啟系統生效。
Note:此方法只能禁止NTFS8.3格式文件名創建,已經存在的文件的短文件名無法移除,需要重新復制才會消失。 例:將web文件夾的內容拷貝到另一個位置,如c:\www到c:\ww,然后刪除原文件夾,再重命名c:\ww到c:\www。
3、遠程代碼執行
IIS6.0 遠程代碼執行漏洞 CVE-2017-7269
漏洞介紹及成因
在Windows Server 2003的IIS6.0的WebDAV服務的ScStoragePathFromUrl函數存在緩存區溢出漏洞,攻擊者通過一個以"If: <http://"開始的較長header頭的PROPFIND請求執行任意代碼,控制目標主機。
漏洞復現
IIS6.0開啟WebDAV服務擴展:
使用IISPutScanner工具掃描目標地址:
發現目標存在WebDAV遠程代碼執行漏洞,使用網上公開的利用工具復現漏洞
批量檢測腳本: https://github.com/admintony/Windows-Exploit/tree/master/IIS6_WebDAV_Scanner
修復方案
關閉WebDAV服務擴展
4、解析漏洞
4.1、IIS6.0 解析漏洞
漏洞介紹及成因
基于文件名
IIS6.0默認不解析;號后面的內容,例如1.asp;.jpg會當成1.asp解析,相當于分號截斷。
基于文件夾
IIS6.0會將/*.asp/文件夾下的文件當成asp解析。
另外,IIS6.x除了會將擴展名為.asp的文件解析為asp之外,還默認會將擴展名為.asa,.cdx,.cer解析為asp,從網站屬性->主目錄->配置 可以看出,他們都是調用了asp.dll進行的解析。
修復方案
由于微軟并不認為這是一個漏洞,也沒有推出相關的修復補丁,因此我們需要自己設置:
取消網站目錄腳本執行權限
禁止創建文件夾
重命名上傳文件為時間戳+.jpg或隨機數+.jpg等
4.2、IIS7.0/7.5 解析漏洞
漏洞介紹及成因
IIS7.*在FastCGI運行php的情況下,php默認配置cgi.fix_pathinfo=1,導致在任意文件后面添加/.php,服務器就會解析成php。
IIS7.x版本 在Fast-CGI運行模式下,在任意文件,例:test.jpg后面加上/.php,會將test.jpg 解析為php文件。
修復建議
配置cgi.fix_pathinfo(php.ini中)為0并重啟php-cgi程序
二、Apache中間組件:
Apache是世界使用排名第一的Web服務器軟件。它可以運行在幾乎所有廣泛使用的計算機平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。它快速、可靠并且可通過簡單的API擴充,將Perl/Python等解釋器編譯到服務器中。
1、解析漏洞
1.1、未知擴展名解析漏洞
漏洞介紹及成因
Apache的解析漏洞依賴于一個特性: Apache默認一個文件可以有多個以點分割的后綴,當最右邊的后綴無法識別(不在默認一個文件可以有多個以點分割的后綴,當最右邊的后綴無法識別(不在mime.types文件),則繼續向左識別,直到識別到合法后綴才進行解析
漏洞復現
使用phpstudy進行復現
創建文件phpinfo.php.xxx
修改后綴名為.php.txt
實戰中可以上傳rar,owf等文件進行利用,如果上傳phpinfo.php.jpg,即使文件名中有.php,也會直接解析為jpg。因為Apache認識.jpg,停止繼續向左識別。
1.2、AddHandler導致的解析漏洞
漏洞介紹及成因
如果運維人員給.php后綴增加了處理器:
AddHandler application/x-httpd-php .php
那么,在有多個后綴的情況下,只要一個文件名中含有.php后綴,即被識別成PHP文件,沒必要是最后一個后綴。 利用這個特性,將會造成一個可以繞過上傳白名單的解析漏洞。
漏洞復現
即使最右邊的文件格式是在mime.types文件內,只要文件名中出現.php,就直接被解析為php。
修復建議
將AddHandler application/x-httpd-php .php的配置文件刪除。
1.3、Apache HTTPD 換行解析漏洞
漏洞介紹及成因
影響范圍:2.4.0~2.4.29版本
環境:phpstudy2014 Apache + PHP5.4n
此漏洞形成的根本原因,在于,正則表達式中, 正則表達式中,正則表達式中不僅匹配字符串結尾位置,也可以匹配\n 或 \r
在解析PHP時,1.php\x0A將被按照PHP后綴進行解析,導致繞過一些服務器的安全策略。
漏洞復現
<FilesMatch \.php$>SetHandler application/x-httpd-php </FilesMatch>測試代碼:
<html><body><form action="" method="post" enctype="multipart/form-data"><input type="file" name="file" /><input type="text" name="name" /><input type="submit" value="上傳文件" /></form></body> </html><?php if(isset($_FILES['file'])) {$name = basename($_POST['name']);$ext = pathinfo($name,PATHINFO_EXTENSION);if(in_array($ext, ['php', 'php3', 'php4', 'php5', 'phtml', 'pht'])) {exit('bad file'); } echo "ok"; move_uploaded_file($_FILES['file']['tmp_name'], './' . $name); }?>點擊Go后,測試成功。
限制:獲取文件名時不能用$_FILES[‘file’][‘name’],因為它會自動把換行去掉。
修復建議
升級到最新版本
或將上傳的文件重命名為為時間戳+隨機數+.jpg的格式并禁用上傳文件目錄執行腳本權限。
2、目錄遍歷
漏洞介紹及成因
由于配置錯誤導致的目錄遍歷
漏洞復現
修復建議
修改apache配置文件httpd.conf
找到Options+Indexes+FollowSymLinks +ExecCGI并修改成 Options-Indexes+FollowSymLinks +ExecCGI 并保存;
三、Nginx中間組件:
Nginx 是一款 輕量級的 Web 服務器、 反向代理 服務器及 電子郵件(IMAP/POP3)代理服務器,并在一個BSD-like 協議下發行。其特點是占有內存少, 并發能力強,事實上nginx的并發能力確實在同類型的網頁服務器中表現較好
1、文件解析
漏洞介紹及成因
對任意文件名,在后面添加/任意文件名.php的解析漏洞,比如原本文件名是test.jpg,可以添加test.jpg/x.php進行解析攻擊。
漏洞復現
在網站根目錄下新建一個n.jpg的文件,在里面寫入<?php phpinfo();?>
在瀏覽器中打開
利用文件解析漏洞,輸入192.168.220.129/n.jpg/2.php,解析成功
修復建議
將php.ini文件中的cgi.fix_pathinfo的值設為0.這樣php在解析1.php/1.jpg這樣的目錄時,只要1.jpg不存在就會顯示404;
2、目錄遍歷
漏洞簡介及成因
Nginx的目錄遍歷與Apache一樣,屬于配置方面的問題,錯誤的配置可到導致目錄遍歷與源碼泄露
當Nginx配置文件中,autoindex 的值為on時,將造成一個目錄遍歷漏洞。
漏洞復現
修復建議
將autoindex 的值為置為off。
3、CRLF注入
漏洞簡介及成因
CRLF時“回車+換行”(\r\n)的簡稱。
HTTP Header與HTTP Body時用兩個CRLF分隔的,瀏覽器根據兩個CRLF來取出HTTP內容并顯示出來。
通過控制HTTP消息頭中的字符,注入一些惡意的換行,就能注入一些會話cookie或者html代碼,由于Nginx配置不正確,導致注入的代碼會被執行。
漏洞復現
訪問頁面,抓包
請求加上/%0d%0a%0d%0a<img src=1 οnerrοr=alert(/xss/)>
出現彈窗
修復建議
Nginx的配置文件/etc/nginx/conf.d/error1.conf修改為使用不解碼的url跳轉。
4、目錄穿越
漏洞簡介及成因
Nginx在配置別名(Alias)的時候,如果忘記加/,將造成一個目錄穿越漏洞。
錯誤的配置文件示例(原本的目的是為了讓用戶訪問到C:/WWW/home/目錄下的文件):
漏洞復現
location /files {autoindex on;alias c:/WWW/home/;}訪問:http://127.0.0.1/file../
修復建議
只需要保證location和alias的值都有后綴/或都沒有/這個后綴。
四、Tomcat中間組件:
Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用 服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。對于一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache 服務器,可利用它響應 HTML ( 標準通用標記語言下的一個應用)頁面的訪問請求。實際上Tomcat是Apache 服務器的擴展,但運行時它是獨立運行的,所以當運行tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的。
1、遠程代碼執行
漏洞簡介及成因
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,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。彈出計算器。
漏洞修復
1)檢測當前版本是否在影響范圍內,并禁用PUT方法。
2)更新并升級至最新版。
2、弱口令 && 后臺getshell漏洞
漏洞簡介及成因
Tomcat 支持在后臺部署war文件,可以直接將webshell部署到web目錄下。
若后臺管理頁面存在弱口令,則可以通過爆破獲取密碼。
漏洞修復
1)在系統上以低權限運行Tomcat應用程序。創建一個專門的 Tomcat服務用戶,該用戶只能擁有一組最小權限(例如不允許遠程登錄)。
2)增加對于本地和基于證書的身份驗證,部署賬戶鎖定機制(對于集中式認證,目錄服務也要做相應配置)。在CATALINA_HOME/conf/web.xml文件設置鎖定機制和時間超時限制。
3)以及針對manager-gui/manager-status/manager-script等目錄頁面設置最小權限訪問限制。
4)后臺管理避免弱口令。
五、jBoss中間組件:
jBoss是一個基于J2EE的開發源代碼的應用服務器。 JBoss代碼遵循LGPL許可,可以在任何商業應用中免費使用。JBoss是一個管理EJB的容器和服務器,支持EJB1.1、EJB 2.0和EJB3的規范。但JBoss核心服務不包括支持servlet/JSP的WEB容器,一般與Tomcat或Jetty綁定使用。
1、反序列化漏洞
漏洞介紹及成因
Java序列化,簡而言之就是把java對象轉化為字節序列的過程。而反序列話則是再把字節序列恢復為java對象的過程,然而就在這一轉一變得過程中,程序員的過濾不嚴格,就可以導致惡意構造的代碼的實現。
漏洞復現
靶機啟動jboss。
攻擊機訪問靶機服務,訪問url/invoker/readonly。
返回500,說明頁面存在,此頁面有反序列化漏洞:
可以使用burpsuite抓包進行反序列化攻擊
漏洞修復
有效解決方案:升級到JBOSS AS7版本臨時解決方案:
1)不需要http-invoker.sar 組件的用戶可直接刪除此組件;
2)用于對 httpinvoker 組件進行訪問控制。
2、war后門文件部署
漏洞介紹及成因
jBoss后臺管理頁面存在弱口令,通過爆破獲得賬號密碼。登陸后臺上傳包含后門的war包。
3、JMX Console未授權訪問
漏洞介紹及成因
JMX Console默認存在未授權訪問,直接點擊JBoss主頁中的JMX Console鏈接進入JMX Console頁面
漏洞修復
1、增加密碼措施,防止未授權訪問。
2、或刪除JMX Console,后重啟JBoss
C:\jboss-6.1.0.Final\common\deploy\jmx-console.war
六、WebLogic中間組件:
WebLogic是美國Oracle公司出品的一個applicationserver,確切的說是一個基于JAVAEE架構的中間件,WebLogic是用于開發、集成、部署和管理大型分布式Web應用、網絡應用和數據庫應用的Java應用服務器。將Java的動態功能和Java Enterprise標準的安全性引入大型網絡應用的開發、集成、部署和管理之中。
1、反序列化漏洞
漏洞簡介及成因
Java序列化,簡而言之就是把java對象轉化為字節序列的過程。而反序列話則是再把字節序列恢復為java對象的過程,然而就在這一轉一變得過程中,程序員的過濾不嚴格,就可以導致惡意構造的代碼的實現。
漏洞復現
使用vulhub實驗環境,啟動實驗環境,訪問靶機,抓包,修改數據包。
Kali啟動監聽。
發送數據包成功后,拿到shell。
漏洞修復
1)升級Oracle 10月份補丁。
2)對訪問wls-wsat的資源進行訪問控制。
2、SSRF
漏洞簡介及成因
Weblogic 中存在一個SSRF漏洞,利用該漏洞可以發送任意HTTP請求,進而攻擊內網中redis、fastcgi等脆弱組件。
漏洞復現
使用vulhub實驗環境,啟動環境。
訪問http://192.168.139.129:7001/uddiexplorer/SearchPublicRegistries.jsp。
用burp抓包,修改請求。
啟動nc監聽端口。拿到shell。
漏洞修復
方法一:
以修復的直接方法是將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–啟應用)
3、任意文件上傳
漏洞簡介及成因
通過訪問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。
然后點擊安全 -> 增加,然后上傳 webshell ,這里我上傳一個 jsp 大馬。
上傳后,查看返回的數據包,其中有時間戳:
可以看到時間戳為1543145154632。
訪問http://192.168.139.129:7001/ws_utc/css/config/keystore/1543145154632_lele.jsp。
可以進行文件管理、文件上傳、系統命令執行等。
漏洞修復
方案1:使用Oracle官方通告中的補丁鏈接
方案2:
1)進入Weblogic Server管理控制臺;
2)domain設置中,啟用”生產模式”。
4、弱口令&& 后臺getshell
漏洞簡介及成因
由于WebLogic后臺存在弱口令,可直接登陸后臺上傳包含后門的war包。
漏洞修復
防火墻設置端口過濾,也可以設置只允許訪問后臺的IP列表,避免后臺弱口令。
七、其它中間件相關漏洞
1、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`; ?>'漏洞修復
更改默認端口
2、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。
抓包,修改包。
漏洞修復
三種方法:
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的負擔。
end_file%3d/etc/passwd±n)等參數時,會導致源代碼泄露和任意代碼執行。
此漏洞影響php-5.3.12以前的版本,mod方式、fpm方式不受影響。
總結
以上是生活随笔為你收集整理的Web中间件漏洞总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pug教程-从入门到入坟
- 下一篇: html 转 pug 在线,pug -