zoukankan      html  css  js  c++  java
  • 网络安全从入门到精通 (第六章-3) Dom Based XSS

    本文内容:

    • 什么是DOM Based XSS
    • Dom型XSS核心
    • DOM Based XSS

    1,什么是Dom Based XSS

      Dom Based XSS漏洞是基于文档对象模型的一种漏洞。

      Dom是一个平台,编程语言无关的接口,它允许程序或脚本动态地访问更新文档内容,结构和样式,处理后的结果能够成为现实页面的一部分。

      Dom中有很多对象,其中一些使用户 可以操纵的。如URL,location,refelTer等。

      简单来说:

        Dom的核心就是操纵document,document的核心就是操纵浏览器。

        每个载入浏览器的HTML文档都会成为document对象,所以注意一件事:

        Dom型攻击与服务器基本没关系,document是一个JS语句

        浏览器F12控制台运行的一般都是JS

    2,Dom型XSS核心:

      原本 不应该出现XSS的地方,但是经过javascript的操作之后产生XSS。

      举例:

        script=>后端过滤了这个代码

        <script> <= javascript 它会自动的把+号变为为P

        <script> 就变成了<scri+t> 然后这样后端就不认识它了,就会输出,然后经过js的渲染之后,它就产生了漏洞。

    3,Dom Baesd XSS

      每个载入浏览器的HTML文档都会成为Document。

      Document对象使我们可以从脚本中HTML页面中的所有元素进行访问。

      Document对象是可以被操作的,它操作室当前网页,可以被JS操作。

      Document对象属性:

        body:提供对<body>元素直接访问,对于定义了框架集的文档,该属性引用最外层的<frameset>。

        cookie:设置或返回与当前文档有关的所有cookie。

        domain:返回当前文档的域名。

        lastModified:返回文档被最后修改的日期和时间,可以通过它判断页面是不是伪静态。

        referer:返回载入当前文档的文档URL。

        title:返回当前文档的标题。

        URL:返回当前文档的URL。

      注意:

        XSS窃取COOKIE其实XSS平台就实用累洗浴Document.cookie这样的东西,来获取页面的Cookie值。

        js是在客户端运行的,是不占用服务器资源的。

        纯静态页面是没有办法做SQL注入的。

        伪静态页面可以做SQL注入,伪静态注入其实与动态注入没有一丝一毫的区别。

      Document对象方法:

        close():关闭用document.open()方法打开的输出流,并显示选定的数据。

        getElementsByid():返回对拥有指定ID的第一个对象的引用。

        getElementsByName():返回带有指定名称的对象集合。

        getElementsByTagName():返回带有指定标签名的对象集合。

        open():打开一个流,以收集来自任何document.write()或documnet.writeln()方法的输出。

        write():向文档写HTML表达式或JavaScript代码。

        writeln():等同于write()方法,不同的是在每个表达式之后写一个换行符。

        docum.write():核心在于输出,它可以接收native编码值。它是js语句,js语句会解码某些编码。

        转码地址:http://tool.oschina.net/encode?type=3

      注意:

        在做XSS的时候,建议使用Burp。

        因为有些时候前端某些地方做了输入限制。  

        反射型XSS,因为js的参与就变成了反射Dom型xss

        存储型XSS,因为js的参与就变成了存储Dom型xss

        js中两种操纵浏览器的两种方法:

          Document:核心控制页面,文档对象模型

          window:核心控制浏览器,浏览器对象模型使javascript有能力与浏览器"对话"

      防御XSS核心:

        说了很多次了,应该可以记住了吧,嘿嘿!!!

        1.过滤参数:单引号、双引号、尖括号

        2.HTML实体编码。

      补充:

        SQL注入防御核心:过滤,不允许输入其他数据,强转数字型,就一点办法没有了。

      

        
        

  • 相关阅读:
    LCA问题第二弹
    LCA问题
    树状数组(Binary Indexed Tree,BIT)
    线段树第二弹(区间更新)
    线段树+RMQ问题第二弹
    RMQ问题第一弹
    分治法二(平面最近点对)
    分治法(一)
    带权并查集
    提交一个变量或数组到另一个jsp页面
  • 原文地址:https://www.cnblogs.com/xz25/p/12714879.html
Copyright © 2011-2022 走看看