常见web安全漏洞详解(三):DoS

331 阅读6分钟

这是我参与8月更文挑战的第29天,活动详情查看:8月更文挑战

前言

DoSDenial of Service的简称,即拒绝服务,基于该类型发起的网络攻击就叫拒绝服务攻击,其目的就是通过频繁请求来耗尽服务器的CPU、内存和网络带宽等资源,使服务器无法为用户提供正常服务或使得服务质量下降。

百度百科:作个形象的比喻来理解DoS。街头的餐馆是为大众提供餐饮服务,如果一群地痞流氓要DoS餐馆的话,手段会很多,比如霸占着餐桌不结账,堵住餐馆的大门不让路,骚扰餐馆的服务员或厨子不能干活,甚至更恶劣……相应的计算机和网络系统则是为Internet用户提供互联网资源的,如果有黑客要进行DoS攻击的话,可以想象同样有好多手段!今天最常见的DoS攻击有对计算机网络的带宽攻击和连通性攻击。带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求无法通过。连通性攻击指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。

原理

DoS攻击的类型多种多样,但都有一个共同点:耗尽受害机器的资源,使得受害机器无法及时接收并处理外界请求。主要以下几种方式:

  • 制造大量无用的数据流,使得受害机器所处的网络发生拥塞,使得无法正常响应。
  • 利用受害机器本身的一些漏洞(程序、通信协议等),反复发送大量无应答的请求,耗尽受害机器的服务资源,使其挂起或死机重启,影响其线上业务。

攻击类型

DDoS

image.png

DDoS是分布式拒绝服务的简称,攻击者发动DoS的武器就是通过大量请求淹没目标服务器,但受限于较小的网络规模和较慢的网络速度的限制,要想发起杀伤力更强的攻击无疑会增加成本,因此,攻击者通过黑客工具控制网络上的一些主机,利用它们来发送请求,这些被控制的机器也就是俗称的“肉鸡”又或者叫“僵尸机”,这些机器组成的网络也被称为僵尸网络,之所以称为僵尸网络,很多僵尸电脑的管理员都没有察觉到自己的机器已经被攻击者控制,就仿佛是没有自主意识的僵尸一般。

SYN Flood

image.png

TCP的握手过程中,客户端、服务器要相互发起请求和响应来确认对方状态,攻击则专门针对连接握手的过程进行DoS攻击:当服务端收到客户端的SYN-ACK报文后,客户端由于采用源地址欺骗等手段使得服务端接收不到ACK回应报文,此时连接处于半连接状态,服务端维护一个半连接队列,在规定时间和次数下,挂起和重发响应报文,然而对于服务器来说,TCP连接因为占用内存,因此数量是有限的,大量的连接因为没有响应而被挂起,服务器就会对接下来的到来的连接停止响应,直到缓冲区的连接因为达到重传次数而被终止。如果攻击者快速且连续地发送此类连接请求,那么服务器可用的TCP连接队列将很快被阻塞,系统可用资源急剧减少,网络可用带宽迅速缩小,服务器的服务质量大幅下降。

Ping of Death

image.png

该攻击又称死亡之pingping命令是基于ICMP协议的,其常用于验证网络连接是否连通,ICMP包的大小是有限制的,在许多系统上是64KB.这种攻击通过发送大于65536字节的ICMP包使操作系统崩溃;通常不可能发送大于65536个字节的ICMP包,但可以把报文分割成片段,然后在目标主机上重组;最终会导致被攻击目标缓冲区溢 出。

ReDoS

image.png

ReDoS(Regular expression Denial of Service) 即正则表达式拒绝服务攻击。开发人员使用了正则表达式来对用户输入的数据进行有效性校验, 当编写校验的正则表达式存在缺陷或者不严谨时, 攻击者可以构造特殊的字符串来大量消耗服务器的系统资源,造成服务器的服务中断或停止。

这种攻击利用的就是正则表达式解析引擎的漏洞。正则表达式引擎分成两类:一类称为DFA(确定性有限状态自动机),另一类称为NFA(非确定性有限状态自动机)DFA对于文本串里的每一个字符只需扫描一次,比较快,但特性较少;NFA要翻来覆去输入字符、输出字符,速度慢,但是特性(如:分组、替换、分割)丰富。NFA支持 惰性(lazy)回溯(backtracking)反向引用(backreference)NFA缺省应用贪婪式,NFA可能会陷入递归险境导致性能极差。总的来说就是NFA虽然支持的特性多比DFA多,但是解析过程可能会陷入深层的递归和回溯,消耗机器性能。

因此,正如计算机处理正则是有性能极限的,攻击者可以造出一个特定的正则表达式以及字符串,使得机器陷入重复的递归回溯运算中,从而达成了基于正则的DoS攻击。

Regular expression Denial of Service - ReDoS Software Attack | OWASP

TearDrop

image.png

TearDrop又叫泪滴攻击,属于异常报文攻击的一种。是基于UDP的数据包分片攻击,工作原理是向被攻击者发送多个分片的IP报文(报文中包括了该分片数据包属于哪个数据包以及在数据包中的位置等信息,一些系统收到含有重叠偏移的伪造分片数据包时将会出现系统崩溃重启等现象。