XSS跨站脚本攻击——及修复防御

XSS漏洞相关基础知识-浏览器工作机制

  • 浏览器常见的有IE、Firefox、Chrome等,这些浏览器在性能和效率上也许有较大差别,但是它们基本的工作机制是相同的。
  • 浏览器主要是解析渲染Web中间件响应的HTML、JavaScript、CSS等资源。

XSS漏洞相关基础知识-HTML

  • HTML 是用来描述网页的一种语言。Web 浏览器的作用是读取 。
  • HTML 文档,并以网页的形式显示出它们。浏览器不会显示 。
  • HTML 标签,而是使用标签来解释页面的内容。

XSS漏洞相关基础知识-JavaScript

  • JavaScript 是一种轻量级的编程语言。
  • JavaScript 代码可插入 HTML 页面,并由所有的现代浏览器执行。
  • JavaScript 能够改变任意 HTML 元素的大多数属性。
  • JavaScript 往往用来改善HTML的展现,从而带给用户更好的体验。

XSS漏洞原理

  • XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是攻击者往Web页面或者URL里插入恶意JavaScript脚本代码,如果Web应用程序对于用户输入的内容没有过滤,那么当正常用户浏览该网页的时候,嵌入在Web页面里的恶意JavaScript脚本代码会被执行,从而达到恶意攻击正常用户的目的。
  • Xss   攻击的代码是   javascript代码。
  • Xss 一般情况植入到url或者web中。
  • Xss的攻击目标是普通用户(不是服务器)。
  • 跨站脚本攻击—XSS(Cross Site Script),是指攻击者通过在Web页面中写入恶意脚本,造成用户在浏览页面时,获取控制用户浏览器进行操作的攻击方式。

XSS漏洞出现的两个条件

  • 1、可以控制的输入点
  • 2、输入能返回到前端页面上被浏览器当成脚本语言解释执行

XSS漏洞危害

  • Cookie窃取
  • 持久型Cooke以文本形式存储在硬盘上,由浏览器存取
  • 临时型Cookie也称会话Cookie,存储在内存中,当前浏览器关闭后会消失
  • cookie是Web应用程序用来识别用户的凭证,很多情况下是唯一的凭证。当用户第一次登录网站时,网站会给用户发放一个唯一的cookie,用户再次登录网站时,凭借该cookie用户就不需要再次登录。
  • 通过JavaScript,浏览器可以操作用户的cookie。
  • 在浏览器地址栏输入javascript:alert (document. cookie)就可以查看某个网站颁发的Cookie
  • Session和Cookie最大的区别在于:
  • Session是保存在服务端的内存里面,而Cookie保存与浏览器或客户端的文件里面。
  • 会话劫持
  • 如某 CMS 的留言系统存在一个存储型 XSS 漏洞,攻击者把 XSS 代码写进留言信息中,当管理员登录后台并查看是,便会触发 XSS 漏洞,由于 XSS 是在后台触发的,所以攻击的对象是管理员,通过注入 JavaScript 代码,攻击者便可以劫持管理员会话执行某些操作,从而达到提升权限的目的。
  • 比如,攻击者想利用 XSS 添加一个管理员账号,只需要通过之前的代码审计或其他方式,截取到添加管理员账号时的 HTTP 请求信息,然后使用 XMLHTTP 对象在后台发送一个 HTTP 请求即可,由于请求带上了被攻击者的 Cookies,并一同发送到服务端,即可实现添加一个管理员账户的操作。
  • 键盘记录
  •  
  • 客户端信息探查
  •  
  • XSS蠕虫
  • 通过精心构造的 XSS 代码,可以实现非法转账、篡改信息、删除文章、自我复制等诸多功能。
  • 网页挂马
  • 一般都是通过篡改网页的方式来实现的,如在 XSS 中使用 <iframe> 标签。
  • 钓鱼页面
  • 重定向钓鱼
  • 把当前页面重定向到一个钓鱼页面。
  • HTML 注入式钓鱼
  • 使用 XSS 漏洞注入 HTML 或 JavaScript 代码到页面中。
  • XSS漏洞的深入利用-DDOS攻击
  • 注入恶意 JavaScript 代码,可能会引起一些拒绝服务攻击。

XSS漏洞分类

  • 反射型XSS
  • 反射型XSS,又称非持久型XSS。也就是攻击相对于受害者而言是一次性的,具体表现在受害者点击了含有的恶意JavaScript脚本的url,而Web应用程序只是不加处理的把该恶意脚本“反射”回受害者的浏览器而使受害者的浏览器执行相应的脚本。
  • 储存型XSS
  •  
  •     储存型XSS,也就是持久型XSS。攻击者上传的包含恶意js脚本的留言等信息被Web应用程序保存到数据库中,Web应用程序在生成新的页面的时候如果包含了该恶意js脚本,这样会导致所有访问该网页的浏览器解析执行该恶意js脚本。这种攻击类型一般常见在博客、论坛等网站中
  •     js攻击脚本被保存到数据库中
  • DOM型XSS
  • DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式。
  • DOM-XSS简单去理解就是因为他输出点在DOM。
  • Dom型xss和反射型xss很相似,为什么呢?
  • 攻击者构造 url 发送给受害者。

xss变形

  • 大小写混合字符<scRiPt>alert(1)</scrIPt>
  • 过滤尝试<scr<script>ipt>alert(1)</scr<script>ipt>
  • src属性 <img src=x οnerrοr=alert(1)> <img/src=x οnerrοr=alert(1)> <video src=X οnerrοr=alert(1)> <audio src=x οnerrοr=alert(1)>
  • iframe <iframe src="javascript:alert(2)">
  • 利用属性绕过
  • “background”属性 <table background=javascript:alert(1)></table> // Works on Opera10.5      and IE6 “posters"
  • “posters” 属性 <video poster=javascript:alert(1)//></video> // Works Upto Opera10.5
  • “data”属性 <object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgiSGVsbG8iKTs8L3NjcmlwdD4="> <object/data=//goo.gl/nlX0P?
  • “code”属性 <applet code="javascript:confirm(document.cookie);"> // FirefoxOnly <embed code="http://businessinfo.co.uk/labs/xss/xss.swf"     allowscriptaccess=always>
  • 利用事件绕过
  • <svg οnlοad=prompt(1)> <marquee onstart=confirm(2)> <body οnlοad=prompt(1)> <select autofocus οnfοcus=alert(1)> <textarea autofocus οnfοcus=alert(1)> <keygen autofocus οnfοcus=alert(1)> <video><source οnerrοr="javascript:alert(1)">
  • 圆括号被过滤
  • <a οnmοuseοver="javascript:window.οnerrοr=alert;throw 1>
  • <img src=x οnerrοr="javascript:window.οnerrοr=alert;throw 1">
  • 利用编码绕过
  • URL编码
  • unicode编码
  • HTML编码
  • CSS编码

XSS修复与防御

  • htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。预定义的字符:
  • & (和号)成为 &amp;
  • " (双引号)成为 &quot;
  • ' (单引号)成为 &#39
  • < (小于)成为 &lt;
  • > (大于)成为 &gt;
  • HTTP-only:
  • 当cookie设置为httponly之后,浏览器的cookie无法通过客户端js脚本获取
发布了42 篇原创文章 · 获赞 145 · 访问量 5093

猜你喜欢

转载自blog.csdn.net/cldimd/article/details/105000134