【网络安全】HTTP Slowloris攻击原理解析

文章目录

    • Slowloris攻击的概念
    • Slowloris攻击原理
    • Slowloris攻击的步骤
    • 其他的DDoS攻击类型
      • UDP Flood
      • ICMP (Ping) Flood
      • SYN Flood
      • Ping of Death
      • NTP Amplification
      • HTTP Flood
      • Zero-day DDoS 攻击
    • 推荐阅读

Slowloris攻击的概念

Slowloris是在2009年由著名Web安全专家RSnake提出的一种攻击方法,Slowloris是一种针对Web服务器的攻击方式。它利用了服务器在处理HTTP连接时的一些弱点,通过向服务器发送大量的HTTP请求,但在每个请求的头部只发送部分数据并保持连接不断开的方式来耗尽服务器资源。

Slowloris攻击原理

攻击者使用Slowloris攻击时,会向目标服务器发送大量的请求,但这些请求不会完全发送完整的HTTP头部信息,而是会保持未完成状态。由于这些请求未完成,服务器会为每个请求保持连接状态,但却不会响应或关闭这些连接。这导致服务器的连接资源最终被耗尽,无法响应其他正常的合法请求,使得服务器无法向合法用户提供Web服务。
在这里插入图片描述
在正常的HTTP包头中,是以两个CLRF1表示HTTP Headers部分结束的。如果Web Server只收到了一个\r\n,因此将认为HTTP Headers部分没有结束,并保持此连接不释放,继续等待完整的请求。此时客户端再发送任意HTTP头,保持住连接即可。

import requests# 定义头部信息
headers = {'User-Agent': 'My User Agent',         # 用户代理信息'Accept': 'application/json',          # 接受的内容类型'Content-Type': 'application/json',    # 请求的内容类型'Authorization': 'Bearer YOUR_TOKEN',  # 授权信息# 添加其他需要的头部信息...
}# 构造请求
url = 'https://api.example.com/endpoint'
response = requests.get(url, headers=headers)# 输出响应内容
print(response.text)

以python为例,在引入requests库时,requests 库会自动处理生成符合 HTTP 标准的头部信息,包括正确的 CRLF 格式。你只需提供键值对形式的头部信息,库会负责构建正确格式的头部。这样,就避免了开发人员无意间造成的慢速访问或者慢速攻击。

Slowloris攻击不会占用很大的网络带宽,只是利用看起来正常但是很慢,并且是正常的流量来消耗服务器的资源,所以被归类为“慢速”攻击。

Slowloris攻击的步骤

  1. 建立连接: 攻击者利用自动化工具向目标服务器发起大量的网络连接请求。

  2. 发送部分请求头: 每个连接都会发送一个HTTP请求,但请求头部信息只会发送部分内容,保持请求处于未完成状态。

  3. 保持连接打开: 攻击者会定期向服务器发送少量数据以保持连接处于打开状态,但不会完成整个HTTP请求。这样,服务器为每个连接保持打开状态,并等待请求的完成。

  4. 耗尽服务器资源: 由于服务器在等待这些请求完成而保持连接打开,这会消耗服务器的连接资源。随着攻击者不断创建新的连接并保持它们处于未完成状态,服务器的连接资源最终会耗尽,导致合法用户无法建立新的连接或访问服务器。

  5. 拒绝服务: 一旦服务器的连接资源被耗尽,它将无法响应新的合法请求,导致服务不可用,即拒绝服务攻击(Denial of Service)。

其他的DDoS攻击类型

UDP Flood

UDP flood是指用用户数据报协议(UDP)数据包淹没目标的任何DDoS攻击。攻击的目的是攻击远程主机上的随机端口。这使得主机反复检查在该端口侦听的应用程序,并且(当没有找到应用程序时)发送一个ICMP“目的地不可达”数据包的响应。这个过程会消耗主机资源,最终导致其他用户无法访问。
在这里插入图片描述

