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>

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

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

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

因为访问日志也没记,为了确认系统没问题,开启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

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

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

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

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

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

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

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值