作者:花开、若相惜
Pax.Mac Team核心成员
由于某著名游戏公司被人DDOS,让我们公司追查DDOS来源。话说现在DDOS还真没办法防御。那公司20G直接挂了。
定位了一个攻击来源,因为离的比较近,所以从这里下手。
经过初步的信息收集,旁注都是目标公司的站。开放在各个端口,有asp,php的站。服务器:Apache+IIS+win2003 mysql root密码为空。
既然mysql密码为空,那么就试试能不能外连:mysql -h ip -uroot -p
连接成功。估计这服务器是被3306抓鸡抓到的。
知道mysql密码又是root权限,那么寻找爆路径的。在一个旁注的站上尝试常用目录inc include等等,结果inc存在而且还列目录。网站权限做的还真不怎么样。
随手点了个文件,就爆出了路径。然后老规矩,写一句话。可是悲催的事情发生了,文件是写入了,但是访问却不存在。Load_file读取一句话也存在,不存在没写入。
难道库站分离?根据3306抓鸡原理,这服务器可能是UDF提权拿下的。既然这样我用UDF提权试试。
Mysql各版本UDF提权方法:
MYSQL 4.1以前的版本中,可以将所有的DLL文件里面的任何函数都注册到MYSQL里面以供MYSQL调用。无论这个DLL在什么位置,函数的声明是什么样的。MYSQL 4.1及以后的版本中,对UDF函数进行了限制,只有实现了一个特定接口的函数才可以被成功注册到MYSQL中,MYSQL5以后,对注册的DLL的位置有了限制,创建函数的时候,所对应的DLL不能包含/或者\,简单的理解就是不能是绝对路径。所以我们将DLL释放到system32目录,来跳过这个限制。。或者放到盘符的根目录下通过c:udf.dll这种形式的写法来跳过限制。
只要把dll放到PATH这个环境变量所表示的任何一个目录下面,效果跟放到system32目录下面一样。
Can’t open shared library ‘udf.dll’
这是因为MYSQL 5.1及以后的版本中,又多了一个限制。创建函数时所用的DLL只能放在mysql的plugin目录里面而且这个plugin目录默认是不存在的
那么自己在mysql安装目录下建lib/plugin 文件夹,把udf.dll导到这里就行
这里有个技巧,显示mysql的安装路径 SHOW VARIABLES LIKE ‘%plugin%’;看看mysql的安装路径,是否之前给人搞过了。如果别人已经导好了,直接注册函数吧。
由于不同版本的mysql提权方式也不同,所以先看看mysql版本
5.1以下的,那好办多了。 现在需要UDF的二进制文件,可以用到下面的语句:
Select load_file(‘路径’) into dumpfile ‘D:\udf.txt’; 注意了 这里不能使用outfile,这函数会在末行端写入新行,还会转义换行符,会导致二进制文件被破坏。
Select unhex(‘…..’) into dumpfile ‘c:\\windows\\system32\\udf.dll’;
create function cmdshell returns string soname ‘udf.dll’ …… 很悲剧 爆内存不足。没能继续下去,继续找别的方法。 虽然IP是跟主站相同的,但是也有可能做了NAT地址端口映射。 找了几个上传的地方,发现有一个地方很可能存在漏洞。
利用网站的上传功能:http://www.2cto.com /js/webs/edit/upload.php 通过尝试1.php;.jpg 1.php.jpg 等等。发现能成功上传,但是无法解析。 用截断尝试了下,结果直接报非法文件,绕不过检测机制。 经过conqu3r的提醒,上传1.php.ajpg上传成功解析。
这是利用了apache的解析规则,apache是从后缀的最后开始解析的,如果无法解析就继续解析下个后缀。 话说这程序也真够白痴的,只检查后缀的后三位。看来思维还是要发散下。
本来想通过截断上传的,但截断上传后的文件,会经过服务器的检测。检测最后 然后就可以解析。 但渗透过程中发现,解析是成功的。
一直无法连接上小马,大马执行了也无法登录。 此路可通,猜测应该是服务器上有杀软或者类似的防火墙,或者解析不稳定。
如果是解析不稳定的话,也可以想办法撒。这个既然能成功解析成php文件,那我们在上传的文件中写入一个在写shell的马,生成一个正常的php文件。
如果是解析不稳定的话,可以直接解决。 上传 <?php fputs(fopen(“xx.php”,”w”),”<?php echo 123;?>”)?>
会在根目录下生成xx.php
成功解析生成了xx.php。确定了是由于过滤了危险函数eval导致的。 既然这样.想办法绕过这个检测机制就行。
最后上传一个功能少的,不包含特殊函数的功能马。 直接system权限,可以直接拿下服务器。
在这次渗透过程中还发现了很多东西,如mysql操作的日志,记录下了root的密码等敏感信息。对内网渗透是很有价值的东西。
后来在连接服务器的时候发现连接不上。这也证实了他做了NAT地址端口映射。
后面的就不继续写下去了…….(渗透过程中发现N个点解析也可能爆路径)
本文重点是让大家渗透的时候思路要发散性思维。任何一个小细节都能成为关键点