phpMyAdmin是个着名MySQL/MariaDB在线管理工具,phpMyAdmin团队在4.7.7版本中修复了一个危害严重的CSRF破绽(PMASA--9),攻击者可以通过诱导管理员接见恶意页面,悄无声息地执行随便SQL语句。
该篇文章我们将连系VulnSpy的在线phpMyAdmin环境来熟悉该破绽的行使。
在线 phpMyAdmin CSRF 演练地址:https://www.vulnspy.com/u=pmasa--9
注:重启演示靶机即可重置靶机
点击 VulnSpy 提供的建立靶机地址(https://www.vsplate.com/github=vulnspy/PMASA--9)
跳转到 VSPlate 后,直接点击按钮,便会自动建立一个 phpMyAdmin 环境
打开的链接,我们的 phpMyAdmin 就建立完成了。
使用帐号 ,密码 ,登录 phpMyAdmin 。凭据页面信息,我们可以发现当前 phpMyAdmin 的版本为 4.7.6,恰好匹配存在破绽的 phpMyAdmin 版本。
我们知道,若是要行使CSRF来删除或修改数据库内容,通查情况下需要提前知道数据库名、表名和字段名。这样行使显得有点庞大,乐成率也有限,因此本文我们将先容几种较为通用的行使方式。
在MySQL中支持使用SQL语句来修改当前用户密码。好比将当前用户密码修改为,对应的SQL语句为:
2.1 模拟管理员登录phpMyAdmin的状态。
用帐号 root 密码 toor 登录 phpMyAdmin 。
2.2 建立含有恶意代码的页面。
文件名 2.payload.html (将下面的域名换成自己的靶机域名)
2.3 用浏览器打开含有恶意代码的文件 2.payload.html
回到上一步打开的phpMyAdmin页面,发现已自动退出,而且用原来的密码 toor 已经无法登录。
2.4 使用密码 www.vulnspy.com 登录乐成,解释行使乐成
MySQL支持将查询效果写到文件当中,我们可以行使该特征来写入PHP文件。好比将代码写到文件中,对应的SQL语句为:
3.1 将上一个演示步骤相同,只需将2.2中的文件代码改成:
3.2 用浏览器打开含有恶意代码的文件
3.3 接见 test.php
可见文件已经写入乐成。
MySQL提供了函数来支持读取文件内容的操作。好比读取文件内容,,对应的SQL语句为:
然则对于CSRF破绽来说,该读取操作着实目的用户端执行的,我们依然无法知道文件读取的效果。而在Windows下支持从网络共享文件夹中读取文件,如。网络共享文件的地址处不仅可以填写IP还可以填写域名,我们可以通过DNS剖析来获取查询的数据。
此处需要用到 DNSLOG 之类的工具:https://github.com/BugScanTeam/DNSLog, 这类工具可以纪录域名的 DNS 剖析纪录
好比通过DNS剖析来获取当前 MySQL root 用户密码,对应的SQL语句为:
获取当前数据库名:
若是请求乐成,查询效果将作为二级域名的一部分出现在我们的 DNS 剖析纪录当中。
该环境暂无法演示
若是上面几种行使方式都无法直接造成直接的影响,我们可以行使SQL语句来清空当前MySQL用户可操作的所有数据表。
我们用下令
来获取数据名和表名,并将其拼接成删除语句(如:),通过 来执行天生的删除语句:
然则 execute 一次只能执行一条SQL语句,因此我们可以行使循环语句来逐一执行:
5.1 Payload如下
5.2 用浏览器打开含有恶意代码的文件
5.3 回到 phpMyAdmin 中查看数据
可以发现数据库和数据库中的数据已经被清空。
这个 phpMyAdmin 的 CSRF 破绽行使有点类似 SQL 盲注的行使,然则对于破绽触发的时间不可控(即不知道管理员何时会接见含有恶意代码的页面),因此需要加倍通用的行使方式。通过该实验,不仅领会该破绽的内容,还可以加倍熟悉CSRF破绽的行使。
本文转载自:phpMyAdmin 4.7.x CSRF 破绽行使 -https://blog.vulnspy.com//06/10/phpMyAdmin-4-7-x-XSRF-CSRF-vulnerability-exploit/