【Web安全】应用层拒绝服务攻击

news2025/1/14 1:02:43

目录

1、DDOS简介

2、应用层DDOS

2.1 CC攻击

2.2 限制请求频率

2.3 道高一尺,魔高一丈

3、验证码 CAPTCHA

4、防御应用层DDOS

5、资源耗尽攻击

5.1 Slowloris攻击

 5.2 HTTP POST DOS

 5.3 Server Limit DOS

6、正则引发的血案:ReDOS


1、DDOS简介

DDOS又称分布式拒绝服务(Distributed Denial of Service)。DDOS本是利用合理的请求造成资源过载,导致服务不可用。

分布式拒绝服务攻击,将正常请求放大了若干倍,通过若干个网络节点同时发起攻击,以达成规模效应。这些网络节点往往是黑客们所控制的“肉鸡”,数量达到一定规模后,就形成了一个僵尸网络

常见的DDOS攻击有SYN flood、UDP flood、ICMP flood等。具体的攻击过程可以看我之前的博客,下附链接:

【每天学习一点新知识】网络安全--拒绝服务攻击_RexHarrr的博客-CSDN博客_拒绝服务攻击学习拒绝服务攻击(SYN泛洪、Smurf攻击、DDoS)原理详解https://blog.csdn.net/m0_51683653/article/details/127522087?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167213068616800211574239%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=167213068616800211574239&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-127522087-null-null.blog_rank_default&utm_term=%E6%8B%92%E7%BB%9D%E6%9C%8D%E5%8A%A1&spm=1018.2226.3001.4450

2、应用层DDOS

2.1 CC攻击

CC攻击的前身是一个叫fatboy的攻击程序,当时黑客为了挑战绿盟的一款反DDOS设备而开发了它。绿盟是中国著名的安全公司之一,它有一款叫“黑洞”的反DDOS设备能够有效清洗SYN Flood等有害流量,而黑客则挑衅似的将fatboy所实现的攻击方式命名为:Challenge Collapasar(简称CC),意在黑洞的防御下,仍然能有效完成拒绝服务攻击。

CC攻击的原理:对一些消耗资源较大的应用页面不断发起正常的请求,以达到消耗服务端资源的目的。

应用层DDOS攻击还可以通过以下方式完成:在黑客入侵了一个流量很大的网站后,通过篡改页面,将巨大的流量分流到目标网站。

比如,在大流量网站上插入一段代码:

<iframe src="http://target" height=0 width=0 ></iframe>

那么所有访问该页面的用户,都将对此target发起一次HTTP GET请求,从而导致target拒绝服务。

2.2 限制请求频率

最常见的针对应用层的DDOS攻击的防御措施,就是在应用中针对每一个“客户端”做一个请求频率的限制。

例如:通过IP地址和Cookie定位一个客户端,如果客户端的请求在一段时间内过于频繁,则对之后来自该客户端的所有请求都重定向到一个出错界面。

2.3 道高一尺,魔高一丈

但是上述的防御方法并不完美。如果用户的IP地址发生改变,Cookie又被清空,则无法再定位到同一个客户端。

如何让IP地址发生变化?使用“代理服务器”是一个常见的做法。在实际的攻击中,大量使用代理服务器或傀儡机来隐藏攻击者的真实IP地址,攻击者可以利用这些方法不断变换IP地址,就可以绕过服务器对单个IP地址请求频率的限制了。

AccessDiver已经自动化地实现了这种变换IP地址的攻击,它可以批量导入代理服务器地址,然后通过代理服务器在线暴力破解用户名和密码。

 如何解决?

  • 应用代码做好性能优化。合理地使用memcache就是一个很好的优化方案,将数据库的压力尽可能转移到内存中,此外还要及时地释放资源,比如及时关闭数据库连接,减少空连接等消耗。
  • 在网络架构上做好优化。善于利用负载均衡分流,避免用户流量集中在单台服务器上,同时可以充分利用好CDN和镜像站点的分流作用,缓解主站的压力。
  • 实现一些对抗手段,如限制每个IP地址的请求频率。

3、验证码 CAPTCHA

验证码能有效阻止自动化的重放行为,因为脚本通常无法自动识别出验证码。

 随着技术发展,破解验证码的方法变得越来越成熟。通过彩虹表、图像处理技术,都可以破解验证码。

 

