04XSS基础知识
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
- <div style="background-color:red" onmouseenter="alert('XSS')">hello</div>
XSS进阶和实验
XSS注入方法 • 利用HTML事件
XSS进阶和实验
XSS注入方法 • 利用HTML事件
- <BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert("XSS")>
XSS测试工具和平台
Tamper Data
• 当测试Web应用程序的安全性时,经常需要对HTTP流量进行分析和动态修改, 这时就要用到Tamper Data这款小工具。Tamper Data同样是Firefox的小插件 ,它的特点是简单易用、功能强大,只要是HTTP请求都能抓取。Tamper Data 的含义是“篡改数据”,它可以查看和修改HTTP/HTTPS的头部和POST参数。IE 类似的插件是Tamper IE。
- 事件后加字符
<img src=x onerror\uffe=alert(1)>
XSS进阶和实验
XSS注入方法 • 利用style属性或标签
- <div style="background:url(javascript:alert('XSS'))">
XSS进阶和实验
XSS注入方法 • 利用style属性或标签
• 这段代码作用是解析url,提取message参数的值,并把这个值写入页 面的HTML源代码中,但是如果攻击者提交的message参数为
<script>alert('xss')</script>,该代码就被动态写入页面,从而导
致XSS攻击。
XSS测试工具
XSS测试工具和平台
FireBug
• FireBug是Firefox浏览器的一个扩展插件,它是一个全功能的Web应用程序调 试器,能够协助Web开发者洞悉复杂的Web应用程序的内部工作机制。该工具 提供了许多强大的功能,包括修改HTML代码、探索DOM结构、监视网络请求和 响应、调试和检测任何页面的CSS、HTML和JavaScript等。
• 逐项查找响应页面中包含上述函数的代码,确定该部分代码ቤተ መጻሕፍቲ ባይዱ何处理
用户可控制数据。
基于DOM的XSS测试
利用基于DOM的XSS • 以一个例子说明,假设应用程序返回的页面包含如下脚本:
<script> var url=document.location; url=unescape(url); var message=url.substring(url.indexOf('message=')+8,url.length) document.write(message) </script>
反射型XSS测试
利用反射型XSS
• 假设请求http://www.victim.com/xss.php?id=myxssteststring,页
面返回<input type=“text” name=“testname” value=“myxssteststring”> ,可以确定id是一个可疑参数,因此
- <img src=javascript:alert('xss')>
• style属性
- <div style="background:url(javascript:alert('XSS'))">
保存型XSS测试
查找保存型XSS
• 确定保存型XSS漏洞的过程与前面描述的确定反射型XSS漏洞的过程有
很多相似之处,都包括提交一个特殊的字符串作为每个页面的每一个 参数。这两个过程之间也存在着一些重要的区别,具体过程如下:
- 向应用程序中的每一个可能的位置提交一个特殊的字符串后,确定这个字 符串在响应页面中的显示情况,与反射型不同的是在保存被提交的数据之前,许 多应用程序功能需要经历几个阶段的操作。例如,注册新用户、处理购物订单、
XSS测试工具和平台
Fiddler
• Fiddler是一款免费且功能强大的HTTP/HTTPS网络调试器,它也能够检测和记 录所有客户端和服务器之间的HTTP通信。
XSS测试工具和平台
BurpSuite • Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多工 具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程 。所有的工具都共享一个能处理并显示HTTP 消息,持久性,认证,
攻击者的数据的页面,这时恶意代码开始执行。为此,这种漏洞有时
也叫作二阶跨站点脚本。
XSS概述
什么是保存型XSS攻击? • 保存型XSS攻击的实施步骤如下:
XSS概述
什么是基于DOM的XSS攻击?
• 反射型和保存型XSS漏洞都表现出一种特殊的行为模式,其中应用程
序提取用户控制的数据并以危险的方式将这些数据返回给用户。第三 类XSS并不具有这些特点。在这种漏洞中,攻击者的Javascript通过 以下过程得以执行: - 用户请求一个经过专门设计的URL,它由攻击者提交,且其中包含 嵌入式javascript。 - 服务器的响应中并不以任何形式包含攻击者的脚本。 - 当用户的浏览器处理这个响应时,上述脚本得以处理。
XSS概述
什么是反射型XSS攻击?
• 访问并分析返回页面的HTML源码,会发现,程序只是简单复制URL中
message参数的值,并返回给浏览器显示为:Sorry,an error occurred,为了进一步证实程序没有对message字段进行过滤,我们 把message字段改为‘;!-“<XSS>=&{()}javascript vbscript /\, 发送请求分析返回的HTML源码,发现在源码中可以找到未经转义的上 述字段。把用户提交的输入不加以过滤转义将其用于HTTP服务器响应 ,是XSS漏洞的一个明显特征。如果此时将message字段改为 <script>alert(‘xss’);</script>,可以肯定的是页面将返回一个 弹框。
代理,日志,警报的一个强大的可扩展的框架。
XSS测试工具和平台
自动化测试工具 • WVS(Web Vulnerability Scanner)是一个自动化的Web应用程序安全 测试工具,该工具是个综合web审计工具。 • appscan同样是一款重量级的综合web审计工具,该工具同样很好的支
持了XSS漏洞的检测与利用。
想办法终止包含字符串的双引号,结束<input>标签,然后通过其他
方法引入javascript脚本(使用<script>、<img src= ‘javascript:...’>等)加载XSS Payload。
反射型XSS测试
利用反射型XSS
• XSS事件
- <div onclick="alert('XSS')">hello</div> • 伪协议
• XSSer是bt5自带的一款专门正对XSS进行检测和利用的工具,该工具 包含了多种逃逸技术。
XSS进阶和实验
XSS进阶和实验
XSS注入方式 • 利用<>标记注射HTML/javascript
- <script>alert('XSS');</script>
XSS进阶和实验
XSS注入方法 • 利用HTML事件
XSS概述
什么是基于DOM的XSS攻击?
• 这一系列事件如何发生呢?由于客户端javascript可以访问浏览器的
文本对象模型DOM,因此它能决定用于加载当前页面的URL。由应用程 序发布的一段脚本可以从URL中提取数据,对这些数据进行处理,然 后用它动态更新页面的内容。如果这样,应用程序就可能易于受到这 样的基于DOM的XSS攻击。
XSS基础知识
王朋涛 深信服北京安全团队
培训提纲
1.XSS概述 2.XSS渗透测试框架 3.反射型XSS测试
4.保存型XSS测试
5.基于DOM型XSS测试
6.XSS测试工具
7.XSS进阶和实验 8.总结
XSS概述
XSS概述
什么是XSS? • XSS不像绝大多数的Web攻击(SQL注入)以服务器端应用程序为攻击目 标,而是主要针对应用程序的客户端。攻击者利用服务器端的相关漏 洞向Web应用程序注射恶意的脚本代码,当第三方浏览器访问网站时 ,这些恶意脚本就会在浏览器上执行。 • XSS攻击一般分为:反射型XSS、保存型XSS、基于DOM型的XSS,接下 来我们将逐一介绍。
XSS概述
什么是反射型XSS攻击?
• 攻击者设计一个包含嵌入Javascript代码的请求,随后这些代码又被
反射到任何提出请求的用户,这类攻击被称作反射型XSS,也叫一阶 XSS。 先假设存在这样一个反射型XSS漏洞,URL如下: http://www.a.com/error.php?message=Sorry%2c+an+error+occurred
Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] (IE6.0试 了不好使…其他未测试)
- 事件前面加“\0”、“/”、双引号、单引号
<\0im\0g/\0src=\0x \0onerror\0=\0ale\0rt(1)> <img "src=x /onerror=alert(1)> <img src=x aaa"onerror=alert(1)> <img src="x" 'onerror =alert(1)> Opera 10.01 Opera 10.01 Opera 10.01 Opera 10.01
XSS进阶和实验
XSS注入方法 • 利用style属性或标签
XSS进阶和实验
XSS注入方法 • 利用style属性或标签
XSS进阶和实验
XSS注入方法 • 利用style属性或标签
XSS进阶和实验
反射型XSS测试
反射型XSS测试
查找反射型XSS
• 构造一个仅包含字母数字组合的特殊字符串,例如myxssteststring
,把这个字符串作为每个请求的参数值,且每次只针对一个参数。 • 监控应用程序的响应,查看响应中是否出现先前提交的字符串,如果
出现则标记该参数为可疑参数。
• 除标准的请求(GET、POST)参数外,还应该检测HTTP请求消息报头 ,例如在Cookie、Referer、User-Agent等头部添加特殊字符串。
XSS概述
什么是基于DOM的XSS攻击?
• 基于DOMXSS攻击的实施步骤如下:
XSS渗透测试框架
XSS渗透测试框架
XSS渗透测试框架
渗透测试框架说明 • XSS渗透测试框架概括了渗透测试过程中XSS漏洞的测试方法。测试过 程要覆盖三种类型的XSS探测,通常这个过程是利用扫描工具,扫描 工具有完整的测试例,并可以对Web应用的GET查询字符串、POST表单 、Cookie以及其他请求消息报头进行Fuzz测试。在发现了XSS漏洞后 ,根据不同的类型构造不同的XSS Payload利用漏洞,或者结合其他 漏洞发起攻击。
转账等操作往往需要按预定的顺序提交几个不同的请求。为避免遗漏任何漏洞,
必须确保每次测试彻底完成。 - 监控应用程序的响应,看其中是否出现先前提交的字符串,如果出现则标
记该参数为可疑参数。
保存型XSS测试
利用保存型XSS
• 保存型XSS的利用相比反射型XSS的攻击效果更好,危害也更大。但就
攻击载荷和攻击语句与反射型无异。
基于DOM的XSS测试
查找基于DOM的XSS
• 查看响应页面是否包含能够操作DOM节点的js函数,常见此类函数如
下:
- document.location - document.URL - document.URLUnencoded - document.referrer - window.location
XSS概述
什么是反射型XSS攻击?
• 反射型XSS攻击的实施步骤如下:
XSS概述
什么是保存型XSS攻击?
• 与反射型XSS不同的是用户输入的数据被保存在应用程序中(数据库
),然后不经适当过滤或者净化就显示给其他用户,这类攻击被称为 保存型XSS。 • 保存型XSS典型例子是论坛恶意帖子,用户凡是浏览过该帖子的都易 受到该类型攻击。 • 保存型XSS漏洞的攻击至少需要向应用程序提出两个请求。攻击者在 第一个请求中传送一些专门设计的数据,其中包含恶意代码,应用程 序接受并保存这些数据。在第二个请求中,一名受害者查看某个包含
XSS进阶和实验
XSS注入方法 • 利用HTML事件
XSS进阶和实验
XSS注入方法 • 利用HTML事件
- <BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert("XSS")>
XSS测试工具和平台
Tamper Data
• 当测试Web应用程序的安全性时,经常需要对HTTP流量进行分析和动态修改, 这时就要用到Tamper Data这款小工具。Tamper Data同样是Firefox的小插件 ,它的特点是简单易用、功能强大,只要是HTTP请求都能抓取。Tamper Data 的含义是“篡改数据”,它可以查看和修改HTTP/HTTPS的头部和POST参数。IE 类似的插件是Tamper IE。
- 事件后加字符
<img src=x onerror\uffe=alert(1)>
XSS进阶和实验
XSS注入方法 • 利用style属性或标签
- <div style="background:url(javascript:alert('XSS'))">
XSS进阶和实验
XSS注入方法 • 利用style属性或标签
• 这段代码作用是解析url,提取message参数的值,并把这个值写入页 面的HTML源代码中,但是如果攻击者提交的message参数为
<script>alert('xss')</script>,该代码就被动态写入页面,从而导
致XSS攻击。
XSS测试工具
XSS测试工具和平台
FireBug
• FireBug是Firefox浏览器的一个扩展插件,它是一个全功能的Web应用程序调 试器,能够协助Web开发者洞悉复杂的Web应用程序的内部工作机制。该工具 提供了许多强大的功能,包括修改HTML代码、探索DOM结构、监视网络请求和 响应、调试和检测任何页面的CSS、HTML和JavaScript等。
• 逐项查找响应页面中包含上述函数的代码,确定该部分代码ቤተ መጻሕፍቲ ባይዱ何处理
用户可控制数据。
基于DOM的XSS测试
利用基于DOM的XSS • 以一个例子说明,假设应用程序返回的页面包含如下脚本:
<script> var url=document.location; url=unescape(url); var message=url.substring(url.indexOf('message=')+8,url.length) document.write(message) </script>
反射型XSS测试
利用反射型XSS
• 假设请求http://www.victim.com/xss.php?id=myxssteststring,页
面返回<input type=“text” name=“testname” value=“myxssteststring”> ,可以确定id是一个可疑参数,因此
- <img src=javascript:alert('xss')>
• style属性
- <div style="background:url(javascript:alert('XSS'))">
保存型XSS测试
查找保存型XSS
• 确定保存型XSS漏洞的过程与前面描述的确定反射型XSS漏洞的过程有
很多相似之处,都包括提交一个特殊的字符串作为每个页面的每一个 参数。这两个过程之间也存在着一些重要的区别,具体过程如下:
- 向应用程序中的每一个可能的位置提交一个特殊的字符串后,确定这个字 符串在响应页面中的显示情况,与反射型不同的是在保存被提交的数据之前,许 多应用程序功能需要经历几个阶段的操作。例如,注册新用户、处理购物订单、
XSS测试工具和平台
Fiddler
• Fiddler是一款免费且功能强大的HTTP/HTTPS网络调试器,它也能够检测和记 录所有客户端和服务器之间的HTTP通信。
XSS测试工具和平台
BurpSuite • Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多工 具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程 。所有的工具都共享一个能处理并显示HTTP 消息,持久性,认证,
攻击者的数据的页面,这时恶意代码开始执行。为此,这种漏洞有时
也叫作二阶跨站点脚本。
XSS概述
什么是保存型XSS攻击? • 保存型XSS攻击的实施步骤如下:
XSS概述
什么是基于DOM的XSS攻击?
• 反射型和保存型XSS漏洞都表现出一种特殊的行为模式,其中应用程
序提取用户控制的数据并以危险的方式将这些数据返回给用户。第三 类XSS并不具有这些特点。在这种漏洞中,攻击者的Javascript通过 以下过程得以执行: - 用户请求一个经过专门设计的URL,它由攻击者提交,且其中包含 嵌入式javascript。 - 服务器的响应中并不以任何形式包含攻击者的脚本。 - 当用户的浏览器处理这个响应时,上述脚本得以处理。
XSS概述
什么是反射型XSS攻击?
• 访问并分析返回页面的HTML源码,会发现,程序只是简单复制URL中
message参数的值,并返回给浏览器显示为:Sorry,an error occurred,为了进一步证实程序没有对message字段进行过滤,我们 把message字段改为‘;!-“<XSS>=&{()}javascript vbscript /\, 发送请求分析返回的HTML源码,发现在源码中可以找到未经转义的上 述字段。把用户提交的输入不加以过滤转义将其用于HTTP服务器响应 ,是XSS漏洞的一个明显特征。如果此时将message字段改为 <script>alert(‘xss’);</script>,可以肯定的是页面将返回一个 弹框。
代理,日志,警报的一个强大的可扩展的框架。
XSS测试工具和平台
自动化测试工具 • WVS(Web Vulnerability Scanner)是一个自动化的Web应用程序安全 测试工具,该工具是个综合web审计工具。 • appscan同样是一款重量级的综合web审计工具,该工具同样很好的支
持了XSS漏洞的检测与利用。
想办法终止包含字符串的双引号,结束<input>标签,然后通过其他
方法引入javascript脚本(使用<script>、<img src= ‘javascript:...’>等)加载XSS Payload。
反射型XSS测试
利用反射型XSS
• XSS事件
- <div onclick="alert('XSS')">hello</div> • 伪协议
• XSSer是bt5自带的一款专门正对XSS进行检测和利用的工具,该工具 包含了多种逃逸技术。
XSS进阶和实验
XSS进阶和实验
XSS注入方式 • 利用<>标记注射HTML/javascript
- <script>alert('XSS');</script>
XSS进阶和实验
XSS注入方法 • 利用HTML事件
XSS概述
什么是基于DOM的XSS攻击?
• 这一系列事件如何发生呢?由于客户端javascript可以访问浏览器的
文本对象模型DOM,因此它能决定用于加载当前页面的URL。由应用程 序发布的一段脚本可以从URL中提取数据,对这些数据进行处理,然 后用它动态更新页面的内容。如果这样,应用程序就可能易于受到这 样的基于DOM的XSS攻击。
XSS基础知识
王朋涛 深信服北京安全团队
培训提纲
1.XSS概述 2.XSS渗透测试框架 3.反射型XSS测试
4.保存型XSS测试
5.基于DOM型XSS测试
6.XSS测试工具
7.XSS进阶和实验 8.总结
XSS概述
XSS概述
什么是XSS? • XSS不像绝大多数的Web攻击(SQL注入)以服务器端应用程序为攻击目 标,而是主要针对应用程序的客户端。攻击者利用服务器端的相关漏 洞向Web应用程序注射恶意的脚本代码,当第三方浏览器访问网站时 ,这些恶意脚本就会在浏览器上执行。 • XSS攻击一般分为:反射型XSS、保存型XSS、基于DOM型的XSS,接下 来我们将逐一介绍。
XSS概述
什么是反射型XSS攻击?
• 攻击者设计一个包含嵌入Javascript代码的请求,随后这些代码又被
反射到任何提出请求的用户,这类攻击被称作反射型XSS,也叫一阶 XSS。 先假设存在这样一个反射型XSS漏洞,URL如下: http://www.a.com/error.php?message=Sorry%2c+an+error+occurred
Browser support: [IE7.0|IE6.0|NS8.1-IE] [NS8.1-G|FF2.0] [O9.02] (IE6.0试 了不好使…其他未测试)
- 事件前面加“\0”、“/”、双引号、单引号
<\0im\0g/\0src=\0x \0onerror\0=\0ale\0rt(1)> <img "src=x /onerror=alert(1)> <img src=x aaa"onerror=alert(1)> <img src="x" 'onerror =alert(1)> Opera 10.01 Opera 10.01 Opera 10.01 Opera 10.01
XSS进阶和实验
XSS注入方法 • 利用style属性或标签
XSS进阶和实验
XSS注入方法 • 利用style属性或标签
XSS进阶和实验
XSS注入方法 • 利用style属性或标签
XSS进阶和实验
反射型XSS测试
反射型XSS测试
查找反射型XSS
• 构造一个仅包含字母数字组合的特殊字符串,例如myxssteststring
,把这个字符串作为每个请求的参数值,且每次只针对一个参数。 • 监控应用程序的响应,查看响应中是否出现先前提交的字符串,如果
出现则标记该参数为可疑参数。
• 除标准的请求(GET、POST)参数外,还应该检测HTTP请求消息报头 ,例如在Cookie、Referer、User-Agent等头部添加特殊字符串。
XSS概述
什么是基于DOM的XSS攻击?
• 基于DOMXSS攻击的实施步骤如下:
XSS渗透测试框架
XSS渗透测试框架
XSS渗透测试框架
渗透测试框架说明 • XSS渗透测试框架概括了渗透测试过程中XSS漏洞的测试方法。测试过 程要覆盖三种类型的XSS探测,通常这个过程是利用扫描工具,扫描 工具有完整的测试例,并可以对Web应用的GET查询字符串、POST表单 、Cookie以及其他请求消息报头进行Fuzz测试。在发现了XSS漏洞后 ,根据不同的类型构造不同的XSS Payload利用漏洞,或者结合其他 漏洞发起攻击。
转账等操作往往需要按预定的顺序提交几个不同的请求。为避免遗漏任何漏洞,
必须确保每次测试彻底完成。 - 监控应用程序的响应,看其中是否出现先前提交的字符串,如果出现则标
记该参数为可疑参数。
保存型XSS测试
利用保存型XSS
• 保存型XSS的利用相比反射型XSS的攻击效果更好,危害也更大。但就
攻击载荷和攻击语句与反射型无异。
基于DOM的XSS测试
查找基于DOM的XSS
• 查看响应页面是否包含能够操作DOM节点的js函数,常见此类函数如
下:
- document.location - document.URL - document.URLUnencoded - document.referrer - window.location
XSS概述
什么是反射型XSS攻击?
• 反射型XSS攻击的实施步骤如下:
XSS概述
什么是保存型XSS攻击?
• 与反射型XSS不同的是用户输入的数据被保存在应用程序中(数据库
),然后不经适当过滤或者净化就显示给其他用户,这类攻击被称为 保存型XSS。 • 保存型XSS典型例子是论坛恶意帖子,用户凡是浏览过该帖子的都易 受到该类型攻击。 • 保存型XSS漏洞的攻击至少需要向应用程序提出两个请求。攻击者在 第一个请求中传送一些专门设计的数据,其中包含恶意代码,应用程 序接受并保存这些数据。在第二个请求中,一名受害者查看某个包含