<p>Nancy 总是将 localhost 重写为 0.0.0.0</p>

创建于 2018-06-06  ·  7评论  ·  资料来源: NancyFx/Nancy

描述

如果我用 localhost 和 RewriteLocalhost = false 做一些例子,Nancy 忽略这个并使服务器监听 0.0.0.0

带有重现错误的电影:

nagranie

重现步骤

编译这个例子;

程序.txt

运行并检查 netstat -an

如果将 localhost 更改为 127.0.0.1 一切正常!

系统配置

  • 南希版本:1.4.4
  • 南希主机

    • [ ] Nancy.Hosting.Self

  • 环境(操作系统、版本等):Windows 10
  • .NET 框架版本:4.6

所有7条评论

这就是 .Net 实现 System.Net.HttpListener 的工作方式(Nancy 1.4 使用的底层类)。 当为 localhost 配置时,它绑定到 0.0.0.0,这个项目无法控制它。 配置“RewriteLocalHost”控制的是添加到 HttpListener.Prefixes 的 URL 前缀。 当 true 时,“ http://localhost :12345”更改为“http://+:12345”,这是一种 Windows netsh 语法,表示在所有接口上接受 http 流量,但也需要为非管理用户保留 URL。

谢谢你的答案。 我认为这应该有据可查。 这种行为在我看来并不例外,可能是安全漏洞。

这种行为在我看来并不例外,可能是安全漏洞。

为什么这是一个“安全漏洞”?

@khellang找到了这个信息:

在服务器上下文中,0.0.0.0 表示本地机器上的所有 IPv4 地址。 如果主机有两个 IP 地址 192.168.1.1 和 10.1.2.1,并且主机上运行的服务器侦听 0.0.0.0,则这两个 IP 都可以访问
来源: https :

对于在 Windows 上运行的 http 服务器,可访问的接口
取决于 url acl 配置。

在星期三,2018年6月6日,2:45 PM mfaticaearnin [email protected]写道:

@khellang https://github.com/khellang找到了这个信息:

在服务器上下文中,0.0.0.0 表示本地的所有 IPv4 地址
机器。 如果主机有两个 IP 地址,192.168.1.1 和 10.1.2.1,以及一个
在主机上运行的服务器侦听 0.0.0.0,它可以在两个
这些 IP
来源:
https://www.howtogeek.com/225487/what-is-the-difference-between-127.0.0.1-and-0.0.0.0/


您收到此消息是因为您发表了评论。
直接回复本邮件,在GitHub上查看
https://github.com/NancyFx/Nancy/issues/2904#issuecomment-395207780或静音
线程
https://github.com/notifications/unsubscribe-auth/AEEilpOy-5_Z23cnX1SMmAN8Bqiy30TEks5t6D9kgaJpZM4UcsKT
.

我知道绑定到 0.0.0.0(和 [::])意味着什么,但这并不意味着它是一个“安全漏洞”。 这是HttpListener行为; 它将以 400 状态代码回答除本地主机之外的任何内容。 如果您认为这是一个安全问题,您可能应该将其披露给 Microsoft,以便他们可以修补它😊

不幸的是,我不认为 N​​ancy 团队能够记录框架中使用的所有 .NET API 的所有行为,但是如果你们中的任何人足够关心,您可以尝试编辑 wiki 以添加一些关于此的信息。

@khellang我明白,这是 HttpListener 行为,但这也是 Nancy 行为。 也许这是无法修复的,因为太多的解决方案依赖于这种行为,但这仍然是差距,应该记录下来。

我与金融合作伙伴合作,他们的安全政策非常有限。 你说,HttpListener 回答 400,但 HTTP i 应用层。 底层是不安全的 TCP 层——每个人都可以发送消息。 一些政策告诉我们公司的某个应用程序不能从外部地址侦听 TCP 端口。

1 当有人发送请求并且服务器响应 400 这是一些信息 - 好吧,也许这是 HttpListener,或者 Nancy - 好吧,让我们在 HttpListener 上尝试一些隐藏的漏洞,也许我们可以访问这台机器上的某些服务。

2 应用程序必须保留 url acl,Windows 用户必须具有管理员权限。 在某些公司中,这是一个大问题。

我的问题的解决方案是使用 127.0.0.1,但我花了几个小时才找到这种行为。 如果我有任何权利,我想在周末找些时间编辑 Nancy Wiki 和文档。

谢谢大家的讨论!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

jchannon picture jchannon  ·  7评论

cody82 picture cody82  ·  9评论

jchannon picture jchannon  ·  9评论

thecodejunkie picture thecodejunkie  ·  8评论

Hell0wor1d picture Hell0wor1d  ·  12评论