Chrome上的不安全端口

起因

[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浏览器将其禁止,并不代表没有其他方法使用这些不安全的端口,所以,一定要做好自身服务的安全。

结论

上述仅仅是一个例子,每个不安全端口都有不同的攻击方式,所以浏览器都应该默认禁止这些端口发送请求吗?我认为是的,这对于安全防护来说是一个有效方法,至少对于使用这些流行的浏览器的用户来说,因为往往攻击者不会自己执行这些命令,他们可以伪造一个页面,使其他受害者通过这些页面发送数据,最终导致一切不可估量的损失。

评论

  1. 幽蓝伊梦
    Windows Firefox 92.0
    3 年前
    2022-1-27 22:55:19

    希望博主讲讲UDP协议在即时通讯软件中的应用

    • 博主
      幽蓝伊梦
      Windows Chrome 97.0.4692.99
      3 年前
      2022-1-27 22:55:58

      我。。。尽量

      • 上杉夏相
        GOOD-AN
        Windows Edge 99.0.1150.46
        3 年前
        2022-3-21 22:21:10

        20220321-2220 督促博主填坑
        HTTP/1.1 POST 200/OK

  2. 上杉夏相
    Android Chrome 89.0.4389.72
    3 年前
    2022-1-28 7:29:27

    勘误:我第一次测试的端口为10080(内网80通过网关路由映射到外网10080),进而经过探讨发现客户端浏览器的禁用HTTP端口,因为ping10080端口(实际服务器的80端口)是可以收到并返回数据的

    • 博主
      上杉夏相
      Windows Chrome 97.0.4692.99
      3 年前
      2022-1-28 10:04:50

      好的

  3. Windows Edge 112.0.1722.48
    2 年前
    2023-4-21 18:41:46

    第一篇博文2023年04月合影留念!

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