如何检测漏洞是否存在?
推荐使用docker安装漏洞检测工具
docker pull shekyan/slowhttptest:latest
使用以下命令检测服务端口
docker run -i -t shekyan/slowhttptest -c 400 -H -i 5 -r 200 -t GET -u http://localhost:8080 -x 24 -p 3 -l 200
上述命令会向目标地址发送400个请求,并以5s间隔间断传输header头信息,进行slow headers慢攻击并持续200s
如上图所示,攻击的400个连接没有被关闭,攻击时间持续了201s,可以被视为攻击成功存在漏洞。
修复方案
nginx修复
编辑nginx.conf文件,增加以下配置
http{
client_body_timeout 10s; #10s内未发送body内容,服务器主动关闭连接
client_header_timeout 5s; #5s内未发送header内容,服务器主动关闭连接
}
tomcat修复
编辑server.xml文件,增加connectionTimeout配置
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="5000"
redirectPort="8443"
disableUploadTimeout="true"
/>
注意:如果业务有上传文件需求 设置 “disableUploadTimeout” 属性为 true,否则可能会影响上传功能。
进行复测
第65秒,建立的400个连接被服务器释放,漏洞修复成功
总结
相关的超时设置建议多次尝试,一般设置为5s可避免被漏扫工具检测出来
评论区