JSP安全性初探
2020-06-01 23:29:04
供稿:網(wǎng)友
綜述:有幾種辦法可以暴露JSP代碼,不過經(jīng)過大量測(cè)試,這和WEB SERVER的配置有絕對(duì)的關(guān)系,就拿IBM Websphere Commerce Suite而言,還有別的方法看到JSP源代碼,但相信是IBM HTTP SERVER的配置造成的。
如果想發(fā)現(xiàn)JSP暴露源代碼的BUG的話,首先需要了解JSP的工作原理。
JSP和其它的PHP、ASP工作機(jī)制不一樣,雖然它也是一種web編程語言。首次調(diào)用JSP文件其實(shí)是執(zhí)行一個(gè)編譯為Servlet的過程。注意我們就要在這上邊做文章,明白嗎?我們要干的事情是,讓JSP在編譯前被瀏覽器當(dāng)作一個(gè)文本或其它文件發(fā)送給客戶端,或在JSP裝載的時(shí)候不去執(zhí)行編譯好的Servlet而直接讀JSP的內(nèi)容并發(fā)送給客戶端。
明白了道理及所要達(dá)到的目的就好下手了,仔細(xì)觀察調(diào)用及返回過程可以發(fā)現(xiàn):JSP被編譯為了Servlet保存在指定的目錄下,如:http://www.x.com/lovehacker/index.jsp很可能存放在X:/IBM/WAServer/temp/default_host/default_app/pagecompile/_lovehacker_index_xjsp.class,這是已經(jīng)編譯過的index.jsp。_lovehacker_index_xjsp.class顯然是我們不需要的文件,而且我們得到它的可能性也不大,我們要干的是不去執(zhí)行_lovehacker_index_xjsp.class而是直接讀index.jsp的內(nèi)容。
據(jù)分析最初的xxx.JSP暴露源代碼也是因?yàn)榍斑叺倪@種想法造成的,本來目錄中存放了一個(gè)_xxx_xjsp.class,但訪問xxx.JSP本來是個(gè)合法的請(qǐng)求,而又找不到對(duì)應(yīng)的Servlet所以就把xxx.JSP當(dāng)做一個(gè)文本或其它文件發(fā)送給了用戶。
也許這是因?yàn)镮BM HTTP SERVER配置不當(dāng)造成的,但相信如果能成功的話,會(huì)有一種成就感,很爽的哦!
順便說一下暴露文件存放真實(shí)路徑可能會(huì)帶來的危害:
1.先會(huì)讓入侵者了解磁盤配置情況
2.明的入侵者甚至可以分析出管理員的水平高低
3.為入侵者修改你的首頁提供了方便(起碼不用在找你的WEB目錄在那個(gè)磁盤了)
4.可能被利用一些其它的CGI的漏洞查找到Web目錄下的文件如XX.ASP、XX.JSP、XX.PHP等
JSP安全問題主要有哪幾方面?
本節(jié)重點(diǎn)在于對(duì)jsp安全問題進(jìn)行分類闡述和提出解決的建議,所以每種類型的安全問題只采用了一個(gè)例子,對(duì)于其它各種漏洞的具體細(xì)節(jié)如涉及到何種軟件版本何種操作系統(tǒng)等就不一一進(jìn)行闡述了,有興趣的讀者可以到j(luò)sp愛好者(http://jspbbs.yeah.net)或者國外的安全站點(diǎn)(http://www.securityfocus.com)進(jìn)行查看和參考。
根據(jù)目前已經(jīng)發(fā)現(xiàn)的jsp安全問題,不妨將它們分為以下幾類,源代碼暴露類、遠(yuǎn)程程序執(zhí)行類和其他類別, 下面來看看具體的東西吧。
一、源代碼暴露類
源代碼暴露類別主要指的是程序源代碼會(huì)以明文的方式返回給訪問者。
我們知道不管是jsp還是asp、php等動(dòng)態(tài)程序都是在服務(wù)器端執(zhí)行的,執(zhí)行后只會(huì)返回給訪問者標(biāo)準(zhǔn)的html 等代碼。這是理論上的東西,實(shí)際運(yùn)行起來由于服務(wù)器內(nèi)部機(jī)制的問題就有可能引起源代碼暴露的漏洞,簡(jiǎn)單的例子只要在程序文件名后加幾個(gè)簡(jiǎn)單的字符就可能獲得程序代碼,如常見微軟asp 的global.asa+.htr、XXXX.asp%81等等漏洞。