Web中间件漏洞
Web中間件漏洞
1.IIS漏洞
1.簡介
? 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服務器所在機器藍屏或讀取其內存中的機密數據
2. PUT漏洞
漏洞介紹及成因
IIS Server 在 Web 服務擴展中開啟了 WebDAV ,配置了可以寫入的權限,造成任意文件上傳。
版本: IIS6.0
漏洞修復
關閉WebDAV 和寫權限
3. 短文件名猜解
漏洞介紹及成因
IIS的短文件名機制,可以暴力猜解短文件名,訪問構造的某個存在的短文件名,會返回404,訪問構造的某個不存在的短文件名,返回400。
漏洞修復
修復方法:
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。
局限性
此漏洞只能確定前6個字符,如果后面的字符太長、包含特殊字符,很難猜解;
如果文件名本身太短(無短文件名)也是無法猜解的;
如果文件名前6位帶空格,8.3格式的短文件名會補進,和真實文件名不匹配
4.遠程代碼執行
漏洞介紹及成因
在IIS6.0處理PROPFIND指令的時候,由于對url的長度沒有進行有效的長度控制和檢查,導致執行memcpy對虛擬路徑進行構造的時候,引發棧溢出,從而導致遠程代碼執行。
漏洞環境
在windows server 2003 r2 32位上安裝iis6.0
漏洞修復
1)關閉 WebDAV 服務
2) 使用相關防護設備
5. 解析漏洞
漏洞介紹及成因
IIS 6.0 在處理含有特殊符號的文件路徑時會出現邏輯錯誤,從而造成文件解析漏洞。這一漏洞有兩種完全不同的利用方式:
/test.asp/test.jpgtest.asp;.jpgIIS7.5 文件解析漏洞
test.jpg/.phpURL 中文件后綴是 .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組件過濾
2.Apache漏洞
1.Apache簡介
? Apache 是世界使用排名第一的Web 服務器軟件。它可以運行在幾乎所有廣泛使用的 計算機平臺上,由于其 跨平臺 和安全性被廣泛使用 是最流行的Web服務器端軟件之一。它快速、可靠并且可通過簡單的API擴充,將 Perl/ Python等 解釋器編譯到服務器中。
2.解析漏洞
漏洞介紹及成因
Apache文件解析漏洞與用戶的配置有密切關系,嚴格來說屬于用戶配置問題。
Apache文件解析漏洞涉及到一個解析文件的特性:
Apache默認一個文件可以有多個以點分隔的后綴,當右邊的后綴無法識別(不在mime.tyoes內),則繼續向左識別,當我們請求這樣一個文件:shell.php.xxx.yyy 發現后綴是php,交給php處理這個文件
漏洞修復
將AddHandler application/x-httpd-php .php的配置文件刪除
3.目錄遍歷
漏洞介紹及成因
由于配置錯誤導致的目錄遍歷
漏洞修復
修改apache配置文件httpd.conf
找到Options+Indexes+FollowSymLinks +ExecCGI并修改成 Options-Indexes+FollowSymLinks +ExecCGI 并保存;
3.Nginx漏洞
1.Nginx簡介
? Nginx 是一款 輕量級的 Web 服務器、 反向代理 服務器及 電子郵件(IMAP/POP3)代理服務器,并在一個BSD-like 協議下發行。其特點是占有內存少, 并發能力強,事實上nginx的并發能力確實在同類型的網頁服務器中表現較
2.解析漏洞
漏洞介紹及成因
對任意文件名,在后面添加/任意文件名.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刪除,解析成功
漏洞修復
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
3.目錄遍歷
漏洞簡介及成因
Nginx的目錄遍歷與Apache一樣,屬于配置方面的問題,錯誤的配置可到導致目錄遍歷與源碼泄露‘
漏洞修復
將/etc/nginx/sites-avaliable/default里的autoindex on改為autoindex off
4.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跳轉
5.目錄穿越
漏洞簡介及成因
Nginx反向代理,靜態文件存儲在/home/下,而訪問時需要在url中輸入files,配置文件中/files沒有用/閉合,導致可以穿越至上層目錄
漏洞修復
Nginx的配置文件/etc/nginx/conf.d/error2.conf的/files使用/閉合
4.Tomcat漏洞分析
1.Tomcat簡介
? Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用 服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。對于一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache 服務器,可利用它響應 HTML ( 標準通用標記語言下的一個應用)頁面的訪問請求。實際上Tomcat是Apache 服務器的擴展,但運行時它是獨立運行的,所以當運行tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的。
2.遠程代碼執行
漏洞簡介及成因
? 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)更新并升級至最新版
3.war后門文件部署
漏洞簡介及成因
Tomcat 支持在后臺部署war文件,可以直接將webshell部署到web目錄下。
若后臺管理頁面存在弱口令,則可以通過爆破獲取密碼。
漏洞修復
1)在系統上以低權限運行Tomcat應用程序。創建一個專門的 Tomcat服務用戶,該用戶只能擁有一組最小權限(例如不允許遠程登錄)。
2)增加對于本地和基于證書的身份驗證,部署賬戶鎖定機制(對于集中式認證,目錄服務也要做相應配置)。在CATALINA_HOME/conf/web.xml文件設置鎖定機制和時間超時限制。
3)以及針對manager-gui/manager-status/manager-script等目錄頁面設置最小權限訪問限制。
4)后臺管理避免弱口令
5.jBoss漏洞分析
1.jBoss簡介
? jBoss是一個基于J2EE的開發源代碼的應用服務器。 JBoss代碼遵循LGPL許可,可以在任何商業應用中免費使用。JBoss是一個管理EJB的容器和服務器,支持EJB1.1、EJB 2.0和EJB3的規范。但JBoss核心服務不包括支持servlet/JSP的WEB容器,一般與Tomcat或Jetty綁定使用。
2.反序列化漏洞
漏洞介紹及成因
? Java序列化,簡而言之就是把java對象轉化為字節序列的過程。而反序列話則是再把字節序列恢復為java對象的過程,然而就在這一轉一變得過程中,程序員的過濾不嚴格,就可以導致惡意構造的代碼的實現
漏洞修復
有效解決方案:升級到JBOSS AS7版本臨時解決方案:
1)不需要http-invoker.sar 組件的用戶可直接刪除此組件;
2)用于對 httpinvoker 組件進行訪問控制
3.war后門文件部署
漏洞介紹及成因
jBoss后臺管理頁面存在弱口令,通過爆破獲得賬號密碼。登陸后臺上傳包含后門的war包
6.WebLogic漏洞分析
1.WebLogic簡介
? WebLogic是美國Oracle公司出品的一個applicationserver,確切的說是一個基于JAVAEE架構的中間件,WebLogic是用于開發、集成、部署和管理大型分布式Web應用、網絡應用和數據庫應用的Java應用服務器。將Java的動態功能和Java Enterprise標準的安全性引入大型網絡應用的開發、集成、部署和管理之中。
2.反序列化漏洞
漏洞簡介及成因
? Java序列化,簡而言之就是把java對象轉化為字節序列的過程。而反序列話則是再把字節序列恢復為java對象的過程,然而就在這一轉一變得過程中,程序員的過濾不嚴格,就可以導致惡意構造的代碼的實現。
漏洞修復
1)升級Oracle 10月份補丁。
2)對訪問wls-wsat的資源進行訪問控制
3.SSRF
漏洞簡介及成因
Weblogic 中存在一個SSRF漏洞,利用該漏洞可以發送任意HTTP請求,進而攻擊內網中redis、fastcgi等脆弱組件。
漏洞修復
方法一:
以修復的直接方法是將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–啟應用)
4.任意文件上傳
漏洞簡介及成因
? 通過訪問config.do配置頁面,先更改Work Home工作目錄,用有效的已部署的Web應用目錄替換默認的存儲JKS Keystores文件的目錄,之后使用”添加Keystore設置”的功能,可上傳惡意的JSP腳本文件。
漏洞修復
方案1:
使用Oracle官方通告中的補丁鏈接:
http://www.oracle.com/technetwork/security-advisory/cpujul2018-4258247.htmlhttps://support.oracle.com/rs?type=doc&id=2394520.1方案2:
1)進入Weblogic Server管理控制臺;
2)domain設置中,啟用”生產模式”。
5.war后門文件部署
漏洞簡介及成因
由于WebLogic后臺存在弱口令,可直接登陸后臺上傳包含后門的war包
漏洞修復
防火墻設置端口過濾,也可以設置只允許訪問后臺的IP列表,避免后臺弱口令
7.其它中間件相關漏洞
1 .FastCGI未授權訪問、任意命令執行
漏洞簡介及成因
服務端使用fastcgi協議并對外網開放9000端口,可以構造fastcgi協議包內容,實現未授權訪問服務端.php文件以及執行任意命令
漏洞修復
更改默認端口
2.PHPCGI遠程代碼執行
漏洞簡介及成因
? 在apache調用php解釋器解釋.php文件時,會將url參數傳我給php解釋器,如果在url后加傳命令行開關(例如-s、-d 、-c或-dauto_prepend_file%3d/etc/passwd±n)等參數時,會導致源代碼泄露和任意代碼執行。
此漏洞影響php-5.3.12以前的版本,mod方式、fpm方式不受影響。
漏洞修復
三種方法:
1)升級php版本;(php-5.3.12以上版本);
2)在apache上做文章,開啟url過濾,把危險的命令行參數給過濾掉,由于這種方法修補比較簡單,采用比較多吧。
具體做法:
修改http.conf文件,找到<Directory/>增加以下三行RewriteEngine onRewriteCond %{QUERY_STRING} ^(%2d|-)[^=]+$ [NC]RewriteRule ^(.*) $1? [L]重啟一下apache即可,但是要考慮到,相當于每次request就要進行一次url過濾,如果訪問量大的話,可能會增加apache的負擔。
3)打上php補丁。
補丁下載地址:https://eindbazen.net/2012/05/php-cgi-advisory-cve-2012-1823/總結
- 上一篇: 如何实现图片的上传-(上传到本地)
- 下一篇: 五分钟学Java:一篇文章带你搞懂spr