背景
Tomcat和Jetty都是被广泛用于项目的开源Servlet容器。本文不会阐述Tomcat和Jetty之间的区别,感兴趣的同学可以自行学习相关内容。
Jetty团队去年在github issues中爆出了一个可能被DoS攻击的中级漏洞。github.com/eclipse/jet…
大致是,在Jetty容器引用http2-server组件开启HTTP2.0功能后,同时开发者提供了使用HTTP2.0协议服务接口。访问非正常URL时,攻击者可以通过耗尽TCP滑动窗口或HTTP2.0流控来达到耗尽Jetty服务器资源,从而达到DoS攻击效果。噢吼,这不就是HTTP慢速攻击吗。下面我们先来介绍一下HTTP慢速攻击,再来分析Jetty有漏洞的源码,之后我们做个实验来验证一下这个漏洞。
HTTP慢速攻击
HTTP慢速攻击是应用层DoS攻击的一种。由Web安全专家RSnake在2009年提出的一种攻击方式,其原理是以极低速度向服务器发送HTTP请求,服务器有并发数限制。一旦这些恶意链接不释放,同时不停的创建新的恶意链接就会导致服务器资源被耗尽。
HTTP慢速攻击一共有3种
Slow Header攻击
Slow Header攻击利用HTTP 请求头设计。众所周知HTTP Header是文本信息。每个属性,比如Content-Type: text/plain都是由"\r\n"来进行分隔的。最后一个属性后面会拼接"\r\n\r\n"来告知服务器请求头已传输完毕,请处理我的请求。攻击者利用这个设计,永远不传"\r\n\r\n",同时,我们也知道HTTP服务器在没有接收到完整的请求头是不会处理请求的。这时,服务器就不得不一直维持着链接。一旦存在大量这种链接,就会导致服务器资