• avalanche单包大包构造和8k url重启问题经验总结


    背景

    外面正在使用的一处环境中,存在异常重启情况,怀疑是设备收到了异常大包,系统某个处理函数有问题,遇到就会直接导致系统重启。

    经过排查,推测大包的特征为 超过8k长度url未分片的一个完整大包,进入设备,一个处理函数只能处理4k长度以下的url,导致越界,进而死机重启。

    现网已打相关补丁,现在需要内部在老版本复现问题,确认是由于这个问题导致,并且确定补丁的有效性,进而将代码合入主干中。

    环境搭建

    使用用旁路环境进行搭建。因为需要单包长度大于8k,所有接口 mtu 需要改为 9000,交换机需要配置镜像流量,且巨型帧转发相关配置需要打开。将测试仪流量镜像发送给waf。

    waf配置,所有防护模块开启监控策略

    测试仪配置:

    http流量与正常配置无异,主要是一些巨型帧相关配置和url构造问题。

    主要配置
    client network配置
    client Subnets配置
    server network配置
    server Subnets配置
    巨型帧配置

    核心URL构造和复现过程

    核心 url构造
    开始只说了url构造为8k长度,没有具体要求,根据经验,使用了最简单post方法构造数据,在post数据字段附加8500字节字符串,

    1 post http://192.168.3.1<POST_BODY: URLENC KEY=bd, LENGTH=8500>
    
    • 1

    也尝试放在文件里面,post文件,123文件里面为8k长度URL

    1 POST http://192.168.3.1/<POST_FILE="123" CONTENT_TYPE="image/jpg">
    
    • 1

    持续打流量跑也无法复现重启问题,只有几次系统资源耗尽导致的重启。

    因为访问日志也没记,为了确认系统没问题,开启web攻击防护,并尝试在Action中构造攻击流量。因为 Action 的 URL 对特殊字符支持不友好,查看文档,决定采用变量的方式构造攻击流量,具体格式如下

    ASSIGN VARIABLE <sql "?id=9527%20and%20(ascii(substring((select%20username%20from%20admin),1,1)))%3E97"> #攻击块
    1 GET http://192.168.3.1/abc/def/index.html?<APPLY sql>   #URL
    
    • 1
    • 2

    测试后发现可以记录日志,那就是设备处理的问题。经开发调试,访问日志可以正常记录。

    后经过分析,猜测还是和流量有关,让改成 get 试试,遂将 post 的内容复制到 get 进行尝试,url如下

    1 get http://192.168.3.1/index6789abcdefghijklmnopqrstuvwx..........pqjklmnop.html 
    #8000+字符太长,省略中间,整体长度为8100+
    #顺便测出来了 Action 里 URL 支持的最大长度为 8190
    
    • 1
    • 2
    • 3

    持续流量跑了一阵还是没复现问题。

    后面经讨论又换回 post 请求,但是要求在 URL 段有数据,在之前的URL基础上进行修改。123清空

    1 POST http://192.168.3.1/6789pqrstuvwxyz0123wx........yz0123456789<POST_FILE="123" CONTENT_TYPE="image/jpg">
    #8000+字符太长,省略中间,整体长度为8100+
    
    • 1
    • 2

    为了确保能进引擎,尝试记录日志,在123文件中添加攻击流量
    123文件添加攻击流量
    感觉长度不够,添加请求头
    添加请求头
    后面三个步骤反复调整尝试,以及开发人员的调试和尝试,确定了其中一个模块能稳定复现问题。只要请求一访问,就可以复现重启的问题。

    后面为了确认,重新刻卡进行了尝试,也能稳定复现。

  • 相关阅读:
    MySQL的增删查改(第一话)
    Docker 部署 MySQL容器 & 使用脚本部署
    Linux扩展篇之Shell编程四(正则表达式入门)
    【C++】开源:iceoryx通信中间件配置与使用
    Cookie、Session、Token、JWT详解
    tRNA甲基化偶联3-甲基胞嘧啶(m3C)|tRNA-m3C (3-methylcy- tidine)
    【微服务】Docker-Compose
    华为云云耀云服务器L实例评测|华为云耀云服务器L实例评测包管理工具安装软件(六)
    真题集P93---2017年计专真题
    netmiko安装及使用
  • 原文地址:https://blog.csdn.net/FTQOOO/article/details/126348930