用 netcat 执行了如下一行命令:向某个弹幕网站的服务器端口写空字符。
dd if=/dev/zero bs=10MB count=1 | nc -n -N 120.92.174.135 80
大厂服务器可能是速战速决,直接返回了 EOF,没有标准 HTTP 响应。
对于我自己的服务器,执行相同的指令。Nginx 傻傻地接受了 10MB 的数据,然后返回了 HTTP/1.1 400 Bad Request 。
请问如何让服务器变聪明?
1
singerll 2020-09-05 23:09:40 +08:00 via Android
waf
|
2
Wizards OP |
3
opengps 2020-09-05 23:30:42 +08:00 via Android
个人的话,有点为难,毕竟在企业应用领域,高防 ip,waf,甚至某些 cdn 都具备这种清洗能力
|
4
chendy 2020-09-05 23:54:54 +08:00
设置 client_max_body_size ?
|
6
saytesnake 2020-09-06 01:31:28 +08:00
@Wizards 一楼的意思应该是 ModSecurity 、Naxsi 或者自己戳 Lua 。
|
7
kangsheng9527 2020-09-06 11:09:34 +08:00
感谢楼主给了大家一个新的攻击思路。。。代表所有攻击手给楼主一个赞!
|
8
PolarBears 2020-09-06 17:27:10 +08:00
如果有意想要占服务端下行流量直接可以构造正常的请求,这个问题好像不做特别处理也没什么问题吧?
|
9
learningman 2020-09-06 19:47:52 +08:00
我试了一下你的命令,直接返回了 414 啊,,,
|
10
zjsxwc 2020-09-07 08:45:17 +08:00
没有吧,
我看到 nginx 返回的 400html 文本里面是 `Content-Length: 166` 166 个字符而已,并没有 10M 。 http 协议里面客户端请求也是有格式要求的,不符合要求的会被 nginx 直接关掉网络连接。 |
11
monter 2020-09-07 23:08:02 +08:00
这个是个有趣的问题,你需要的是 ngx_http_core_module 中的 lingering_close off;
nginx 配置繁杂,非专业人士难以捉摸 |