跨站脚本攻击:如何防止XSS漏洞?

2020-12-21 11:17:189909人阅读

XSS攻击可用于获得对特权信息的访问,本文讲的就是应对它们的方法。美国国土安全部(Department of Homeland Security)目前向联邦机构发出警告,要警惕一种特别具有攻击性的网络攻击形式——跨站脚本攻击(XSS)。

美国国土安全部警告说:

“这种攻击允许攻击者冒充受害者进入网站,这些漏洞可能会允许攻击者不仅窃取cookie,还可以记录键盘敲击、捕捉屏幕截图、发现和收集网络信息,以及远程访问和控制受害者的设备。”

Barracuda Networks高级安全研究员乔纳森•坦纳(Jonathan Tanner)表示:

“考虑到其数字资产的高价值,联邦机构的风险可能尤其大。有了联邦机构,就可以访问特权信息和特权基础设施,这对攻击者来说是非常有利可图的。无论是攻击投票系统,还是只是扰乱政府事务,这些都可能是非常强烈的攻击动机。”

什么是跨站脚本攻击?

跨站脚本攻击包括恶意参与者通过网站插入秘密代码来针对受害者,CrowdStrike情报部门高级副总裁亚当•迈耶斯(Adam Meyers)表示:“这种攻击有几种方式,但基本上攻击者会向网站数据库注入恶意脚本,让浏览该网站浏览器的用户执行该脚本。”

作为一种客户端代码注入攻击,XSS允许攻击者通过受害者的web浏览器执行恶意操作。政府机构的web页面或web应用程序本质上成为了传播恶意脚本的工具。当受害者访问web页面或web应用程序时,代码就会被执行。

跨站脚本攻击是如何发生的?

尽管存在几种形式的XSS攻击,但所有攻击的结果本质上都是一样的:在用户的浏览器中执行恶意代码。

通常,当用户与web应用程序或网站交互时,数据会在客户端和网站或应用程序前端之间来回发送。其中可能大多是无害的数据,可随意浏览,或者应用程序中可能有某些页面或输入从用户那里收集数据。

XSS利用这些输入插入其恶意指令,就拿一个简单的博客或论坛来说吧。一般来说,作者会在网站上发布一篇博文,其他用户可以对其进行评论。这些评论是通过一个带有提交按钮的自由格式的文本框收集的。

在后台,应用程序正在从这些输入字段中收集数据:姓名、电子邮件地址、评论。那是什么阻止人们在文本框中放入其他东西并传播回web应用程序?可能什么都没有。在这种情况下,可以利用站点本身来执行跨站脚本攻击。

什么是Cookie窃取?

Cookie窃取是跨站脚本攻击工具库中的一种工具,它利用存储在用户Web浏览器缓存中的信息来识别特定连接或会话中的用户。

如果攻击者可以窃取用户的cookie,那么攻击者就可以冒充终端用户,在XSS漏洞中,如果攻击者可以窃取用户的cookie,就可以变成用户或者冒充用户。攻击者可以更改用户的密码、更改用户的备份邮箱,从而接管整个账户。

这样的攻击可能允许恶意攻击者获取秘钥来窃取用户名和密码。如果该用户拥有政府网络的管理证书,潜在的危害可能呈指数级上升。

XSS攻击与跨站请求伪造攻击的区别?

跨站请求伪造攻击是XSS方法的变体,它迫使终端用户执行不希望的操作。例如,攻击者可能诱骗web应用程序的用户更改电子邮件地址或转移资金。

使用XSS,它攻击用户,改变页面显示内容或页面在浏览器中的呈现方式,准确的说,它利用了用户对网站的信任。

在跨站请求伪造中,它伪装成是用户,以利用web服务器对用户的信任。如果用户对web页面进行身份验证,服务器就知道你已登录。然后,攻击者使用该令牌代表用户发出请求,通常是在他们不知情的情况下,他们可以更改用户可能更改的任何内容。

如何检测跨站脚本攻击

众所周知,XSS攻击很难被检测到,因为浏览器无法区分合法和非法行为。

只有在受到攻击后,研究人员蔡可以对代码进行漏洞扫描,以确保没有遗漏任何东西。目前有许多免费和付费资源可以执行此操作,以寻找这些特定类型的攻击或可能容易受到此类攻击的领域。

Web应用程序过滤工具也提供了一些保护,当服务器检测到攻击的有效载荷时,就是检测正在进行中的攻击的良好机制。Web应用程序过滤器将寻找具有特定上下文的请求,这些请求反映了XSS攻击。这可以归结为异常检测,研究人员也可以通过一个集成了检测威胁的日志产品来实现。

不过,专家表示,总体而言,防御XSS攻击的最佳方法是预防而不是检测。

跨站脚本预防技巧

确保你的浏览器已打补丁,确保你在完成所做的工作后退出站点。这确保了cookie不再有效,请谨慎考虑您访问的网站。另一个好的策略是使用多个浏览器:将一个用于受信任的站点,将另一个用于不受信任的站点。

从较高的层次上来说,可以考虑其开发流程,构建安全措施来保护应用程序和网站免受此类攻击。XSS很容易被预防,但是如果没有安全原则作为开发设计的基础,那么事后使用安全保护措施时,它就会被忽略。

最简单的方法是安装过滤器,当用户添加输入时,使其合理,比如电话号码应该是电话号码,日期应该是日期,而不是一段Java脚本。请确保如果你的应用程序要求输入名字,那么该名字就不应是活动内容,并在将其显示给用户之前对其进行编码。这样,攻击者就无法利用纯文本发起攻击了。不过这么高级的方法在很大程度上取决于开发人员的技能水平。


本文转载自:嘶吼

作者:xiaohui

原文地址:https://www.4hou.com/posts/mGJn

本文翻译自:https://fedtechmagazine.com/article/2020/10/cross-site-scripting-attacks-how-prevent-xss-vulnerabilities-perfcon

0
现金券
0
兑换券
立即领取
领取成功