• 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进行修改或升级替换。
  • 相关阅读:
    Vue(小案例_vue+axios仿手机app)_go实现退回上一个路由
    nyoj 635 Oh, my goddess
    nyoj 587 blockhouses
    nyoj 483 Nightmare
    nyoj 592 spiral grid
    nyoj 927 The partial sum problem
    nyoj 523 亡命逃窜
    nyoj 929 密码宝盒
    nyoj 999 师傅又被妖怪抓走了
    nyoj 293 Sticks
  • 原文地址:https://www.cnblogs.com/happystudyhuan/p/11288399.html
Copyright © 2020-2023  润新知