AI智能
改变未来

phpMyAdmin getshell总结


phpMyAdmin getshell总结

  • phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。

一、phpMyAdmin写权限(into outfile)getshell

利用条件

  • 1.知道网站绝对路径
  • 2.对web目录具有写入权限
  • 3.secure_ file_ priv没有具体值

实战步骤

  • 1.首先,获取网站绝对路径:

方法一:

通过phpinfo.php页面获取:

方法二:
通过SQL语句查询,获取mysql所在的绝对路径:


当然,方法还有很多,比如网站报错可以收集绝对路径等。

  • 2.执行SQL语句,写入一句话,如下图,可以看到这里执行SQL语句出错,提示MySQL服务器正在使用
    --secure_file_priv

    选项运行,无法执行SQL语句。

  • 3.查看

    secure_file_priv

    选项,看是否可写,命令如下:

    SHOW VARIABLES LIKE \'secure_file_priv\'

    当secure_file_priv的值为null ,表示限制mysql 不允许导入|导出当secure_file_priv的值为/tmp/ ,表示限制mysql 的导入|导出只能发生在/tmp/目录下当secure_file_priv的值没有具体值时,表示不对mysql 的导入|导出做限制
  • 如下图,可以看到,这里的值为NULL,则表示不允许mysql导入导出,所以这里我们没有写权限,也就无法使用into outfile方法getshell。

  • 4.

    --secure_file_priv

    选项的值,只能通过MySQL配置文件进行修改,这里无法使用SQL语句进行修改,如下,修改my.ini文件,没有

    secure_file_priv

    选项添加一个即可,然后重启服务:

  • 5.再次执行写入shell的SQL语句,可以看到SQL语句执行成功。

  • 6.执行代码,使用菜刀连接。

二、phpMyAdmin通过日志文件getshell

利用原理

首先介绍两个MySQL全局变量(general_log、general_log file)

  • 1.
    general_log

    指的是日志保存状态,默认是关闭的,一共有两个值(ON/OFF)ON代表开启/OFF代表关闭。

  • 2.
    general_log_file

    指的是日志的保存路径,指定为一个php文件,最后用一句话木马进行SQL查询来写入shell。

实战步骤

  • 1.首先查看general_log是否开启:
    SHOW VARIABLES LIKE \'general_log\';

    可以看到这里的general__log是关闭状态,也就是说不保存SQL语句到日志中。

注意:general__log 变量表示保存每一条你执行的SQL语句到文件中,所以这里我们需要将general_log变量的值修改为On,这里就会新建一个日志文件,用来保存我们执行的SQL语句。

  • 2.执行SQL语句开启general_log。
    SET GLOBAL general_log = ON;

再次查看general_log变量,可以发现它的值已修改成ON,开启成功。

  • 3.然后把
    general_log_file

    设置为shell的绝对路径(

    general_log_file

    指的是日志的保存路径)。

  • 4.然后执行SQL查询语句,写一个一句话进去。(这里只要执行SQL语句,就可以写入到刚才我们创建的日志文件当中)

  • 5.查看创建的日志文件,可以看到shell已经写入。

  • 6.尝试执行代码,使用菜刀连接。


赞(0) 打赏
未经允许不得转载:爱站程序员基地 » phpMyAdmin getshell总结