01
什么是跨站脚本?
跨站脚本是浏览器输入URL请求地址与后端服务器进行交互的过程收集用户信息(如cookie)。
用户访问Web站点中含有恶意脚本代码的页面或打开收到的URL链接时,用户浏览器会自动加载并执行该恶意代码,从而达到攻击的目的。
例如:攻击者在合法网站的URL中写入了脚本,诱使用户使用该URL访问合法网站,此时服务器会返回夹带脚本信息和正常的数据一起返回给用户浏览器,用户此时如果操作了此返回数据,脚本就会在用户的主机中运行,把主机中的信息发送到攻击者所控制的服务器中,造成信息泄露。
02
XSS的类型
存储型XSS
反射型XSS
非持久型、参数型跨站脚本、这类型的脚本是最常见的,也是使用最为广泛的一种,主要用于将恶意的脚本附加到URL地址的参数中。
特点:
- 即时性。不经过服务器存储,直接通过 HTTP 的 GET和 POST 请求就能完成一次攻击,拿到用户隐私数据;
- 攻击者需要诱骗点击;
- 反馈率低,所以较难发现和响应修复;
举例:假设有一个网站可以在页面上进行搜索,搜索词是abc,则他的URL是:https://example.com/search?term=abcz 这个URL请求的响应中会提供所搜索的词abc
You searched for: abc
攻击者可以构建如下攻击:
03
典型的跨站脚本攻击注入字符串有什么特征?
04
利用跨站脚本漏洞能做什么呢?
1
用户信息泄露
攻击者可以通过在网站注入恶意脚本,窃取用户的cookie、:会话信息或其他敏感数据,从而冒充用户进行未授权操作。
2
窃取 cookie
大多数 Web 应用程序使用 Cookie 进行会话。获取cookie后,攻击者就可以模拟受害者与应用程序通信了。获取cookie并伪装有时是不成功的,如攻击者获取的cookie是用户未登录的状态、应用程序使用 HttpOnly 标志向 JavaScript 隐藏其 Cookie(注:HttpOnly是Set - Cookie HTTP响应头中包含的附加标志。指定cookie是否可通过客户端脚本访问,如果设置了HttpOnly,通过js脚本将无法读取到cookie信息)、会话可能会被锁定到用户的 IP 地址、会话可能会在劫持它之前超时。
利用窃取的会话信息,攻击者可以获得用户的账户权限,进行不法操作,比如转账、修改个人信息、发送电子邮件等。
3
恶意软件传播
攻击者可以通过XSS漏洞向用户的浏览器注入恶意软件、蠕虫病毒、木马,感染用户的计算机或移动设备。
4
捕获密码
许多用户都有可以自动填充密码的密码管理器,可以通过创建密码输入、读出自动填充的密码并将其发送到您自己的域,这规避了窃取 cookie的多少问题。
<script>alert(document.domain)</script>
<img src=1 onerror=alert(1)>
这些脚本可以触发HTML标记
1、当它被嵌入到一个HTML页面并被浏览器执行时,会在浏览器中弹出一个警告框,显示当前文档的域名(document.domain )
2、这是一个HTML图像标签,其中src属性被设置为一个无效的URL(1)(因为 src=1 不是一个有效的图片 URL)。当浏览器尝试加载这个图像时,会触发onerror事件,执行alert(1) 代码的JavaScript代码,弹出一个警告框,显示数字1。
还有其他 HTML 标签和事件来执行 JavaScript。例如:
<a href="javascript:alert(1)">Click me</a>
标签的 onclick 事件
<iframe src="javascript:alert(1)"></iframe>
大多数情况下Web 应用程序防火墙 会阻止这些HTML标记,可以调用 print() 函数来绕过WAF。例如:
<iframe src="https://example.com/?search=%22%3E%3Cbody%20onresize=print()%3E" onload=this.style.width='100px'>
%22%3E%3Cbody%20onresize=print()%3E这个是URL编码的 ">"注入字符串试图关闭一个现有的HTML标签(通过 ">),然后插入一个 标签,并在其 onresize 事件中定义了一个JavaScript函数 print()。如果这个注入字符串被嵌入到一个网页中并且被执行,那么每当浏览器窗口的大小发生变化时,就会调用 print() 函数,通常会导致打印对话框出现。
有时候将 XSS 反射到 HTML 上下文中,并阻止除自定义标记之外的所有标记,可以使用注入自定义标签并自动向 document.cookie 发出弹窗。如:
<script>
location = 'https://example.com/?search=%3Cxss+id%3Dx+onfocus%3Dalert%28document.cookie%29%20tabindex=1%3E#x';
</script>
#这是一个包含了一个HTML标签 <xss id=x onfocus=alert(document.cookie) tabindex=1>,其中 onfocus 属性包含了一个JavaScript脚本 alert(document.cookie)
#当这个URL被加载时,浏览器将会尝试解析和渲染这个URL中的内容。由于这个URL包含了一个恶意脚本,所以当浏览器尝试渲染这个URL中的内容时,将会触发 onfocus 事件并执行恶意脚本 alert(document.cookie) 。这个脚本将会弹出一个警告框,显示当前页面的cookie。
5
钓鱼攻击
通过伪装网页或输入框,诱骗用户输入敏感信息(如密码、信用卡信息),从而进行欺诈。
6
恶意操作
攻击者可以在用户浏览器中执行恶意脚本,进行恶意操作,如强制弹出广告页面、刷流量、篡改页面信息(存在合规风险)、删除文章等。这些操作不仅会影响用户体验,还可能对网站的正常运营造成严重影响。
05
XSS的防御手段
输入验证与过滤
输出编码
使用HTTPOnly和Secure标志
使用Web应用防火墙(WAF)
智车信安
保驾护航
智车信安(苏州)信息安全科技有限公司(简称智车信安 / ACT)是一家 “检测·赋能·运营”三位一体的车联网安全供应商,倡导竞合共赢、共建生态,助力中国车联网安全产业创新发展。并与吉林大学长沙汽车创新研究院共建运营具有国内领先水平的车联网安全实验室,为客户提供全生命周期定制化的端到端车联网安全解决方案,包括而不限于国内首个通过认证的基于数据驱动的智慧车联网安全运营VSOC平台,国内首个TARA分析服务与自动化分析工具,整车/网联部件/APP /OTA/TSP平台渗透测试服务等。
我们的核心创始团队均来源于主流品牌车企,具备丰富的项目经验和创新精神,已为政府和国内外知名车企提供了产品与技术支撑并获得高度评价,参与了《车联网网络安全风险评估规范》及《车联网网络安全能力成熟度模型》等国内十多项标准的开发。