4、防御应用层DDOS

 在一般情况下,服务器端应用可以通过判断HTTP头中的User-Agent字段来识别客户端,但User-Agent字段是可以被客户端篡改的,所以也不可靠。

一种比较可靠的方法是让客户端解析一段JavaScript并给出正确的运行结果。因为大部分的自动化脚本都是直接构造HTTP包完成的,并非在一个浏览器环境中发起的请求。因此一段需要计算的JavaScript,可以判断出客户端是不是浏览器,同样发送一个flash让客户端解析也可以起到同样的作用,但这不是万能的。

除了人机识别外,还可以在Web Server这一层做防御,其好处是请求尚未到达后端的应用程序里,可以起到一个保护作用。

在Apache的配置文件中,有一些参数可以缓解DDOS攻击,比如调小Timeout、KeepAliveTimeout值、增加MaxClient值,但这些参数可能会影响到正常应用,因此需要根据实际情况而定。

"mod_qos"是Apache的一个Module,它可以帮助缓解应用层DDOS攻击。

 mod_qos从思路上仍然是限制单个IP地址的访问频率,但如果攻击者使用了代理或傀儡机怎么办呢?

因为发起应用层DDOS攻击的IP地址都是真实的,所以在实际情况中,攻击者的IP地址其实也不可能无限制增长。假设攻击者有1000个IP地址发起攻击,如果请求了10000次,则平均每个IP地址请求同一页面达到10次,攻击如果持续下去,单个IP地址的请求也将变多,但无论怎么变,都是在这1000个IP地址的范围内做轮询。

为此Yahoo设计了一套算法,根据IP地址和Cookie等信息,可以计算客户端的请求频率并进行拦截。

5、资源耗尽攻击

5.1 Slowloris攻击

Slow Loris是2009年由著名的Web安全专家RSnake提出的一种攻击方法,其原理是以极低的速度往服务器发送HTTP请求。由于Web Server对于并发的连接数都有一定的上限,因此若是恶意占用住这些连接不释放,那么Web Server的所有连接都将被恶意连接占用,无法接受新的请求,导致拒绝服务。

为了保持住这个连接,RSnake构造了一个畸形的HTTP请求:

 在正常的HTTP包头中,是以两个CLRF表示HTTP Headers部分结束的。

 由于Web Server只收到了一个\r\n,因此会认为HTTP Headers部分没有结束,并保持此连接不释放,继续等待完整的请求,此时客户端再发送任意HTTP头,保持住连接即可。

当构造多个连接之后,服务器的连接数就会达到上限。

 5.2 HTTP POST DOS

其原理是在发送HTTP POST包时,指定一个非常大的 Content-Length值,然后以很低的速度发包,比如10~100s发一个字节,保持住这个连接不断开。当客户端连接数多了以后,占用住了Web Server的所有可用连接,从而导致DOS。

成功实施攻击后会留下错误日志(Apache)

 5.3 Server Limit DOS

Cookie造成的拒绝服务攻击。

Web Server对HTTP包头有长度限制,以Apache为例,默认是8192字节,也就是Apache所能接受的最大HTTP包头大小为8192字节(这里指的是Request Header,如果是Request Body,则默认大小限制是2GB)。如果客户端发送的HTTP包头超过这个大小,服务器就会返回一个4xx错误,提示信息为:

 假如攻击者通过XSS往客户端里写入了一个超长的Cookie,则该客户端在清空Cookie之前,无法再访问该Cookie所在域的任何页面,因为Cookie是放在HTTP包头里发送的,而Web Server会认为这是一个超长的非正常请求,从而导致客户端的拒绝服务。

6、正则引发的血案:ReDOS

正则表达式是基于NFA的,它是一个状态机,每个状态和输入符号都可能有许多不同的下一个状态。正则解析引擎将遍历所有可能的路径直到最后。由于每个状态都有若干个“下一个状态”,因此决策算法会逐个尝试每个“下一个状态”,直到找到一个匹配的。

例如:

^(a+)+$

当输入只有4个a时

aaaaX

其执行过程如下:

 

 它只有16条可能的路径,很快就能被遍历完。

当输入:

aaaaaaaaaaaaaaaaX

