【网络安全】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攻击的步骤
-
建立连接: 攻击者利用自动化工具向目标服务器发起大量的网络连接请求。
-
发送部分请求头: 每个连接都会发送一个HTTP请求,但请求头部信息只会发送部分内容,保持请求处于未完成状态。
-
保持连接打开: 攻击者会定期向服务器发送少量数据以保持连接处于打开状态,但不会完成整个HTTP请求。这样,服务器为每个连接保持打开状态,并等待请求的完成。
-
耗尽服务器资源: 由于服务器在等待这些请求完成而保持连接打开,这会消耗服务器的连接资源。随着攻击者不断创建新的连接并保持它们处于未完成状态,服务器的连接资源最终会耗尽,导致合法用户无法建立新的连接或访问服务器。
-
拒绝服务: 一旦服务器的连接资源被耗尽,它将无法响应新的合法请求,导致服务不可用,即拒绝服务攻击(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
CLRF指的是"Carriage Return Line Feed"(回车换行),它是一种控制字符序列,用于表示文本中的换行操作。在不同的操作系统和文本文件中,换行的方式可能有所不同。
回车(Carriage Return):在ASCII字符集中,它的十六进制值是0x0D,通常表示为 \r。回车符指示将光标移动到当前行的开头位置。
换行(Line Feed):在ASCII字符集中,它的十六进制值是0x0A,通常表示为 \n。换行符指示将光标移动到下一行的开头位置。
在很多操作系统中,换行被表示为回车符后紧跟着一个换行符(即CRLF,\r\n),而在一些其他的系统中,可能只使用回车符(\r)或者换行符(\n)来表示换行。 ↩︎
相关文章:
【网络安全】HTTP Slowloris攻击原理解析
文章目录 Slowloris攻击的概念Slowloris攻击原理Slowloris攻击的步骤其他的DDoS攻击类型UDP FloodICMP (Ping) FloodSYN FloodPing of DeathNTP AmplificationHTTP FloodZero-day DDoS 攻击 推荐阅读 Slowloris攻击的概念 Slowloris是在2009年由著名Web安全专家RSnake提出的一…...
从最近爆火的ChatGPT,我看到了电商的下一个形态
爆火的ChatGPT似乎让每个行业有了改造的可能性,电商行业也不例外。 在讨论了很多流量红利消失的话题后,我们看到互联网电商行业不再性感,从淘宝天猫,京东,到拼多多,再到抖音,快手,电…...
云原生向量计算引擎 PieCloudVector:为大模型提供独特记忆
拓数派大模型数据计算系统(PieDataComputingSystem,缩写:πDataCS)在10月24日程序员节「大模型数据计算系统」2023拓数派年度技术论坛正式发布。πDataCS 以云原生技术重构数据存储和计算,「一份存储,多引擎…...
大创项目推荐 深度学习 opencv python 实现中国交通标志识别
文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 🔥 优质…...
深度学习实战67-基于Stable-diffusion的图像生成应用模型的搭建,在Kaggle平台的搭建部署,解决本地没有算力资源问题
大家好,我是微学AI,今天给大家介绍一下深度学习实战67-基于Stable-diffusion的图像生成应用模型的搭建,在Kaggle平台的搭建部署,解决本地没有算力资源问题。稳定扩散模型(Stable Diffusion Model)是一种用于图像增强和去噪的计算机视觉算法。它通过对输入图像进行扩散过程…...
云原生之深入解析Kubernetes本地持久化存储方案OpenEBS LocalPV的最佳实践
一、K8s 本地存储 K8s 支持多达 20 种类型的持久化存储,如常见的 CephFS 、Glusterfs 等,不过这些大都是分布式存储,随着社区的发展,越来越多的用户期望将 K8s 集群中工作节点上挂载的数据盘利用起来,于是就有了 loca…...
设计模式-策略(Strategy)模式
又被称为政策(方针)模式策略模式(Strategy Design Pattern):封装可以互换的行为,并使用委托来决定要使用哪一个策略模式是一种行为设计模式,它能让你定义一系列算法,并将每种算法分别放入独立的类中&#x…...
Star 4.1k!Gitee GVP开源项目!新一代桌面应用开发框架 ElectronEgg!
前言 随着现代技术的快速升级迭代及发展,桌面应用开发已经变得越来越普及。然而对于非专业桌面应用开发工程师在面对这项任务时,可能会感到无从下手,甚至觉得这是一项困难的挑战。 本篇文章将分享一种新型桌面应用开发框架 ElectronEgg&…...
node.js学习(简单聊天室)
在掘金查看该文章 1. TCP服务搭建 1.1 socket 先来粗略了解下socket 套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中&am…...
cfa一级考生复习经验分享系列(四)
备考CFA一级满打满算用了一个多月,每天八个小时以上。可能如果仅以通过为目标的话完全不用这样,看过太多类似于只看了一周就通过了考试又或是放弃了好几门飘过了考试的情况,我觉得这是不正确的考试状态,完全不必惊叹,踏…...
PPT插件-好用的插件-放映笔、绘图板-大珩助手
放映笔 幻灯片放映时,工具在幻灯片的左下方,本工具在幻灯片的右侧,可以移动,可以方便在右侧讲课时候使用 绘图板 可在绘图板上写签名、绘制图画、写字等等,点画笔切换橡皮擦,点插入绘图,将背景…...
弧形导轨的安装注意事项
随着弧形导轨的应用日渐普遍,在日常使用中总会遇到很多各种各样的问题,原因很多是安装不正确或者使用不恰当。不合理的使用不但不能充分发挥其价值还会导致使用寿命大打折扣,使企业造成不必要的损失,因此大伙有必要了解一些安装的…...
Elasticsearch优化-04
Elasticsearch优化 1、优化-硬件选择 Elasticsearch 的基础是 Lucene,所有的索引和文档数据是存储在本地的磁盘中,具体的路径可在 ES 的配置文件…/config/elasticsearch.yml中配置,如下: # #Path to directory where to store …...
Springboot+vue的公寓报修管理系统(有报告)。Javaee项目,springboot vue前后端分离项目
演示视频: Springbootvue的公寓报修管理系统(有报告)。Javaee项目,springboot vue前后端分离项目 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的公寓报修管理系统,采用M(model&…...
uniapp腾讯地图路线规划
在uniapp中使用腾讯地图进行路线规划需要通过腾讯地图API进行操作。以下是基本的步骤: 在腾讯地图开放平台上注册账号,并创建应用获取API key。 在uniapp的项目中引入腾讯地图API的JS文件,例如在index.html中添加以下代码: <…...
Python 全栈体系【四阶】(五)
第四章 机器学习 三、数据预处理 1. 数据预处理的目的 去除无效数据、不规范数据、错误数据 补齐缺失值 对数据范围、量纲、格式、类型进行统一化处理,更容易进行后续计算 2. 预处理方法 2.1 标准化(均值移除) 让样本矩阵中的每一列的…...
原点处可微问题
文章目录 原点可微问题例例 原点可微问题 lim x → 0 , y → 0 f ( x , y ) − f ( 0 , 0 ) x 2 y 2 \lim\limits_{x\to{0},y\to{0}} \frac{f(x,y)-f(0,0)}{\sqrt{x^2y^2}} x→0,y→0limx2y2 f(x,y)−f(0,0) 0 0 0(1)是函数 f ( x , y ) f(x,y) f(x,y)在 ( 0 , 0 ) (…...
Flink+Kafka消费
引入jar <dependency><groupId>org.apache.flink</groupId><artifactId>flink-java</artifactId><version>1.8.0</version> </dependency> <dependency><groupId>org.apache.flink</groupId><artifactI…...
Seconds_Behind_Master越来越大,主从同步延迟
问题现象 发现从库mysql_slave的参数Seconds_Behind_Master越来越大。已排除主从服务器时间不一致;那么主要就判断两点:是io thread慢还是 sql thread慢?先观察show slave status\G 。 判断3个参数(参数后面的值是默认空闲时候的…...
除法求值[中等]
一、题目 给你一个变量对数组equations和一个实数值数组values作为已知条件,其中equations[i] [Ai, Bi]和values[i]共同表示等式Ai / Bi values[i]。每个Ai或Bi是一个表示单个变量的字符串。另有一些以数组queries表示的问题,其中queries[j] [Cj, Dj…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
