web安全——跨站脚本攻击(XSS)

web安全——跨站脚本攻击(XSS)

什么是XSS

XSS全称:跨站脚本(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets)的缩写CSS混合,所以改名为XSS;攻击者会向web页面(input表单、URL、留言版等位置)插入恶意JavaScript代码,导致管理员/用户访问时触发,从而达到攻击者的目的。

为什么会发生XSS

  1. 网站对用户的输入过滤不足,返回给用户的展示结果过滤不足。
  2. 网站的链接地址未经过过滤

XSS作用:

  1. 获取用户的cookie或其他有用的信息,利用平台负责接收并保存这些信息。
  2. 钓鱼
  3. 网站挂马
  4. 利用网站重定向
  5. 修改网页内容
  6. XSS蠕虫

XSS类型:

  1. 反射型
    攻击者通过input表单或URL向web页面中插入恶意的JavaScript代码,当web接收到攻击者恶意的JavaScript代码即会执行JavaScript代码。(一次性,经过后端,不经过数据库)

  2. 存储型XSS
    持久型xss,会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。(经过后端,经过数据库)

  3. DOM型
    不经过后端,DOM—based XSS漏洞是基于文档对象模型Document Objeet Model,DOM)的一种漏洞,dom – xss是通过url传入参数去控制触发的。

反射型 < DOM型 < 存储型

XSS攻击

  1. 绕过XSS-Filter,利用<>标签注入Html/JavaScript代码;
  2. 利用HTML标签的属性值进行xss攻击。例如:<img src="javascript:alert(‘xss’)"/>;
  3. 空格、回车和Tab。如果XSS Filter仅仅将敏感的输入字符列入黑名单,比如javascript,用户可以利用空格、回车和Tab键来绕过过滤,例如:<img src=“javas cript:alert(/xss/);”/>;
  4. 利用事件来执行跨站脚本。例如:<img src="#" “alert(1)"/>,当src错误的视乎就会执行onerror事件;
  5. 利用CSS跨站。例如:Body {backgrund-image: url(“javascript:alert(‘xss’)”)};
  6. 扰乱过滤规则。例如:<IMG SRC=“javaSCript: alert(/xss/);”/>;
  7. 利用字符编码,透过这种技巧,不仅能让XSS代码绕过服务端的过滤,还能更好地隐藏Shellcode;(JS支持unicode、eacapes、十六进制、十进制等编码形式)
  8. 拆分跨站法,将xss攻击的代码拆分开来,适用于应用程序没有过滤 XSS关键字符(如<、>)却对输入字符长度有限制的情况下;

例如:

<script>alert('hack')</script>
<script>confirm('hack')</script>
<script>prompt('hack')</script>
<img src=x onerror=alert(1)>
过滤script,可以用大小写绕过,或者使用其他标签<img>

修复XSS漏洞

  1. 输入与输出(对输入过滤,对输出编码)
  2. HttpOnly,HttpOnly是微软公司的Internet Explorer 6 SP1引入的一项新特性。这个特性为Cookie提供了一个新的属性,用以阻止客户端脚本访问Cookie。

猜你喜欢

转载自www.cnblogs.com/bink1/p/12626845.html