就变成65536条可能的路径,这极大地增加了正则引擎解析数时的消耗。当用户恶意构造输入时,这些有缺陷的正则表达式会消耗大量的系统资源(比如CPU和内存),从而导致整台服务器的性能下降,系统速度变慢甚至失去响应。

如果再增加数量n,则消耗的时间也会翻倍。

下面是一些存在ReDOS的正则表达式:

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

章节五:RASA NLU组件介绍--语言模型和分词器

​ 这里写目录标题一、前言二、语言模型组件1、MitieNLP2、SpacyNLP三、分词器1、WhitespaceTokenizer2、JiebaTokenizer3、MitieTokenizer4、SpacyTokenizer5、自定义分词器一、前言 RASA在处理对话时&#xff0c;整体流程是pipeline结构&#xff0c;自然语言理解&#xff08…

【漏洞分析】Apache ShardingSphere-Proxy <5.3.0 身份认证绕过

漏洞简介 2022年12月22日&#xff0c;Apache 官方公告发布 ShardingSphere-Proxy 5.3.0 之前版本存在身份绕过漏洞&#xff08;CVE-2022-45347&#xff09;。当 ShardingSphere-Proxy 使用 MySQL 作为后端数据库时&#xff0c;由于 ShardingSphere-Proxy 在客户端认证失败后没…

Linux-脚本安装jdk(使用jdk压缩包方式)

1、下载Linux版jdk oracle官网:Java Downloads | Oracle 2、上传jdk到linux 在linux中软件一般安装到/usr/local目录中 3、将jdk解压 解压命令: tar -zxvf jdk-8u301-linux-x64.tar.gz 将解压后的jdk改名为jdk8 mv jdk1.8.0_301 jdk8 4、配置jdk环境变量 使用vi打开/etc/p…

Java 面试题 (六) --------- 框架相关

1、什么是 Spring 框架&#xff1f;Spring 框架有哪些主要模块&#xff1f; Spring是一个控制反转和面向切面的容器框架。 Spring有七大功能模块&#xff1a; 1、Core Core模块是Spring的核心类库&#xff0c;Core实现了IOC功能。 2、AOP Apring AOP模块是Spring的AOP库&…

FLTK的UI设计工具FLUID使用方法总结

tags: FLTK C GUI 写在前面 终于又捡起来FLTK了, 先来看看怎么通过FLUID创建一个图形界面并完成回调函数的创建, 参考的是官方教程中关于创建一个CubeView程序的例子, 教程里面很多都与最新版本的FLTK界面不太一致, 但是通过我的摸索还是找出了方法. 下面来分享一下. 创建类…

centos7搭建mysql5.6

检查是否安装mysql rpm -qa | grep mysql 检查已安装的Mariadb rpm -qa | grep -i mariadb 卸载已安装的Mariadb数据库 rpm -qa | grep mariadb | xargs rpm -e --nodeps 下载mysql5.6安装包文件 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm安…

详解什么是Polygon跨链桥| Tokenview

Polygon是一个Layer2网络&#xff0c;用于解决以太坊的吞吐量和主权挑战。尽管以太坊是最受欢迎的区块链开发平台&#xff0c;但它的吞吐量很低&#xff0c;不适合某些应用程序。Polygon提供特定于应用程序的、与以太坊兼容的侧链&#xff0c;将独立链的可扩展性和独立性与以太…

自学开发技术,从入门到入行

今天我们不谈技术&#xff0c;也不聊业务&#xff0c;说说学习技术的心得。 说到学习这种事情&#xff0c;无论是学什么&#xff0c;都需要持之以恒&#xff0c;拥有坚持的决心才有可能会学到一些东西。如果只是三天打鱼&#xff0c;两天晒网的态度&#xff0c;不出差错的话&a…

ORB-SLAM2 --- Tracking::TrackLocalMap函数

目录 1.函数作用 2.函数步骤 3.code 4.函数解释 ORB-SLAM2 --- Tracking::UpdateLocalKeyFrames函数https://blog.csdn.net/qq_41694024/article/details/128307627 1.函数作用 在跟踪得到当前帧初始姿态后&#xff0c;现在对local map进行跟踪得到更多的匹配&#xff0…

《迷你世界》亿级玩家都在用的游戏场景推荐系统长啥样?

