软件安全实验——pre11(XSS跨站脚本攻击预习)

Posted 大灬白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件安全实验——pre11(XSS跨站脚本攻击预习)相关的知识,希望对你有一定的参考价值。

1、用IE访问某些网站的时候,输入javascript:alert(document.cookie)会有什么反应,解释原因。

(1).在浏览器的地址栏输入:javascript:alert(document.cookie) (不区分大小写),就会弹出你在当前网页登录的cookie信息。
(在谷歌浏览器中输入javascript:alert(document.cookie),却无法显示当前网页登录的cookie信息,通过方法(2)进入开发者选项之后就可以了)

注意:你把以上复制进入地址栏后会发现,“javascript”字符串消失不见,不管“javascript”里面哪一个字母被大写或小写,只要识别为“javascript”就会自动被过滤隐藏消失。

(2).按F12进入浏览器的开发者模式——console——在命令行输入javascript:alert(document.cookie),再回车

  Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
  查看某个网站颁发的Cookie很简单。在浏览器地址栏输入javascript:alert (document. cookie)就可以了(需要有网才能查看)。JavaScript脚本会弹出一个对话框显示本网站颁发的所有Cookie的内容。

2、阅读下面两篇文章或者阅读一本书

<<JavaScript DOM编程艺术>>:

Javascript Tutorial
https://www.evl.uic.edu/luc/bvis546/Essential_Javascript_–_A_Javascript_Tutorial.pdf
XMLHttpRequest
http://www.w3school.com.cn/ajax/
http://www.hunlock.com/blogs/AJAX_for_n00bs

  跨站攻击,即Cross Site Script Execution(通常简写为XSS,因为CSS与层叠样式表同名,故改为XSS) 是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的html代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。很多人对于XSS的利用大多停留在弹框框的程度,一些厂商对XSS也是不以为然,都认为安全级别很低,甚至忽略不计。

3、了解FireFox的两个插件LiveHttpHeaders和Firebug的基本使用方法。

  LiveHTTPHeaders是FireFox下的一个插件,可以用来实时监测发起的http请求和响应,也可以修改请求参数之后重新发起请求。
  LiveHTTPHeaders可以抓取http,https的数据链接,包括get和post,一个很不错的插件。安装好插件后,重启 FireFox,打开下载页面,运行LiveHTTPHeaders抓包(工具->Live HTTP Headers),然后再点击下载,不一会,包就抓好了。
  Firebug是firefox下的一个扩展,能够调试所有网站语言,如Html,Css等,但FireBug最吸引人的就是javascript调试功能,使用起来非常方便,而且在各种浏览器下都能使用(IE,Firefox,Opera, Safari)。除此之外,其他功能还很强大,比如html,css,dom的查看与调试,网站整体分析等等。总之就是一整套完整而强大的 WEB开发工具。再有就是其为开源的软件。
  Firebug是网页浏览器 Mozilla Firefox 下的一款开发类扩展,现属于Firefox的五星级强力推荐扩展之一。它集HTML查看和编辑、Javascript控制台、网络状况监视器于一体,是开发JavaScript、CSS、HTML和Ajax的得力助手。Firebug如同一把精巧的瑞士军刀,从各个不同的角度剖析Web页面内部的细节层面,给Web开发者带来很大的便利。例如 Yahoo! 的网页速度优化建议工具 YSlow。 Firebug也是一个除错工具。用户可以利用它除错、编辑、甚至删改任何网站的 CSS、HTML、DOM 以及JavaScript 代码 。

4、阅读下面这篇文章:

跨站脚本攻击实例解析
http://bbs.pediy.com/showthread.php?t=124209
  Javascript是一种 具有类似C语法的解释语言。虽然许多人只是把这种语言看作是一种浏览器脚本语言,但它实际上支持许多高级语言,诸如面向对象编程、递归、lambda和闭包等概念。这是-一个非常适合初学者的可接近的语言,可以快速扩展为您的技能所允许的最强大的工具。

5、阅读下面这两篇文章:

