zoukankan      html  css  js  c++  java
  • HTTP慢速攻击

    漏洞原理

    HTTP慢速攻击也叫slow http attack,是一种DoS攻击的方式。由于HTTP请求底层使用TCP网络连接进行会话,因此如果中间件对会话超时时间设置不合理,并且HTTP在发送请求的时候采用慢速发HTTP请求,就会导致占用一个HTTP连接会话。如果发送大量慢速的HTTP包就会导致拒绝服务攻击DoS。

    3种攻击方式

    • Slow headers(也称slowloris):Web应用在处理HTTP请求之前都要先接收完所有的HTTP头部,Web服务器再没接收到2个连续的 时,会认为客户端没有发送完头部,而持续的等等客户端发送数据,消耗服务器的连接和内存资源。
    • Slow body(也称Slow HTTP POST):攻击者发送一个HTTP POST请求,该请求的Content-Length头部值很大,使得Web服务器或代理认为客户端要发送很大的数据。服务器会保持连接准备接收数据,但攻击客户端每次只发送很少量的数据,使该连接一直保持存活,消耗服务器的连接和内存资源。
    • Slow read(也称Slow Read attack):客户端与服务器建立连接并发送了一个HTTP请求,客户端发送完整的请求给服务器端,然后一直保持这个连接,以很低的速度读取Response,比如很长一段时间客户端不读取任何数据,通过发送Zero Window到服务器,让服务器误以为客户端很忙,直到连接快超时前才读取一个字节,以消耗服务器的连接和内存资源。

    漏洞验证

    使用工具:slowhttptest

    SlowHTTPTest是一款对服务器进行慢攻击的测试软件,所谓的慢攻击就是相对于cc或者DDoS的快而言的,并不是只有量大速度快才能把服务器搞挂,使用慢攻击有时候也能到达同一效果。slowhttptest包含了之前几种慢攻击的攻击方式,包括slowloris, Slow HTTP POST, Slow Read attack等。那么这些慢攻击工具的原理就是想办法让服务器等待,当服务器在保持连接等待时,自然就消耗了资源。

    安装工具

    Kali Linux:

    apt-get install slowhttptest
    

      

    其他Linux发行版:

    ./configure
    make
    sudo make install
    

      

    参数说明

    -a 一开始开始值范围说明符用于范围头测试
    -b 将字节限制的范围说明符用于范围头测试
    -c 连接数限制为65539
    -d  proxy host:port用于指导所有流量通过web代理
    -e  proxy host:port端口用于指导只有探针交通通过web代理
    -h,B,R或x 指定减缓在头部分或在消息体,- R 允许范围检验,使慢读测试- x
    -g  生成统计数据在CSV和HTML格式,模式是缓慢的xxx。csv / html,其中xxx是时间和日期
    -i  seconds秒间隔跟踪数据在几秒钟内,每个连接
    -k  管道因子次数重复请求在同一连接慢读测试如果服务器支持HTTP管道内衬。
    -l  在几秒钟内,秒测试时间
    -n  秒间隔从接收缓冲区读取操作
    -o  文件定义输出文件路径和/或名称,如果指定有效- g
    -p  秒超时等待HTTP响应在探头连接后,服务器被认为是不可访问的
    -r  seconds连接速度
    -s  字节值的内容长度标题详细说明,如果指定- b
    -t  verb自定义
    -u  URL目标URL,相同的格式键入浏览器,e。g https://host[:port]/
    -v  level冗长等级0 – 4的日志
    -w  字节范围广告的窗口大小会选择从
    -x  字节最大长度的跟踪数据结束
    -y  字节范围广告的窗口大小会选择从
    -z  字节从接收缓冲区读取字节与单一的read()操作
    

      

    验证命令

    slowloris模式:

    slowhttptest -c 1000 -H -i 10 -r 200 -t GET -u https://yourtarget.com/index.html -x 24 -p 3

    Slow Body攻击:

    slowhttptest -c 1000 -B -g -o my_body_stats -i 110 -r 200 -s 8192 -t FAKEVERB -u http://www.mywebsite.com -x 10 -p 3
    

      

    Slow Read模式:

    slowhttptest -c 1000 -X -r 1000 -w 10 -y 20 -n 5 -z 32 -u http://yourtarget.com -p 5 -l 350 -e x.x.x.x:8080
    

      

    判断依据

    1、当服务器可控,可以通过以下命令来确认是否存在该漏洞:
    pgrep http | wc -l  进程数量
    netstat -antp | grep 443 |wc -l  网络连接数量
    2、在攻击的时间段,服务无法正常访问则存在漏洞。
    

      

    修复建议

    • 设定URL白名单和黑名单,识别坏的IP;
    • 设置一个绝对连接超时;
    • 定义最小的输入数据速率;
    • 对web服务器的http头部传输的最大许可时间进行限制,修改成最大许可时间为20秒。
  • 相关阅读:
    wx.createWorker使用方法
    Chrome DevTools 面板之console全面解析
    DrawCall优化之分析利器《SpectorJS》
    CocosCreator ScrollView性能优化
    Debian 10.7 安装记录
    Glide切换图片为ARGB格式
    java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
    org.apache.catalina.util.LifecycleMBeanBase.unregister Failed to unregister MBean with name [Catalina:type=Service] during component destruction javax.management.InstanceNotFoundException
    npm install报错:integrity checksum failed when using sha1
    Oracle学习:新建表空间
  • 原文地址:https://www.cnblogs.com/endust/p/11960901.html
Copyright © 2011-2022 走看看