jsp mysql 注入_由Jsp+Mysql注入到root权限的全程展 【好久没有安全类文章了,转一篇看看】...

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

最近有点空闲,所以写点垃圾文章来消磨一下时间.文中没有什么技术含量,如果要转载,请注明作者并保持文章的完整.

很多人可能都知道asp,php的编程要防止sql注入漏洞,而并不知道jsp编程同样也需要防备sql注入漏洞.其实,一旦jsp代码有注入漏洞,将直接影响到整个系统的安全。本文就是主要展示一下我的一次JSP+MYSQL注入导出webshell的过程。

www.***.***.cn是国内某一个著名研究所的网站,我们在这里对其进行善意的测试。当然,在写此文之前我已经将漏洞通知了网站管理员.并对文中所有的图片进行了处理,还粘贴了个我大三的时候自己发明的一个数学公式的图,希望让大家同时可以领会到数学更是博大精深(呵呵,当然研究数学更是人间正道).

1.寻找注入点

进入其首页,在新闻里面随便点了个新闻浏览,习惯地在其地址后面加个单引号’,链接上去后出现如图1所示。

0818b9ca8b590ca3270a3433284dd417.png (图1)

从图中的信息容易看出此网站的数据库中有个表的名字(tablename)是zhxw。可惜的是看不到web路径。把引号’改为 and 1=1则返回正常页,而改为 and 1=2 则出现错误页.从而可以断定有注入漏洞.再用telnet探测此主机器的3306端口,返回如图2所示的结果。

0818b9ca8b590ca3270a3433284dd417.png(图2 )

由此可以断定此网站的数据库程序是mysql。.

2.猜解表名

有了注入点,我们就会想到用union来构造sql语句。我们开始猜测表zhxw的字段数,在注入点的地址后面加上union select 1 得到错误页面如图3所示。

