*本文將主要說明:Web中間件常見漏洞的產生原因以及修復方案
什么是Web中間件?
百度百科是這樣解釋的:中間件是介於應用系統和系統軟件之間的一類軟件,它使用系統軟件所提供的基礎服務(功能),銜接網絡上應用系統的各個部分或不同的應用,能夠達到資源共享、功能共享的目的。中間件是一種獨立的系統軟件服務程序,分布式應用軟件借助這種軟件在不同的技術之間共享資源,中間件位於客戶機服務器的操作系統之上,管理計算資源和網絡通信。
中間件=平台+通信
通俗的理解是這樣的:中間件是提供系統軟件和應用軟件之間連接的軟件,以便於軟件各部件之間的溝通。Apache的Tomcat、IBM公司的WebSphere、BEA公司的WebLogic、Kingdee公司的Apusic都屬於中間件。中間件技術已經不局限於應用服務器、數據庫服務器。圍繞中間件,在商業中間件及信息化市場主要存在微軟陣營、Java陣營、開源陣營。
一、IIS中間組件
IIS的安全脆弱性曾長時間被業內詬病,一旦IIS出現遠程執行漏洞威脅將會非常嚴重。遠程執行代碼漏洞存在於 HTTP 協議堆棧 (HTTP.sys) 中,當 HTTP.sys 未正確分析經特殊設計的 HTTP 請求時會導致此漏洞。成功利用此漏洞的攻擊者可以在系統帳戶的上下文中執行任意代碼,可以導致IIS服務器所在機器藍屏或讀取其內存中的機密數據.
1. PUT漏洞
漏洞成因:IISServer在Web服務擴展中開啟WebDAV,配置了可以寫入權限,造成任意文件上傳,受影響版本:IIS6.0
漏洞修復:關閉WebDAV和寫入權限。
2. 短文件名猜解
漏洞成因:在IIS6.0處理PROPFIND指令的時候,由於對url的長度沒有進行有效的長度控制和檢查,導致執行memcpy對虛擬路徑進行構造的時候,引發棧溢出,從而導致遠程代碼執行。
漏洞修復:關閉WebDAV服務;使用相關防護設備。
3. 解析漏洞
漏洞成因:IIS 6.0在處理含有特殊符號的文件路徑時會出現邏輯錯誤,從而造成文件解析漏洞。
二、Apache中間組件:
1. 解析漏洞
漏洞成因:Apache文件解析漏洞與用戶的配置有密切關系,嚴格來說屬於用戶配置問題。,Apache文件解析漏洞涉及到一個解析文件的特性:Apache默認一個文件可以有多個以點分隔的后綴,當右邊的后綴無法識別,不在mime.tyoes內,則繼續向左識別,當請求這樣一個文件:shell.xxx.yyy,當yyy無法識別,則向左,當xxx也無法識別,繼續向左,發現后綴為php,交給php處理這個文件。
漏洞修復:將AddHandler application/x-httpd-php .php配置文件刪除.
2. 目錄遍歷
漏洞成因:由於配置錯誤導致的目錄遍歷
漏洞修復:修改apache配置文件httpd.conf找到Options+Indexes+FollowSymLinks+ExecCGI並修改成 Options-Indexes+FollowSymLinks +ExecCGI 並保存。
三、Nginx中間組件:
1. 文件解析
漏洞成因:對任意文件名,在后面添加/任意文件名.php的解析漏洞,比如原本文件名是test.jpg,可以添加test.jpg/x.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。
2. 目錄遍歷
漏洞修復:Nginx目錄遍歷與Apache一樣,屬於配置方面的問題,錯誤的配置可到導致目錄遍歷與源碼泄露
漏洞修復::將/etc/nginx/sites-avaliable/default里的autoindex on改為autoindex off.
3. CRLF注入
漏洞修復:CRLF時“回車+換行”(\r\n)鍵的簡稱,HTTPHeader與HTTPBody時用兩個CRLF分隔的,瀏覽器根據兩個CRLF來取出HTTP內容並顯示出來,通過控制HTTP消息頭中的字符,注入惡意換行,就能注入一些會話cookie或者html代碼,由於Nginx配置不正確,導致注入的代碼會被執行。
漏洞修復::Nginx的配置文件/etc/nginx/conf.d/error1.conf修改為使用不解碼的url跳轉.
4. 目錄穿越
漏洞修復:Nginx反向代理,靜態文件存儲在/home/下,而訪問時需要在url中輸入files,配置文件中/files沒有用/閉合,導致可以穿越至上層目錄
漏洞修復:Nginx配置文件/etc/nginx/conf.d/error2.conf的/files使用/閉合.
四、Tomcat中間組件:
1. 遠程代碼執行
漏洞修復:Tomcat運行在Windows主機上,且啟用了 HTTP PUT請求方法,可通過構造的攻擊請求向服務器上傳包含任意代碼JSP文件,造成任意代碼執行,受影響版本:Apache Tomcat 7.0.0 – 7.0.81
漏洞修復:
1.檢測當前版本是否在影響范圍內,並禁用PUT方法;
2.更新並升級至最新版.
2. war后門文件部署
漏洞修復:Tomcat支持在后台部署war文件,可以直接將webshell部署到web目錄下,若后台管理頁面存在弱口令,則可以通過爆破獲取密碼
漏洞修復:
1.在系統上以低權限運行Tomcat應用程序。創建一個專門的Tomcat服務用戶,該用戶只能擁有一組最小權限,例如不允許遠程登錄;
2.增加對於本地和基於證書的身份驗證,部署賬戶鎖定機制,對於集中式認證,目錄服務也要做相應配置,在CATALINA_HOME/conf/web.xml文件設置鎖定機制和時間超時限制;
3.以及針對manager-gui/manager-status/manager-script等目錄頁面設置最小權限訪問限制;
4.后台管理避免弱口令.
五、jBoss中間組件:
反序列化漏洞
漏洞修復:Java序列化,簡而言之就是把java對象轉化為字節序列的過程。而反序列話則是再把字節序列恢復為java對象的過程,然而就在這一轉一變得過程中,程序員的過濾不嚴格,就可以導致惡意構造的代碼的實現
漏洞修復:
1.不需要http-invoker.sar 組件的用戶可直接刪除此組件;
2.用於對httpinvoker組件進行訪問控制.
war后門文件部署
漏洞修復:jBoss后台管理頁面存在弱口令,通過爆破獲得賬號密碼,登陸后台上傳包含后門war包。
六、WebLogic中間組件:
1. 反序列化漏洞
漏洞修復:Java序列化,簡而言之就是把java對象轉化為字節序列的過程。而反序列話則是再把字節序列恢復為java對象的過程,然而就在這一轉一變得過程中,程序員的過濾不嚴格,就可以導致惡意構造的代碼的實現
漏洞修復:
1.升級Oracle 10月份補丁;
2.對訪問wls-wsat的資源進行訪問控制.
2. SSRF
漏洞修復:Weblogic中存在一個SSRF漏洞,利用該漏洞可以發送任意HTTP請求,進而攻擊內網中redis、fastcgi等脆弱組件
漏洞修復:
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–啟應用).
3. 任意文件上傳
漏洞修復:通過訪問config.do配置頁面,先更改WorkHome工作目錄,用有效的已部署的Web應用目錄替換默認的存儲JKSKeystores文件的目錄,之后使用”添加Keystore設置”的功能,可上傳惡意的JSP腳本文件
漏洞修復:
1.使用Oracle官方通告中補丁鏈接:
http://www.oracle.com/technetwork/security-advisory/cpujul2018-4258247.html
2:進入Weblogic Server管理控制台,domain設置中,啟用”生產模式”.
4. war后門文件部署
漏洞修復:由於WebLogic后台存在弱口令,可直接登陸后台上傳包含后門的war包
漏洞修復:防火牆設置端口過濾,也可以設置只允許訪問后台的IP列表,避免后台弱口令.
七、其它中間件相關漏洞
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版本;
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/.
總結可能存在有誤差,需自行百度補充。
可用於安全行業面試知識點。