参考

https://www.jianshu.com/p/8e44cb1b5b5b

漏洞原因

phpMyAdmin是一套开源的、基于Web的MySQL数据库管理工具。在其查找并替换字符串功能中,将用户输入的信息拼接进preg_replace函数第一个参数中。

在PHP5.4.7以前,preg_replace的第一个参数可以利用\0进行截断,并将正则模式修改为e。众所周知,e模式的正则支持执行代码,此时将可构造一个任意代码执行漏洞。

影响版本

4.0.10.16之前4.0.x版本
4.4.15.7之前4.4.x版本
4.6.3之前4.6.x版本(实际上由于该版本要求PHP5.5+,所以无法复现本漏洞)

触发前提

需要登录和写数据权限

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

环境搭建

https://github.com/vulhub/vulhub/tree/master/phpmyadmin/CVE-2016-5734

利用脚本

https://www.exploit-db.com/exploits/40185/

复现

因为目标环境使用root,所以我们可以创建一个临时数据库和数据表,进行漏洞利用。这里,我们使用cve-2016-5734.pyPOC来复现漏洞。

-d是已经可以写的数据库,-c是待执行的PHP语句,如果没有指定表名,这个POC会创建一个名为prgpwn的表。

python cve-2016-5734.py -c 'system(id);' -u root -p root -d test http://:目标ip

最新文章

  1. ECharts+百度地图网络拓扑应用
  2. 【SAP Business Objects】Universe中的@prompt语法
  3. 【转】pycharm快捷键、常用设置、包管理
  4. 无shell情况下的mysql远程mof提权利用方法详解
  5. 要件审判九步法及其基本价值 z
  6. linux 正则表达式深度解析
  7. 正则化方法 exec 和match以及test
  8. bzoj 2406: 矩阵 上下界网络流判定
  9. 分布式锁与实现(一)——基于Redis实现
  10. 用JAVA进行Json数据解析(对象数组的相互嵌套)
  11. LOJ #6041. 「雅礼集训 2017 Day7」事情的相似度
  12. [C# 基础知识系列]专题三:如何用委托包装多个方法——委托链 (转载)
  13. 一个简单的python爬虫程序
  14. ElastichSearch漏洞
  15. js同步、异步、回调的执行顺序以及闭包的理解
  16. 【Gym 100015B】Ball Painting(DP染色)
  17. switch嵌套--猜拳游戏
  18. 如何将mysql卸载干净
  19. [OSChina]VirtualBox 6.0.0 发布,改进对高端显示器的 HiDPI 支持--尝试一下
  20. Java之HashMap用法

热门文章

  1. LINUX - 通信
  2. sizeof和strlen在string类中的使用
  3. Java开发工程师最新面试题库系列——Web部分(附答案)
  4. uni-app in action
  5. Vue Login Form Component
  6. css break-inside
  7. LeetCode & linked list bug
  8. flutter 1.5 in action
  9. css dark theme & js theme checker
  10. CSS Dark Mode