您的 Windows 或 Linux 用户名会暴露给网站吗?

信息安全 网页浏览器 javascript 数据泄露 用户跟踪
2021-08-14 09:41:35

例如:

  • 访问启用了 javascript 的网站可能会暴露浏览器、字体和本地时间等信息。从理论上讲,它可以公开您的 Windows 或 Linux 用户名吗?

  • 通过访问您的目录树,保存文件或附加文件(通常由网络邮件完成)会暴露您的 Windows 或 Linux 用户名吗?

我们用来登录操作系统的用户名会以某种方式暴露给网站吗?

1个回答

用户名通常不会暴露给网站。也许它可以用 Java 以某种方式完成,但默认情况下不能由浏览器完成。请注意,我的意思是 Oracle 的 Java,而不是Javascript!

一些网站使用 Active Directory 身份验证。如果您使用与您的计算机在同一 Windows 域中运行的 Internet Explorer 访问一个,您将自动登录。这使用某种形式的 HTTP 级身份验证并传输您的域、用户名和计算机的主机名。您的密码不会被传输;浏览器只回答来自服务器的挑战并以这种方式证明其身份。

Internet Explorer 仅在服务器发送质询以及域之后才发送此信息(用户名、域和主机名),并且域与客户端的域匹配。例如,如果服务器宣传它正在运行域Contoso并且用户也登录到域Contoso,那么 Internet Explorer 将继续进行身份验证并提供用户名、域、主机名和质询响应,其中质​​询响应是密码替代。

如果域不匹配,例如服务器宣传属于Contoso2,则会提示用户输入凭据(用户名和密码)。如果用户输入这些凭据,用户名当然会连同您的主机名一起发送到服务器。密码仍由质询确认,永远不会发送。请注意,即使您输入空白的用户名和密码,您的主机名仍然会暴露!唯一安全的退出是取消按钮。

据我所知,自动检索用户名的唯一方法是了解用户登录的域,并让用户使用 Internet Explorer。我想域名通常是可以猜到的,所以高调的有针对性的网络钓鱼可能是可能的。再说一次,您永远无法自动检索用户的密码,只能检索用户名和主机名,所以我不确定这有多大用处。也许是为了使有针对性的网络钓鱼攻击更加个人化。

另一种获取用户名的方法是通过这个 ActiveX 控件:

<script type="text/javascript">
alert(new ActiveXObject("WScript.Network").UserName);
</script>

在 Internet Explorer 9 中对此进行测试,它给出了两个警告。首先,屏幕底部的警告询问我是否要激活页面上的 ActiveX 组件,第二个警告询问我是否真的确定,因为它可能有害。通过一些社会工程,您可能会以这种方式触发用户名......但可能有更简单的方法。

其他浏览器(例如 Firefox)在访问此类网站时总是提示输入用户名和密码。我认为这些数据是未加密发送的,但我没有查到。最好是在执行任何类型的身份验证时始终使用传输层安全性(例如 https)。但是这种身份验证不是自动的,因此可能与您的问题无关。

更新:input type=file我忘记解决您问的问题是,在选择带有该元素的文件时是否可以公开用户名。简而言之:没有。较旧的浏览器可能会这样做,但在 Chrome、Firefox 和 IE9 的最新版本中,我已经对其进行了测试,但它们都没有公开完整路径。在 Firefox 中,您可能会注意到该mozFullPath属性,但是当 Javascript 尝试访问它时,它会返回一个空字符串。只有具有特殊权限的代码(我想像附加组件)才能使用它。此外,HTML5 文件 API 规范只提到了一次“路径”一词,以表明它不应该被公开。


免责声明:许多 Active Directory 的东西只是简单地测试过,可能会有错误。我在这里有两个域,因此当您登录到自己的域或其他域时,可以很容易地看到 Wireshark 的行为。我使用 IE9 作为客户端,使用 Windows Server 2008 作为服务器。我还使用了基于此脚本的另一个测试服务器(php):http: //siphon9.net/loune/2007/10/simple-lightweight-ntlm-in-php/