(1)DOM Based Cross Site Scripting or XSS of the Third Kind
http://www.webappsec.org/projects/articles/071105.html

  我们都知道Cross Site Scripting(XSS)是什么,对吧?这是一个漏洞,其中一个人发送恶意数据(通常是带有Javascript代码的HTML内容),然后由应用程序在某种HTML上下文中回显,并且Javascript代码被执行。嗯,错了。有一种XSS与这种描述不符,至少在一些基本属性中没有。上述XSS攻击要么“非持久性”/“反射”(即恶意数据嵌入在请求后立即返回浏览器的页面中),要么“持久”/“存储”(在这种情况下,恶意数据会在以后返回)。但是还有第三种XSS攻击 - 那些不依赖于首先将恶意数据发送到服务器的攻击!虽然这看起来与定义或常识几乎相矛盾,但事实上,这种攻击有两个很好描述的例子。本技术说明讨论了第三种XSS,称为“基于DOM的XSS”。当然,并没有声称攻击本身具有新颖性,而是这篇文章中的创新是注意到它们属于不同的味道,而且这种味道很有趣也很重要。
  应用程序开发人员和所有者需要了解基于DOM的XSS,因为它对Web应用程序构成威胁,Web应用程序具有与标准XSS不同的前提条件。因此,Internet上有许多Web应用程序容易受到基于DOM的XSS的攻击,但在(标准)XSS测试时,被证明“不易受攻击”。开发人员和站点维护人员(以及审计人员)需要熟悉检测基于DOM的XSS漏洞的技术,以及防御它们的技术,这两种技术都不同于适用于标准XSS的技术。

XSS (Cross Site Scripting) Cheat Sheet Esp: for filter evasion
http://80x86.io/post/xsscrosssitescriptingcheatsheetespforfilterevasion

XSS(跨站点脚本)备忘单Esp:用于过滤器规避

6、XSS漏洞的触发条件有哪些?应该如何防范?

  对于的用户输入中出现XSS漏洞的问题,主要是由于开发人员对XSS了解不足,安全的意识不够造成的。现在让我们来普及一下XSS的一些常识,以后在开发的时候,每当有用户输入的内容时,都要加倍小心。请记住两条原则:过滤输入和转义输出。

一、什么是XSS

  XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。
  在WEB2.0时代,强调的是互动,使得用户输入信息的机会大增,在这个情况下,我们作为开发者,在开发的时候,要提高警惕。

二、XSS攻击的主要途径

  XSS攻击方法只是利用HTML的属性,作各种的尝试,找出注入的方法。现在对三种主要方式进行分析。
第一种:对普通的用户输入,页面原样内容输出。
  打开http://go.ent.163.com/goproducttest/test.jsp(限公司IP),输 入:<script>alert(‘xss’)</script>, JS脚本顺利执行。当攻击者找到这种方法后,就可以传播这种链接格式的链接 (http://go.ent.163.com/goproducttest/test.jsp?key=JSCODE)如:http: //go.ent.163.com/goproducttest/test.jsp?key=<script>alert(‘xss’)& lt;/script>
并对JSCODE做适当伪装,如:http://go.ent.163.com/goproducttest/test.jsp?key=%3c%73%63%72%69%70 %74%3e%61%6c%65%72%74%28%27%78%73%73%27%29%3c%2f%73%63%72%69%70%74%3e
当其它用户当点此链接的时候,JS就运行了,造成的后果会很严重,如跳去一个有木马的页面、取得登陆用户的COOKIE等。
第二种:在代码区里有用户输入的内容
原则就是,代码区中,绝对不应含有用户输入的东西。
第三种:允许用户输入HTML标签的页面。
用户可以提交一些自定义的HTML代码,这种情况是最危险的。因为,IE浏览器默认采用的是UNICODE编码,HTML编码可以用&#ASCII方式来写,又可以使用”/”连接16进制字符串来写,使得过滤变得异常复杂,如下面的四个例子,都可以在IE中运行。
1,直接使用JS脚本。

<img src=”javascript:alert(‘xss’)/>

2,对JS脚本进行转码。

<img src=”javascript:alert(‘xss’)/>

3,利用标签的触发条件插入代码并进行转码。

<img onerror=”alert(‘xss’)/>

4,使用16进制来写(可以在傲游中运行)

<img STYLE=”background-image: /75/72/6c/28/6a/61/76/61/73/63/72/69/70/74/3a/61/6c/65/72/74/28/27/58/53/53/27/29/29>

以上写法等于<img STYLE=”background-image: url(javascript:alert(‘XSS’))”>

三、XSS攻击解决办法

请记住两条原则:过滤输入和转义输出。
具体执行的方式有以下几点:
第一、在输入方面对所有用户提交内容进行可靠的输入验证,提交内容包括URL、查询关键字、http头、post数据等
第二、在输出方面,在用户输内容中使用标签。标签内的内容不会解释,直接显示。
第三、严格执行字符输入字数控制。
四、在脚本执行区中,应绝无用户输入。

以上是关于软件安全实验——pre11(XSS跨站脚本攻击预习)的主要内容,如果未能解决你的问题,请参考以下文章

《Web安全渗透全套教程(40集)》学习笔记 | XSS跨站脚本攻击

web安全测试之 xss攻击

XSS跨站脚本攻击实验

Web安全——跨站脚本攻击XSS

简单XSS跨站脚本攻击实验

Web 安全之跨站脚本攻击(XSS)