• XSS漏洞基础


    什么是XSS?

    • XSS全程Cross-site scripting,跨站脚本攻击。恶意攻击者往Web页面里插入html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。

    XSS的危害:

    • 盗取用户或者管理员的Cookie
    • XSS Worm
    • 挂马(水坑攻击)
    • 有局限性的键盘记录

    ......等等一些其它的姿势

    XSS的分类:

    • DOM-based XSS:DOM XSS与反射型XSS的差别在于DOM XSS代码不需要服务器解析响应的直接参与,触发XSS靠的是浏览器DOM解析器的解析,可以完全认为是客户端的事情。
    • 反射型XSS:反射型XSS又称为非持久型XSS。XSS代码出现在URL参数或者请求中,浏览器发出请求时,参数值作为输入提交到服务器,服务器接受处理后参数值出现在响应的HTML中,最后浏览器解析执行了这段XSS代码。
    • 存储型XSS:又称持久型XSS,他和反射型XSS最大的不同就是,攻击脚本将被永久地存放在目标服务器的数据库或文件中。
    • Flash XSS:利用的是网页上flash文件缺陷来执行js脚本,一般是反射型xss。

    XSS手动挖掘

    • 看URL参数输出的位置
    • 看输入框输出位置

    输出点位置:

    1.输出在标签外:

    • 需要可以构造标签,如果不能构造标签就不存在XSS漏洞

    2.输出到标签中:

    • 如果输出在“双引号或者‘单引号内部,需要能够闭合引号,如果不能闭合引号,就需要看能否在当前的标签属性中执行js代码,如果不能,就不存在xss漏洞。
    • 如果没有输出在”双引号或者’单引号内部,或者可以闭合引号,可以构造一个新的属性,使用新的属性的值来执行js代码,比如事件属性。

    3.输出到script标签中:

    • @如果输出在“双引号或者‘单引号内部,需要能够闭合引号
    • @如果不能闭合引号,需要看当前变量能不能innerHTML或者document.write,插入到网页中,如果可以就可以构造XSS,如果没有,就不存在XSS(引号内部可以使用unicode编码,<不能编码)
    • @如果输出“双引号或者‘单引号内部,需要能够闭合引号,如果可以闭合引号,就可以直接传递进去js代码,使用注释符号,注释掉后面的js代码就可以构造xss

    XSS防御

    • 对XSS的防御需要根据实际情况对用户的输入进行严格的过滤。基于过滤的XSS防御方式通常可分为两种:基于黑名单的过滤和基于白名单的过滤。后者的防御效果往往更好,对于用户在白名单之外的输入,可以直接忽略。在构造白名单的过程中需要保证在不影响用户体验的同时,尽可能杜绝一切不必要的输入内容。
    • 在cookie中加入httponly属性可以在一定程度上保护用户的cookie,减少出现XSS时损失
    •  (1,apache2.2.x;2.注册网站,把攻击者自己的加了httponly的cookie复制过去,补全信息)
    • Flash XSS的修复需要对相应的flash进行修改或升级替换。
  • 相关阅读:
    Jmeter(十四)
    Jmeter(十一)
    Jenkins
    对前端模块化应如何理解
    Vue面试相关
    vue-router使用总结
    Vue全家桶__Vue-router&Vuex
    Vue-cli3开发单文件
    Vue_组件化开发
    Vue_问题梳理
  • 原文地址:https://www.cnblogs.com/happystudyhuan/p/11288399.html
Copyright © 2020-2023  润新知