打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Resin容器文件解析漏洞深入分析

Resin是CAUCHO公司出品的一个Application Server,对Servlet和JSP提供了良好的支持,性能也比较优良,自身采用JAVA语言开发。Resin本身包含了一个支持HTTP/1.1的WEB服务器。虽然它可以显示动态内容,但是它显示静态内容的能力也非常强,性能直逼Apache httpd,许多站点都是使用该WEB服务器构建的。

Resin存在类似iis6.0的文件解析漏洞,影响全部版本,不仅能够丰富其他高危漏洞挖掘知识库,也给隐藏后门带来了新的一种潜在方式。

环境搭建



官方下载地址:

Resin Download

https://caucho.com/products/resin/download

这里下载resin最新版本v4.0.65,配置远程调试(修改`resin.properties`中的`jvm_args`):

启动:


resin.exe -java-home 'C:\Program Files\Java\jdk1.8.0_20' start

Web服务和远程调试服务均启动成功:

漏洞复现



漏洞表现形式上与iis6.0文件解析漏洞类似,整个复现过程非常简单,可以在Web路径下创建一个新的vul.jsp文件夹,然后在vul.jsp文件夹下面创建一个非jsp后缀名文件vul.txt:

访问:

实现了JSP解析。

漏洞分析



启动调试,定位HTTP请求的必由之路`com.caucho.server.http.HttpRequest#HttpRequest`并打下断点:

调用栈如下:

往下走,一直到第495行,调用`getInvocation`函数:

一路往下走,最终进入了`com.caucho.server.http.AbstractHttpRequest`类的`getInvocation`函数:

进入`buildInvocation`函数,一路往下跟进:

直到进入`com.caucho.server.dispatch#mapServlet`:

提取了URL相关变量`matchResult`,进入第138行,其中的`_servletMap`如下:





0 = {UrlMap$RegexpEntry@3205} 'RegexpEntry[*.jsp]'1 = {UrlMap$RegexpEntry@3206} 'RegexpEntry[*.jspf]'2 = {UrlMap$RegexpEntry@3207} 'RegexpEntry[*.jspx]'3 = {UrlMap$RegexpEntry@3208} 'RegexpEntry[*.php]'

进入`map`函数:

通过正则表达式会匹配到提交URL路径中的`/vul.jsp`:

从而进入jsp的解析逻辑。

从上面可以看出,`*.jsp`、`*.jspx`、`*.jspf`都存在一样的问题,其实在resin的配置文件`conf/app-default.xml`中就已经进行了设定:

后记



Resin文件解析漏洞和以前iis6.0文件解析漏洞在形式上非常类似,影响包括最新版本在内的各个版本,至于这个漏洞能用来干什么,就需要小伙伴们结合遇到的实际情况,自行深入分析研究了。

由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Caucho Resin viewfile远程文件及路径泄露漏洞
java加密和licence控制的设计
Resin服务器的使用(一篇不错的文章,如果想使用resin做服务器建议看看)-JSP编程-华夏名网资讯中心 虚拟主机,域名注册,双线虚拟主机,服务器租赁,为7万用户提供服务
新手入门之Windows下JSP安装全图解
java.lang.NoClassDefFoundError: com/caucho/ma...
apache2 + resin4無法解析struts2的.action
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服