黑客攻防之全程追蹤入侵JSP網(wǎng)站服務(wù)器
現(xiàn)在用JSP制作的電子商務(wù)網(wǎng)站多如牛毛。但是對于JSP網(wǎng)站而言,安全性真的能夠讓人放心嗎?面對層出不窮的黑客攻擊和病毒襲擊,JSP網(wǎng)站的服務(wù)器能夠比其他網(wǎng)站的服務(wù)器器更加安全嗎?前段時(shí)間,應(yīng)朋友之邀,我對他們托管的三臺服務(wù)器的主機(jī)進(jìn)行了測試,發(fā)現(xiàn)了JSP網(wǎng)站存在的幾個(gè)問題。
入侵測試第一步:掃描
掃描是入侵的第一步,它可以讓你對即將入侵的目標(biāo)有一個(gè)全面的了解。同時(shí)掃描還有可能發(fā)現(xiàn)掃描對象的漏洞,為入侵提供一個(gè)指導(dǎo)方向。
朋友的兩臺服務(wù)器為Linux,一臺為Windows系統(tǒng),在路由器后面還有一臺Cisco PIX 525對三臺主機(jī)進(jìn)行保護(hù),只允許外部用戶連接不同主機(jī)的部分端口,例如80,25,110。
根據(jù)檢測,Cisco PIX防火墻過濾規(guī)則設(shè)置比較嚴(yán)密,基本上沒有多余端口允許外部用戶訪問。細(xì)致分析后,我發(fā)現(xiàn),目標(biāo)網(wǎng)絡(luò)的主機(jī)通過地址轉(zhuǎn)換來提供對外訪問,內(nèi)部使用192.168.*.*地址段。
先不考慮那么多,找個(gè)掃描軟件來看看主機(jī)的安全情況。我找來了X-Scan,在外部對這幾臺主機(jī)進(jìn)行了端口掃描之后,生成了一份關(guān)于端口的報(bào)表,發(fā)現(xiàn)其中有一個(gè)Tomcat服務(wù)器,解釋的自然就是JSP文件了。
小知識:
Tomcat Web服務(wù)器是一款開源的適合于各種平臺的免費(fèi)網(wǎng)絡(luò)服務(wù)器。eBay.com與Dell 計(jì)算機(jī)等知名網(wǎng)站都采用或者曾經(jīng)采用Tomcat的container容器執(zhí)行Servlet 與JSP。
看來,只能通過Web服務(wù)進(jìn)行間接攻擊。首先檢查TCP 80端口的服務(wù)。我發(fā)現(xiàn),新聞搜索的功能是由端口8080提供的,輸入http:// 202.103.*.168:8080/之后,得到了一個(gè)系統(tǒng)管理登錄頁面,簡單地測試了一下,輸入“test/test”作為“用戶名/口令”,似乎認(rèn)證成功,但實(shí)際上并不能進(jìn)入下一個(gè)頁面。
專家支招:對于掃描來說,它很容易暴露我們網(wǎng)站的弱勢方面。應(yīng)對掃描,我們可以架設(shè)一個(gè)蜜罐來誤導(dǎo)掃描者,蜜罐可以讓系統(tǒng)偽裝成到處是漏洞,從而遮蔽真正存在的漏洞,也可以偽裝成沒有任何漏洞,讓入侵者不知道從何入手(在去年第47期《電腦報(bào)》中,我們對制作蜜罐進(jìn)行了介紹)。
入侵測試第二步:漏洞嘗試
嘗試JSP各種已知漏洞,這個(gè)是在掃描結(jié)果中無法獲得任何有效信息指導(dǎo)入侵的情況下,被迫使用的方法。這種方法雖然效果不一定好,但是往往能夠起到意想不到的效果,從而讓入侵繼續(xù)下去。
我進(jìn)行了JSP大小寫的測試,因?yàn)镴SP對大小寫是敏感的,Tomcat只會將小寫的jsp后綴的文件當(dāng)作是正常的JSP文件來執(zhí)行,如果大寫了就會引起Tomcat將index.JSP當(dāng)作是一個(gè)可以下載的文件讓客戶下載,若干測試后,我發(fā)現(xiàn)這個(gè)方法并不奏效,可能管理員已經(jīng)在服務(wù)器軟件的網(wǎng)站上下載了最新的補(bǔ)丁。
我發(fā)現(xiàn)大部分的JSP應(yīng)用程序在當(dāng)前目錄下都會有一個(gè)WEB-INF目錄,這個(gè)目錄通常存放的是JavaBeans編譯后的class 文件,如果不給這個(gè)目錄設(shè)置正常的權(quán)限,所有的class就會曝光。
而采用JAD軟件對下載的class文件反編譯后,原始的Java文件甚至變量名都不會改變。如果網(wǎng)頁制作者開始把數(shù)據(jù)庫的用戶名密碼都寫在了Java代碼中,反編譯后,說不定還能看到數(shù)據(jù)庫的重要信息。那么,怎么得到這些文件呢?
Tomcat版本的缺省“/admin”目錄是很容易訪問的。輸入:http://202.103.*.168/admin/,管理員目錄赫然在列。默認(rèn)情況下,“User Name”應(yīng)該是admin,“Password”應(yīng)該是空,輸入用戶和密碼后,并點(diǎn)擊“Login”按鈕,不能進(jìn)入,陸續(xù)使用了幾個(gè)比較常見的密碼,也無濟(jì)于事。 默認(rèn)情況下,Tomcat打開了目錄瀏覽功能,而一般的管理員又很容易忽視這個(gè)問題。也就是說,當(dāng)要求的資源直接映射到服務(wù)器上的一個(gè)目錄時(shí),由于在目錄中缺少缺省的index.jsp等文件,Tomcat將不返回找不到資源的404錯(cuò)誤,而是返回HTML格式的目錄列表。
想到了這點(diǎn)后,我打開剛才用X-Scan掃描后生成的報(bào)表文件,找到“安全漏洞及解決方案”欄目,看到了幾個(gè)可能會有CGI漏洞的目錄。在地址欄輸入其中之一一些很典型的JSP文件和JS文件都列出來了。大喜之下,隨便選擇一個(gè)文件,點(diǎn)擊右鍵,然后,選擇“用FlashGet下載全部鏈接”選項(xiàng),于是,這個(gè)目錄下的所有文件都被我下載到了本地。
其中最有價(jià)值的是一個(gè)名字為dbconn.js的文件,看來程序設(shè)計(jì)者是為了方便省事,把一些數(shù)據(jù)庫連接的密碼和連接地址都寫在里面了(這是很多開發(fā)者可能會忽略的問題)。不過,我現(xiàn)在最關(guān)心的還是Tomcat的管理員密碼。
簡單破解后,發(fā)現(xiàn)Tomcat系統(tǒng)中的admin用戶使用了非常簡單的口令:web123456。利用這個(gè)漏洞,有了這個(gè)密碼,下面的工作就相對簡單了。
專家支招:對于網(wǎng)站中的漏洞,我們要即時(shí)打上各種補(bǔ)丁,然后對幾個(gè)已知的安全弱勢方面進(jìn)行加強(qiáng),比如我們可以將“/admin”目錄進(jìn)行修改,讓入侵者不容易找到管理路徑。然后關(guān)閉Tomcat的目錄瀏覽功能,讓入侵者的漏洞嘗試徹底失敗。
入侵測試第三步:注入攻擊
很多網(wǎng)站對于注入防范做得都很不到位,注入攻擊可以讓網(wǎng)站暴露出自己的數(shù)據(jù)庫信息以至于暴露數(shù)據(jù)庫表中的管理員賬號和密碼。
重新登錄Tomcat的管理界面,點(diǎn)擊“Context (Admin)”這個(gè)鏈接,列出了WEB目錄下的一些文件和目錄的名稱,現(xiàn)在就可以對Tomcat的Context進(jìn)行管理,例如查看、增加、刪除Context。
回到Tomcat的管理界,我發(fā)現(xiàn)了一個(gè)上傳文件的組件,并且網(wǎng)站還有一個(gè)論壇。于是,我編寫了一個(gè)input.jsp文件,并將它當(dāng)作一般的Web 應(yīng)用程序,通過上傳的組件上傳到對方的WEB目錄里。打開input.jsp這個(gè)頁面網(wǎng)頁對查詢窗體不會做任何輸入驗(yàn)證,但是對用戶名稱的窗體則會。將數(shù)據(jù)填入窗體,來測試一下網(wǎng)頁的漏洞,例子如下:
(1)將<script language="javascript">alert(document.cookie)</script>填入搜索字段,以便用XSS 來顯示進(jìn)程的cookie。
(2)將<iframe src=http://jakarta.apache.org></iframe>填入搜索字段來示范HTML 注入攻擊。
通過這些方法,我得到了一些論壇的用戶信息,當(dāng)然,這些都是針對JSP做的一些測試,以驗(yàn)證Web應(yīng)用程序中的所有輸入字段。有了用戶信息,卻沒有密碼,怎么辦?在登錄時(shí),我發(fā)現(xiàn)了一個(gè)8888端口,這會是個(gè)什么服務(wù)呢?
專家支招:在網(wǎng)頁連接數(shù)據(jù)庫的設(shè)計(jì)中,網(wǎng)頁設(shè)計(jì)人員要加入對一些敏感符號的審核機(jī)制,屏蔽一些在數(shù)據(jù)庫中有作用的符號,這可以在很大程度上成功防御注入攻擊。
入侵第四步:攻其“軟肋”
【編輯推薦】