起因
[1]群佬上杉夏相一次开设端口10080(内网 80 通过网关路由映射到外网 10080),使用Chrome访问时,报错无法访问此网站,但实际ping 10080 端口(实际服务器的 80 端口)是可以收到并返回数据的,进而探讨,后发现原因为ERR_UNSAFE_PORT,故稍稍探究一下到底有哪些端口无法通过Chrome访问,以及原因是什么。
不安全端口
Chrome官方git库[2]
禁用原因
不得不说,在现如今很多互联网协议限制非常的宽松,它们会接收各种各样的数据,但对这些数据内容并不做出过多的限制,这对攻击提供了非常好的开口,对于HTTP上,很多攻击方式我们都有了很多的防范措施,那么假设说攻击者通过web浏览器连接到不支持HTTP的服务的时候,会发生什么呢?
我们以SMTP服务为例,正常情况下,SMTP会话是这样的[3]:
S: 220 smtp.example.com ESMTP Postfix C: HELO relay.example.org S: 250 Hello relay.example.org, I am glad to meet you C: MAIL FROM:S: 250 Ok C: RCPT TO: S: 250 Ok C: RCPT TO: S: 250 Ok C: DATA S: 354 End data with . C: From: "Bob Example" C: To: "Alice Example" C: Cc: theboss@example.com C: Date: Tue, 15 Jan 2008 16:02:43 -0500 C: Subject: Test message C: C: Hello Alice. C: This is a test message with 5 header fields and 4 lines in the message body. C: Your friend, C: Bob C: . S: 250 Ok: queued as 12345 C: QUIT S: 221 Bye {The server closes the connection}
[4]这与HTTP看起来完全不同,那么我们发送HTTP GET给SMTP服务器的时候,就会发生如下的会话:
C: GET / HTTP/1.1 S: 500 5.5.1 Command unrecognized: "GET / HTTP/1.1" C: Host: www.example.com S: 500 5.5.1 Command unrecognized: "Host: www.example.com" C: S: 500 5.5.1 Command unrecognized: ""
很明显,服务器不知道我们在做什么,但是没有直接的拒绝连接,而是告诉客户端有错误,这样表面服务器会接受这样的命令,那么作为攻击者,在上述SMTP会话中创建一个包含客户端消息的字段,可以向目标SMTP服务器提交一封邮件。SMTP服务器会忽略上述例子中的所有HTTP协议,包括方法和标头等等,但是一旦它得到我的字段,其中有我的HELO、MAIL FROM、RCPT TO等命令,它就会开始处理它们。
虽然现在一般SMTP服务器检测到对它们发出的HTTP请求会立即关闭连接,然而,并不是所有的 SMTP 服务器都这样做,所以Chrome这类浏览器会将这些不安全端口完全禁用,但必须要明确的一点,这仅仅是web浏览器将其禁止,并不代表没有其他方法使用这些不安全的端口,所以,一定要做好自身服务的安全。
结论
上述仅仅是一个例子,每个不安全端口都有不同的攻击方式,所以浏览器都应该默认禁止这些端口发送请求吗?我认为是的,这对于安全防护来说是一个有效方法,至少对于使用这些流行的浏览器的用户来说,因为往往攻击者不会自己执行这些命令,他们可以伪造一个页面,使其他受害者通过这些页面发送数据,最终导致一切不可估量的损失。
希望博主讲讲UDP协议在即时通讯软件中的应用
我。。。尽量
20220321-2220 督促博主填坑
HTTP/1.1 POST 200/OK
勘误:我第一次测试的端口为10080(内网80通过网关路由映射到外网10080),进而经过探讨发现客户端浏览器的禁用HTTP端口,因为ping10080端口(实际服务器的80端口)是可以收到并返回数据的
好的
第一篇博文2023年04月合影留念!