ICMP (Ping) Flood

与UDP flood攻击类似,ICMP flood攻击通过ICMP Echo Request (ping)报文淹没目标资源,通常以最快的速度发送报文,而不等待应答。这种类型的攻击会消耗传入和传出带宽,因为受害者的服务器通常会尝试使用ICMP Echo Reply数据包进行响应,从而导致整个系统的显著减速。
在这里插入图片描述

SYN Flood

SYN flood DDoS攻击利用了TCP连接序列中的一个普遍弱点(“三次握手”),其中SYN发起到主机的TCP连接的请求必须由该主机的SYN-ACK响应响应,然后由请求者的ACK回复确认。在SYN洪水的场景中,请求者将发送多个SYN请求,但要么不响应主机的SYN- ack响应,要么从欺骗的IP地址发送SYN请求。
无论哪种方式,主机系统都会继续等待每个请求的确认,绑定资源,直到无法建立新的连接,并最终导致拒绝服务。
在这里插入图片描述

Ping of Death

POD或死亡ping攻击涉及攻击者向计算机发送几个恶意或畸形的ping。IP报文的最大长度(包括报头)为65,535字节。然而,数据链路层经常对最高帧大小设置限制——例如,在以太网网络上限制为1500字节。在这种情况下,一个大的IP数据包被分成不同的IP数据包(分片),接收主机将这些IP分片重新组装成一个完整的数据包。
在Ping of Death的攻击中,在恶意操纵片段内容后,重新组装时,会给接收方留下一个大于65,535字节的IP数据包。这可能超出为数据包分配的内存缓冲区,从而导致拒绝合法数据包的服务。
在这里插入图片描述

NTP Amplification

NTP(Network Time Protocol)放大攻击是一种利用NTP服务器的特性来发起分布式拒绝服务(DDoS)攻击的方式。NTP是用于同步计算机系统时间的协议,攻击者利用其Monlist命令的特性来进行攻击。

攻击者向运行NTP服务器的计算机发送伪造的请求,将目标IP地址设置为受害者的IP。NTP服务器会响应这个请求,并将一个包含最多最近的客户端的IP地址的响应发送回被伪造的IP地址(即受害者的IP地址)。攻击者利用这一点,向NTP服务器发送大量伪造请求,并导致NTP服务器向受害者发送大量的响应数据,从而将其网络连接耗尽,造成拒绝服务。

攻击的效果类似于其他放大攻击(例如DNS放大攻击),攻击者发送小型请求,但服务器的响应会远远大于请求的大小,这导致了数据的放大效应,最终使受害者遭受大量的网络流量,超出其网络带宽和处理能力的承受范围。

在这里插入图片描述

HTTP Flood

HTTP flood攻击是一种DDoS(分布式拒绝服务)攻击,利用大量伪造的HTTP请求同时向目标服务器发送请求,目的在于超载服务器的处理能力,使其无法有效地处理合法用户的请求,导致服务不可用。攻击者通过发送大量请求,耗尽服务器的资源,如带宽、处理器等,造成网络阻塞或服务器崩溃,使合法用户无法访问或使用目标网站或服务。

在这里插入图片描述

Zero-day DDoS 攻击

Zero-day DDoS Attacks是指利用针对未知漏洞的攻击手法,针对网络系统进行分布式拒绝服务(DDoS)攻击,攻击者利用这些未被厂商或组织发现的安全漏洞,通过快速开发和利用这些漏洞来对网络设施进行攻击,导致系统服务不可用。
【网络安全】零日漏洞(0day)是什么?如何防范零日攻击?
这类攻击对于网络防御者来说尤其具有挑战性,因为攻击利用了未知漏洞,使得预防和应对变得更为困难,通常需要实时响应和快速补救措施,以最小化攻击带来的影响。

