foreverzmy / http-s-listen-same-port

HTTP and HTTPS listen same port demo
4 stars 1 forks source link

【严重bug】1个空请求就做到拒绝服务(Dos)攻击 #2

Open bddjr opened 1 month ago

bddjr commented 1 month ago

严重bug:

Aceept时调用了 peekConn.Peek(3) ,相当于间接调用了Read,会阻塞Accept函数。

攻击者只需要用telnet命令连接服务器的这个端口,然后什么都不发,服务器无法响应别的请求,而且不会超时,做到了拒绝服务攻击(Dos)

此外每次都会从系统读取证书再解析再返回,更进一步拉低了请求处理效率。

影响

幸运的是,这东西放到自己的程序后,有时候进程挂着没多久就崩溃了,所以使用者放弃了这个方案。

解决方案

将Read操作从Accpet改为劫持Read。

如果你是使用者,你可以直接用 https://github.com/bddjr/hlfhr