利用mysql注入点直接提权
来自:90 sacret Team信息安全团队
我提供的这种方法相对来说条件较为苛刻,不过在这就是一个思路,可能在你入侵受阻的时候真的能帮到你。我们先来看下这个注入点的要求:
1、magic_quote 为off
2、可以写文件,最好有任意目录的写权限
3、最好有读文件的权限,但如果真没有也行
4、注入点需要是POST方式的(这样可以一次post128KB大小的文件)
为什么需要这么几个条件,后面我会详细的说,先说下我的思路,大家都知道,mysql也是可以写文件的,但大家可能更多的是用在写一个shell出来,其实我们也可以考虑写入一个其他类型的文件,比如exe、dll,这里我的思路就是通过dll方式来提权。先介绍一个Rices写的工具:T00ls Lpk Sethc。简单的说,通过该工具生成的dll文件,放在一个有exe文件的目录,那么等这个exe文件执行后,系统就被安装上了sethc后门,关于该工具的具体用法,叉子们可以百度一下。我就是想通过mysql的dumpfile方式,将这个lpk.dll文件写到一个存在exe的目录,等这个exe执行后,我们就提权成功了。这就是为什么我们需要magic_quote_gpc为OFF,因为这样我们才可以写文件,而可以写的目录越多那么成功率自然越大。为什么要有读取权限?因为我们并不知道目标网站的结构,也不知道哪里存在exe文件,那么我们可以先读取一些比较常见程序的安装目录下的敏感文件,比如说Navicat 的localization里的default.loc文件,如果我们读取到了这个文件,那么基本可以确定了Navicat的目录,再写入dll文件的话,成功的概率会更高。为什么需要POST方式呢?因为这个dll虽然不大,但远远超过了GET的大小,所以需要是POST方式的注入点。好了,基本情况介绍到这,我们开始吧。-
首先本地构造一个注入点,这个我就不说了。我们首先要做的是得到这个dll文件十六进制形式。这个我们可以在本地完成,我使用navicat配合mysql,先打开navicat,连接上mysql,打开任意一个数据库,然后选择“查询
接着我们输入命令:“select hex(load_file(‘f:/lpk.dll’)) into outfile ‘f:/xxoo.txt’;”其中f:/lpk.dll就是dll文件的位置,后面则是十六进制方式输出的文件。直接完毕后,我们到F盘下看看,果然出现一个xxoo的文本文件,大小为118KB,虽然增大了不少但还在安全范围(128KB)内,我们继续,接下来就是到注入点中了,本地构造的注入点为:
http:///www.2cto.com /1.php?id=1
放到穿山甲中试试
POST类型的注入,magic_quote_gpc为off。我们先来看看有多少个字段,我们可以通过order by 的方式得到,像我这种比较懒的就直接看源码了,其中有这句:“ $sql = “select username,password from admin where id=$id”;”这么说字段数是2。接下来就是注入了,这里我们要写个简单的html文件来提交,毕竟那个十六进制字符的文件有118KB呀。写好的html代码为:
<form action=http://www.2cto.com /1.php method=post>
<textarea name=id cols=120 rows=10 width=45>这填lpk的二进制代码 </textarea><BR><center><br>
<input type=submit value=提交
接下来就是写入代码了:
1 and 1=2 union select unhex(‘*******’),” into dumpfile ‘F:/Navicat Premium V8.2.19/Navicat 8.2.12/Navicat 8.2.12
Unhex里为lpk的十六进制,大家请注意,在unhex后面,还有两个单引号,这是为了不产生多余的字符,破坏了dll文件。接着我们点击提交,然后去该目录查看,发现lpk已经安静的在那躺着了。这样,我们再运行一下Navicat,不需要任何操作。我们再调出sethc按下A+B,然后输入123
到此,我们的后门就安装成功了。
这种方式的提权需要的条件较为苛刻,还需要一点运气,不过入侵就是这样,多学一种方法在入侵的时候就多一条路。