推荐阅读

  • 【网络安全】零日漏洞(0day)是什么?如何防范零日攻击?
  • 【网络安全】网络设备可能面临哪些攻击?
  • 【漏洞修复】Cisco IOS XE软件Web UI权限提升漏洞及修复方法
  • 【网络安全】专门为Web应用程序提供安全保护的设备-WAF

  1. CLRF指的是"Carriage Return Line Feed"(回车换行),它是一种控制字符序列,用于表示文本中的换行操作。在不同的操作系统和文本文件中,换行的方式可能有所不同。
    回车(Carriage Return):在ASCII字符集中,它的十六进制值是0x0D,通常表示为 \r。回车符指示将光标移动到当前行的开头位置。
    换行(Line Feed):在ASCII字符集中,它的十六进制值是0x0A,通常表示为 \n。换行符指示将光标移动到下一行的开头位置。
    在很多操作系统中,换行被表示为回车符后紧跟着一个换行符(即CRLF,\r\n),而在一些其他的系统中,可能只使用回车符(\r)或者换行符(\n)来表示换行。 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/218368.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

教育数字化转型 赋能家庭场景自主学习习惯养成

北京市气象台12月12日22时升级发布暴雪橙色预警信号,北京市教委决定自12月13日开始,全市中小学幼儿园采取学生临时居家学习措施。自疫情以来,家庭已经成为另一个学习中心,学校不再是教育的孤岛。 学习方式的变革,数字…

Etcd实战(二)-k8s集群中Etcd数据存储

1 介绍 k8s中所有对象的manifest都需要保存到某个地方,这样他们的manifest在api server重启和失败的时候才不会丢失,因此引入了etcd。在k8s中只有api server和etcd直接交互,其它组件都通过api server间接和etcd交互,这样做的好处…

目标检测锚框

目标检测锚框 最开始呢,我们需要先介绍一下框,先学会一下怎么画框 导入所需要的包 from PIL import Image import d2lzh_pytorch as d2l import numpy as np import math import torch展示一下本次实验我们用到的图像,猫狗 d2l.set_figsiz…

python自动化测试实战 —— WebDriver API的使用

软件测试专栏 感兴趣可看:软件测试专栏 自动化测试学习部分源码 python自动化测试相关知识: 【如何学习Python自动化测试】—— 自动化测试环境搭建 【如何学习python自动化测试】—— 浏览器驱动的安装 以及 如何更…

Linux shell编程学习笔记35:seq

0 前言 在使用 for 循环语句时,我们经常使用到序列。比如: for i in 1 2 3 4 5 6 7 8 9 10; do echo "$i * 2 $(expr $i \* 2)"; done 其中的 1 2 3 4 5 6 7 8 9 10;就是一个整数序列 。 为了方便我们使用数字序列,Linux提供了…

理解Socket

前言 我在去年就学习过Java中Socket的使用,但对于Socket的理解一直都是迷迷糊糊的。看了网上很多关于Socket的介绍,看完还是不太理解到底什么是Socket,还是很迷。直到最近在学习计算机网络,我才对Socket有了一个更深地理解。之前一…

5. PyTorch——数据处理模块