导读&#xff1a;中国TOP1沙盒游戏&#xff0c;如何解决数据存储难题&#xff1f; 提到推荐系统&#xff0c;很多人都在电商购物、资讯或娱乐平台中体验过。比如&#xff0c;你刚在某电商APP买了一部手机&#xff0c;过两天再登录时&#xff0c;首页推荐中必定有耳机、手机壳等…

【信息安全】seed-labs实验-Secret-Key Encryption Lab

目录Task 1: Frequency AnalysisTask 2: Encryption using Different Ciphers and ModesTask 4: PaddingTask 5: Error Propagation – Corrupted Cipher TextTask 6: Initial Vector (IV) and Common MistakesTask 6.1. IV ExperimentTask 6.2. Common Mistake: Use the Same …

python源代码打包成为exe文件

目录标题前言下载安装模块&#xff08;pyinstaller&#xff09;执行打包命令1、在cmd中进入项目文件2、执行pyinstaller命令成exe文件3、找到exe文件报错以及解决报错X1解决方法&#xff1a;报错X2解决方法&#xff1a;写在最后前言 大家都知道我们在pycharm中编写的源代码&am…

如何在 15 分钟内度量 DORA 指标?

在这篇文章中&#xff0c;我们将介绍 DevOps 四个关键指标——DORA 指标是什么&#xff0c;其度量难点&#xff0c;以及如何基于开源工具快速实现 DORA 指标的持续追踪。如果你熟悉 DORA 指标&#xff0c;可以直接跳到本文第二部分。 什么是 DORA 指标&#xff1f; DORA 的全…

设备树的使用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、设备树的概念&#xff1f;二、设备树的作用三、如何使用设备树1.设备树的位置2.设备树的语法认识DTC、DTS、DTSI、DTB设备节点信息3.添加自己的设备树节点4.…

STM32MP157驱动开发——SPI驱动

STM32MP157驱动开发——SPI驱动一、简介1.SPI介绍2.STM32MP1 SPI介绍3. ICM-20608 简介4.Linux下的SPI框架二、驱动开发1&#xff09;IO 的 pinctrl 子节点创建与修改2&#xff09;SPI 设备节点的创建与修改3&#xff09;ICM20608驱动4&#xff09;测试App5&#xff09;运行测试…

【分享】订阅用友U8集简云连接器同步费用审批数据至用友U8系统

方案简介 集简云通过与钉钉连接平台深度融合&#xff0c;实现OA审批通过后&#xff0c;将采购、报销、收款、售后等费用审批单数据自动同步至用友U8系统&#xff0c;大大提高了企业日常采购、报销、付款等的工作效率&#xff0c;实现企业业务流程的自动化&#xff0c;为企业降…

Docker的数据管理

目录 一、数据卷 二、数据卷容器 三、容器互联 容器中管理数据主要有两种方式&#xff1a; 数据卷&#xff08;Data Volumes&#xff09;数据卷容器&#xff08;Data Volume Dontainers&#xff09; 一、数据卷 数据卷是一个供容器使用的特殊目录&#xff0c;位于容器中。可…

5点电容式触摸屏控制芯片GT811介绍

5点电容式触摸屏控制芯片GT811简介 5点电容式触摸屏控制芯片GT811&#xff0c;采用投射式电容检测原理&#xff0c;由16个驱动通道与10个感应通道组成触摸检测网络&#xff0c;通过内置模拟放大电路、数字运算模块&#xff0c;及高性能MPU得到实时准确的触摸信息&#xff0c;并…

rocketmq安装

链接&#xff1a;https://pan.baidu.com/s/14ziQH62MeYmM8N6JsH5RcA 提取码&#xff1a;yyds 下载rocketmq-all-4.9.3-bin-release.zip 下载、修改配置 mkdir -p /app/rocketmq cd /app/rocketmqunzip rocketmq-all-4.9.3-bin-release.zip cd rocketmq-4.9.3/修改 配置文件&…

F28335第十六篇——Flash操作

文章目录前言配置方法擦除函数编写和校验函数前言 本文主要介绍如何对DSP28335进行Flash操作。 本文主要参考资料&#xff1a; TI.Flash2833x_API_Readme DSP的Flash操作需要借助官方提供API。官方提供的API主要完成Flash的擦除&#xff0c;编写&#xff0c;校验三种功能。…