其实我相信还有几种办法可以暴露JSP代码的,不过具我的大量测试,这和WEB SERVER的配置有绝对的关系,就那我自己装的IBM Websphere Commerce Suite而言,还有别的方法看到JSP源代码,但我相信是因为IBM HTTP SERVER的配置造成的.
如果你也想和我一样去发现JSP暴露源代码的BUG的话,首先你需要了解JSP的工作原理,值得庆幸的是我已经帮你做了这一切!
jsp和其它的php,asp工作机制不一样,虽然它也是一种web编程语言。首次调用JSP文件其实是执行一个编译为Servlet的过程。注意----->我们就要在这上边做文章,明白吗?我们要干的事情是,让JSP在编译前被浏览器当作一个文本或其它文件发送给客户端,或在JSP装载的时候不去执行编译好的Servlet而直接读JSP的内容并发送给客户端。
明白了道理及所要达到的目的就好下手了,我仔细的观察了调用及返回过程发现:JSP被编译为了Servlet保存在指定的目录下如:http://www.x.com/lovehacker/index.jsp很可能存放在X:\IBM\WAServer\temp\default_host\default_app\pagecompile\_lov
~~~~
ehacker_index_xjsp.class
~~~~~~~~~~~~~~~~~~~~~~~~
已经过编译的index.jsp(顺便说一下,IBM WCS我至少发现了三种以上获得文件存放真实路径的办法,但可笑的是我和IBM的工程师聊到这事的时候他们不以为然)
回到正题,也就是说_lovehacker_index_xjsp.class显然是我们不需要的文件,而且我们得到它的可能性也不大,我们要干的是不去执行_lovehacker_index_xjsp.class而是直接读index.jsp的内容.我在我的SERVER上已经完成了这个工作,源代码尽收眼底,你呢?是否也已经想好了办法?那还等什么赶快去实践吧!
据我分析最初的xxx.JSP暴露源代码也是因为我前边的这种想法造成的,本来目录中存放了一个_xxx_xjsp.class但访问xxx.JSP本来是个合法的请求,而又找不到对应的Servlet所以就把xxx.JSP当做一个文本或其它文件发送给了用户。
也许这是因为IBM HTTP SERVER配置不当造成的,但相信如果你能成功的话,会有一种成就感,很爽的哦!
顺便说一下暴露文件存放真实路径可能会带来的危害:
首先会让入侵者了解磁盘配置情况
聪明的入侵者甚至可以分析出管理员的水平高低
为入侵者修改你的首页提供了方便(起码不用在找你的WEB目录在那个磁盘了)
可能被利用一些其它的CGI的漏洞查看到web目录下的文件如XX.ASP,XX.JSP,XX.PHP等.