1.数据加载 在PyTorch中,数据加载可通过自定义的数据集对象。数据集对象被抽象为Dataset类,实现自定义的数据集需要继承Dataset,并实现两个Python魔法方法: __getitem__:返回一条数据,或一个样本。obj[in…

uniapp框架——初始化vue3项目(搭建ai项目第一步)

文章目录 ⭐前言💖 小程序系列文章 ⭐uniapp创建项目💖 初始化项目💖 uni实例生命周期💖 组件生命周期💖 页面调用💖 页面通讯💖 路由 ⭐搭建首页⭐form表单校验页面⭐总结⭐结束 ⭐前言 大家好…

以pycharm为例,生成Python项目所需要的依赖库/包文档:requirements.txt

平时我们在编写或者使用别人的Python项目时,往往会看到一个文档requirements.txt,该文档是描述一个Python项目中的第三方库的名称以及版本。本文介绍导出python当前项目依赖包requirements.txt的操作步骤。 方法一:如果每个项目有对应的虚拟…

【SpringBoot】配置文件

配置文件官网 1. 配置方式 application.propertiesapplication.yml / application.yaml 2. 自定义配置信息 将实体类中的本应该写死的信息写在属性配置文件中。 可以使用 Value("${键名}") 获取,也可以使用 ConfigurationProperties(prefix"前…

java SSM酒店客房管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM酒店客房管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代 码和数据库,系统主要采…

LAMP平台——构建PHP运行环境

在构建LAMP平台时,各组件的安装顺序依次为Linux、Apache、MySQL、PHP。其中Apache和 MySQL的安装并没有严格的顺序;而PHP环境的安装一般放到最后,负责沟通Web服务器和数据库 系统以协同工作。 PHP 即 Hypertext Preprocessor(超级…

python 爬虫 m3u8 视频文件 加密解密 整合mp4

文章目录 一、完整代码二、视频分析1. 认识m3u8文件2. 获取密钥,构建解密器3. 下载ts文件4. 合并ts文件为mp4 三、总结 一、完整代码 完整代码如下: import requests from multiprocessing import Pool import re import os from tqdm import tqdm fro…

深度探索Linux操作系统 —— 构建根文件系统

系列文章目录 深度探索Linux操作系统 —— 编译过程分析 深度探索Linux操作系统 —— 构建工具链 深度探索Linux操作系统 —— 构建内核 深度探索Linux操作系统 —— 构建initramfs 深度探索Linux操作系统 —— 从内核空间到用户空间 深度探索Linux操作系统 —— 构建根文件系统…

媒体直播平台有哪些,活动直播如何扩大曝光?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体直播平台包括人民视频、新华社现场云、中国网、新浪新闻直播、搜狐视频直播、凤凰新闻直播、腾讯新闻直播等。活动直播想要扩大曝光,可以考虑以下方式: 1.选择…

海思平台isp之ccm标定

文章目录 1、raw图采集2、ccm标定2.1、标定参数配置2.2、标定效果优化2.2.1、优化方式一2.2.2、优化方式二2.2.3、优化方式三1、raw图采集 raw图采集步骤及标准,请参考文章 《海思平台isp之ccm标定》。2、ccm标定 2.1、标定参数配置 (1)图像基本参数 (2)黑电平设置 (…

spring boot 实现直播聊天室

spring boot 实现直播聊天室 技术方案: spring bootwebsocketrabbitmq 使用 rabbitmq 提高系统吞吐量 引入依赖 <dependencies><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.42&…

十六、YARN和MapReduce配置

1、部署前提 &#xff08;1&#xff09;配置前提 已经配置好Hadoop集群。 配置内容&#xff1a; &#xff08;2&#xff09;部署说明 &#xff08;3&#xff09;集群规划 2、修改配置文件 MapReduce &#xff08;1&#xff09;修改mapred-env.sh配置文件 export JAVA_HOM…

从零开始:前端架构师的基础建设和架构设计之路

文章目录 一、引言二、前端架构师的职责三、基础建设四、架构设计思想五、总结《前端架构师&#xff1a;基础建设与架构设计思想》编辑推荐内容简介作者简介目录获取方式 一、引言 在现代软件开发中&#xff0c;前端开发已经成为了一个不可或缺的部分。随着互联网的普及和移动…

智能科技企业网站搭建的作用是什么

随着科学技术快速提升&#xff0c;各种智能产品随之而来&#xff0c;每个赛道里都涌入了大量企业商家&#xff0c;有些热门产品更是广受关注&#xff0c;对企业来说&#xff0c;形象、品牌、信息等方面需要完美呈现到用户眼前&#xff0c;而网站无疑是很好的工具。 企业通过【…