`
heyaron
  • 浏览: 51114 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

入侵基于Java Struts框架网站的常见手法

阅读更多
入侵要点:
找到注入点;
暴露网站页面绝对路径;
利用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 by
8/* 页面出错,说明共有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型,晕,跑了半天竟然跑不出东西来,数据表也猜测不到东西,看来用工具猜测获得数据库的管理员帐号和密码是不太现实了,再想想其他办法咯。

4、如果知道页面文件在硬盘的绝对路径,当然可以load_file()查看页面源代码,关键是怎么暴露出页面的地址呢?如果是php页面还可以构造一些 sql语句导致查询出错而暴露出web页面绝对路径,但现在是tomcat,页面执行出错的时候都是tomcat该死的调试信息霸占住页面。试试啊D注入工具的管理入口搜索,结果发现的只有tomcat的默认管理页面,没有配置过的tomcat管理界面是登陆不了的。继续搜索,无意中打开了 http://www.site.com.cn:8081/manager/,http://www.site.com.cn:8081/jiehe/,可以列目录哦,不过看不到什么有价值的页面地址。

5、试试工具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)是这样描述此漏洞的:
Apache Tomcat MS-DOS设备名远程拒绝服务漏洞:

Apache Tomcat在处理畸形的用户请求时存在漏洞,远程攻击者可以利用这个漏洞对服务程序执行拒绝服务攻击,使合法用户无法
正常访问服务。当用户发送MS-DOS设备名加“.jsp”的文件请求到服务器时,会导致服务程序发生拒绝服务。

6、既然知道了网站的虚拟路径,那么剩下的就是利用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,整个站点的页面路径都出来了!

7、 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
分享到:
评论

相关推荐

    基于Struts 框架的BBS论坛系统

    Struts框架是一个强大的MVC(Model-View-Controller)设计模式的实现,广泛应用于Java Web应用的开发。在本项目“基于Struts框架的BBS论坛系统”中,开发者利用了Struts的强大功能来构建了一个功能完备的在线讨论...

    JAVA Struts 框架 代码示例

    Java Struts框架是Java开发Web应用的一个经典框架,由Apache软件基金会维护,它基于Model-View-Controller(MVC)设计模式,旨在简化企业级应用的开发过程。本压缩包包含的是"day01_all"的学习资料,可能包括源代码...

    Java开发struts框架包

    标题中的“Java开发struts框架包”通常指的是包含了Struts框架所需的各种库文件和配置文件的集合,这些文件对于搭建和运行基于Struts的Java Web项目至关重要。开发人员可以使用这些资源快速地初始化一个新的Struts...

    基于struts框架的学生管理系统

    总结来说,"基于Struts框架的学生管理系统"是一个典型的Java Web应用实例,它涵盖了Struts框架的使用、JSP页面的编写以及数据库的交互。通过对这个项目的分析和实践,开发者不仅可以掌握Struts的基本用法,还能深入...

    基于MVC struts框架开发的小型WEB

    【标题】基于MVC Struts框架开发的小型...综上所述,这个基于MVC Struts框架的小型Web应用是一个深入学习和实践Struts框架的好实例,涵盖了Web开发中的核心概念和技术,对于提升开发者在Java Web领域的技能非常有帮助。

    基于Java和Struts框架的校园二手交易平台.zip

    基于Java和Struts框架的校园二手交易平台 项目概述 本项目是一个基于Java和Struts框架的校园二手交易平台,旨在为学生提供一个便捷的二手物品交易环境。项目包含了多个模块,涵盖了用户管理、商品管理、评论管理...

    基于Struts框架的Java Web应用开发研究.pdf

    基于Struts框架的Java Web应用开发研究 本文主要研究了基于Struts框架的Java Web应用开发,通过对图书管理系统中的图书档案管理模块的设计,来提高图书档案管理的效率。Struts是一种基于MVC设计模式的开源框架,在...

    毕业设计论文,基于struts框架的网上书店系统

    【基于Struts框架的网上书店系统】是一种利用现代信息技术实现的电子商务平台,旨在解决传统书店与消费者之间的信息不对称问题,提高图书交易的效率。该系统以书籍为交易对象,结合了互联网的便利性,提供了丰富的...

    基于Struts框架的Web系统实现

    ### 基于Struts框架的Web系统实现 #### JSP系统的特点 JSP(JavaServer Pages)技术是一种用于创建动态网页的技术,它利用Java编程语言编写类似XML的标签(tags)和脚本片段(scriptlets),以封装生成动态网页所...

    基于java开发的Struts图书馆管理系统.zip

    基于java开发的Struts图书馆管理系统基于java开发的Struts图书馆管理系统基于java开发的Struts图书馆管理系统基于java开发的Struts图书馆管理系统基于java开发的Struts图书馆管理系统基于java开发的Struts图书馆管理...

    一个运用了struts框架的学生请假系统

    Struts框架是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它主要用来简化在Java EE平台上构建动态网站的应用开发过程。在这个名为“学生请假系统”的项目中,开发人员利用了Struts框架的...

    基于Java语言的Struts框架应用设计源码学习指南

    本项目提供一份基于Java语言的Struts框架应用设计源码学习指南,包含27个文件,涵盖6个XML配置文件、3个Java源文件、3个JSP文件、3个类文件以及相关项目配置文件,旨在帮助开发者深入理解Struts框架的应用设计。

    仿struts框架的自制代码

    Struts框架是一款经典的Java Web开发框架,由Apache软件基金会维护,它基于Model-View-Controller(MVC)设计模式,极大地简化了Java Web应用程序的开发。在这个“仿struts框架的自制代码”中,我们可以看到作者尝试...

    基于Struts框架、Hibernate框架开发的web物流管理系统【学期项目】

    去年2013年6月8日~2013年6月21日开发的。因为只有两个星期,所以开发的不是很好。SQLServer数据库2003还是2005忘了,但ppt、代码、日志、数据库、项目文档...希望对初学都有用,我们也是刚学框架,不好还请多多包含。

    基于Struts框架的图书管理系统-课程设计

    在用户刚进入网站进行登录的时候,struts 调用登录的一个 action,并在这时进行用户名 和密码的验证。 登录后进入图书管理的首页,添加、修改、删除图书信息都使用 servlet 进行跳转和过滤。 额外添加的查询功能,是内嵌...

    MVC模式和Struts框架

    MVC模式和Struts框架

    基于java ssh框架设计网上商城设计的开题报告

    【基于Java SSH框架设计网上商城】的开题报告主要探讨了如何利用Java企业级开发中的Struts、Spring和Hibernate(SSH)三大主流框架构建一个网上购物系统。SSH框架的运用旨在提升系统的可扩展性、效率和安全性,以...

    基于Java的Struts 2框架设计源码

    Struts 2框架项目源码,共23个文件,全部采用Java语言编写,涉及多种文件类型如XML配置文件、JSP页面、PREFS文件、Java源代码、...该项目是一个基于Java的Struts 2框架设计,旨在提供一个高效、稳定的框架解决方案。

    实验二 基于struts框架搭建网站架构

    1. 采用Struts框架设计图书管理系统的用户登录验证和用户注册功能。页面中用户名和密码正确转到success.jsp页面,有误转到error.jsp页面或login.jsp页面。注册页面完成用户信息的注册(保存注册信息到数据库中),并...

Global site tag (gtag.js) - Google Analytics