0818b9ca8b590ca3270a3433284dd417.png (图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所示。

0818b9ca8b590ca3270a3433284dd417.png(图4 )

说明表admin是存在的,且可以在数字2和3处插入表的字段名或者mysql自带的函数来获取数据库的信息.现在来猜测admin表的字段名及其值.经手工猜测得到了admin表的字段名adminname和adminpwd的值如图5所示.

0818b9ca8b590ca3270a3433284dd417.png(图5 )

3.找web路径及web管理入口

记得angel的文章<

>里面有个非常重要的函数load_file().我们现在就用这个函数来查找web路径.经测试发现在数字2处用load_file()函数替换后显示出来的结果不全,但是在数字3处用load_file()函数替换后显示出来的结果很全.我估计是与表zhxw的字段长度有关.而且我猜测此系统是unix的系统.所以我在先从根目录处查找web路径!如图6所示.

0818b9ca8b590ca3270a3433284dd417.png(图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所示.

0818b9ca8b590ca3270a3433284dd417.png(图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所示.

0818b9ca8b590ca3270a3433284dd417.png (图8 )

0818b9ca8b590ca3270a3433284dd417.png(图9 )

错误原因估计是与操作系统有关,因为我用这两种方法在linux的系统上测试成功了!哎,看来山穷水尽了!于是对此服务器的渗透暂停了一下。可能休息后头脑比较清醒,思想的火花一下就冒出来。这个时候我想起一篇入侵Tomcat的文章,里面提到上传JSP后门到web路径下后直接就得到了root权限!于是,我就在shell下用wget命令从我的肉鸡上传了个JSP的后门到web路径下面。然后用ie测试了一下权限,竟然发现这个WEBSHELL就是root权限,如图10所示。

0818b9ca8b590ca3270a3433284dd417.png(图10 )

6.注入导出webshell

6.注入导出webshell

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574083.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL Replication Error 处理一例

故障现象 MySQL slave status详情 mysql> show slave status\G *************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 10.10.10.101Master_User: rootMaster_Port: 3306Connect_Retry: 60Master_L…

java中的time_java中的Time处理

得到当前时间1. Calendar.getInstance().getTime();2. new Timestamp(System.currentTimeMillis());3. new Timestamp((Calendar.getInstance().getTime()).getTime());--------------------------------|date------------------------------------------------------Simple…

ubuntu14.04LTS openssh-server 手动安装配置步骤

先用能上网的机器下载&#xff1a;zlib-1.2.5.tar.bz2、openssh-5.6p1.tar.gz、openssl-0.9.8o.tar.tar&#xff0c;接下来&#xff0c;准备安装。 步骤如下&#xff1a; 1、首先解压安装zlib&#xff1a;tar -xf zlib-1.2.5.tar.bz2&#xff0c;会在当前目录下生成zlib目录。进…

java tls 证书_在使用Java 8重新协商TLS_1.2期间,服务器证书更改受到限制

我对SSL很陌生,并且被看似已知的问题所困扰.我的应用程序是SSL客户端,并调用另一个为双向SSL启用的组件.两个组件中的证书都是正确的,有时连接工作正常.每个服务器都有自己的服务器证书和私钥,但具有相同的根证书和中间证书.服务器中的SSL检查在Apache SW LB中完成.|----------…

将前台json对象传入java后台

前台json格式的数据如何传入后台 1. 将要传入后台的数据组装成JSON格式的字符串: var jsonStr [{name:jim , age:20} , {name:king , age:26},{name:jge , age:30}] 2. 使用JQuery的ajax请求后台 jQuery.ajax({ type: "post", url: url, dataType : json, data : {m…

java windows wrapper_Java Service Wrapper 发布windows后台程序的方法

Java ServiceWrapper发布可执行jar文件的方法通过摸索&#xff0c;终于将我的程序转换成windows后台服务程序了&#xff0c;实现股票成交明细数据自动定时下载&#xff0c;很爽&#xff01;现将心得要点记录如下&#xff1a;2.建立项目文件夹。例如 d:/myApp3.在该文件夹下建立…

Divide and conquer:Dropping tests(POJ 2976)

最大化平均值 题目大意&#xff1a;给定你n个分数&#xff0c;从中找出k个数&#xff0c;使∑a/∑b的最大值 这一题同样的也可以用二分法来做&#xff08;用DP会超时&#xff0c;可见二分法是多么的实用呵&#xff01;&#xff09;&#xff0c;大体上是这样子&#xff1a;假设最…

java中标准封装结构_java中的构造,封装

今天给大家讲一下面向对象中的构造&#xff0c;封装&#xff1b;构造&#xff1a;构造方法有以下几个特点&#xff1a;1.方法名和类名一致。2.无返回类型。接下来的几种构造样式&#xff0c;直接上代码吧&#xff1a;//这是一个宠物类 有一个属性&#xff1a;名字(name)public …

设计模式 - 依赖倒置原则

先看文章一&#xff1a;http://www.cnblogs.com/painsOnline/p/5138806.html &#xff08;前半部分&#xff09; 在看文章二&#xff1a;http://baike.baidu.com/link?urlBPC2OUFFHc7l14iLo70URxt8ae4-Wukbl3S077cCYpZljhFOHeK5prDuuMCyU7kwJwYvFnN1nKdevzsTrbJY7_ &#xff0…

《白日梦想家》观后感

To see the world, things dangerous to come to, To see behind walls, to draw closer, To find each other and to feel That is the Purpose of LIFE.” 这部片子我很喜欢&#xff0c;大概我在现实生活中&#xff0c;也就是一个梦想家吧。想过很多事&#xff0c;但是真正去…

Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle...

Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle 1. 主键1 2. uniq index2 3. 检查约束 (Check Counstraint) 对该列数据的范围、格式的限制&#xff08;如&#xff1a;年龄、性别等&#xff09;2 4. 默认约束 (Default Couns…

linux隐藏tomcat版本_Ubuntu 14.04隐藏Tomcat-7.0.52的版本号与操作系统类型

一般情况下&#xff0c;软件的漏洞信息和特定版本&#xff0c;特定操作系统是相关的&#xff0c;因此&#xff0c;软件的版本号以及操作系统类型对攻击者来说是很有价值的。在默认情况下&#xff0c;Tomcat会在返回信息中把自身的版本号&#xff0c;操作系统类型都显示出来&…

将java.util.Date类型转换成json时,使用JsonValueProcessor将date转换成希望的类型

将java.util.Date类型转换成json时&#xff0c;使用JsonValueProcessor将date转换成希望的类型 问题描述&#xff1a; java里面时间类型转换成json数据就成这样了&#xff1a;"createTime":{"date":30,"day":3,"hours":15,"minut…

java redis 商品秒杀_使用redis秒杀出现产品超发现象求解?

亲测&#xff0c;用ab 压测并发500 请求4000 无超卖&#xff01;header("content-type:text/html;charsetutf-8");$redis new redis();$result $redis->connect(127.0.0.1, 7379);$redis->watch("mywatchlist");$len $redis->hlen("mywat…

删除日志为0的文件

find . -size 0 -name "*.log" -exec rm {} \; 转载于:https://www.cnblogs.com/getong/p/5143366.html

在java中8421_JAVA常量介绍

常量&#xff1a;在程序执行过程中&#xff0c;其值不发生改变的量&#xff1b;1、分类&#xff1a; 字面值常量和自定义常量&#xff1b;1、字面值常量有以下几种&#xff1a;字符串常量、小数常量、整数常量、字符常量、布尔常量(true、false)、空常量(null);2、整数常量…

自定义tabbar

/** * 注意&#xff1a;* 打开自定义tabbar的背景视图的交互* 选中的tabb视图高度为tabbar背景视图的高度/2-选中视图高度/2* 选中视图加载到tabbar背景视图上* label注意居中&#xff0c;imgView注意选择适应模式&#xff0c;都加载到tabbar背景视图* 设置点击手势的点击事件…

java候选码计算的替换法_候选码求解方法

候选码的求解基本方法集合一、求解候选码基本算法的具体步骤.第1 步,求关系模式R 的最小函数依赖集F第2 步, 按照上面的定义, 分别计算出UL ,UR , UB (UL 表示仅在函数依赖集中各依赖关系式左边出现的属性的集合; UR 表示仅在函数依赖集中各依赖关系式右边出现的属性的集合;另…

java post返回xml数据类型_Java 通过HttpURLConnection Post方式提交xml,并从服务端返回数据...

这里面简单介绍下&#xff0c;HttpURLConnection连接服务器&#xff0c;并返回数据客户端代码Java代码&#xff1a;import java.io.InputStream;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.URL;public class PostXml {public static void…

Java关键字finally

参考文章&#xff1a;关于Java中finally语句块的深度辨析 仅考虑程序正常执行的情况下&#xff0c;不考虑System.exit(0)等情况。不过关于“finally 语句块一定会执行吗&#xff1f;”这个问题确实会有一定的说法。 1&#xff0c;无控制转移语句&#xff0c;在return之前执行 …