What's in an Exploit? An Empirical Analysis of Reflected Server XSS Exploitation Techniques

原文链接

本文发表自RAID2020年,作者来自微软、东北大学和纽约大学。一项对反射型XSS的实证分析研究。

image-20201030143613662

本文从XSSED和OPENBUGBOUNTY两个网站收集了近十年来的反射型XSS提交的payload。 两个测试集OBB的比较新一些。

image-20201030162110612

在此即上进行EXP分析,设计了一个验证系统。证明这些反射型的EXP是可以被精确的识别出来的。

image-20201030162154660

整个系统分为动态和静态两个佐证部分,尝试识别出每个exp的trick:

  • 静态:

    静态部分是:EXP Extraction ​到​ ​S​t​a​ti​c​ ​F​e​a​t​ur​e​ ​E​x​t​ra​c​t​i​on。​ 其实我觉得还带是正则。

  • 动态:

    动态部分是:EXP Execution 到 Dynamic Feature Extraction。 将收集的response的page使用chrome和FireFox加载,在沙箱环境中观察,因为有一些触发条件需要特定操作或者加载资源,因此作者分了四个round,后三个round需要操作(Mouse Move, Mouse Click, Network Error),通过在response page中插桩,观察XSS执行里的trick。

    image-20201030173010493

下面来看看对payload的一些分统计:

  1. Context( Escaping and Creation)技术:

    image-20201030163940277

这一类主要是指逃逸+构造,日常使用中确实最多。细分为: HTML环境注释逃逸法、 JS环境注视逃逸法、属性环境标签闭合逃逸+构造标签、属性环境属性闭合+构造属性、JS环境代码续接。 (我瞎编的:expressionless:)​

  1. Synatx Confusion技术
image-20201030164425916

这一类就是语法混淆,包括: 方法名的额外括号、大小写混淆、 unicode编码混淆(乱入:注意方法括号不能unicode)、第四个厉害了没听说过、 空白符混淆、 斜杠替换空格(还有alert(/xss/))、 标签解析混淆(频率还很高,mark!)

  1. Control Flow Modification技术

此技术在OBB的测试集中使用比较多。也就是有48.2%的

image-20201030165941047

这个分类粒度是控制流更改(可能喝上两种不是一个维度)。主要是躲过<script>标签过,有1, 自动触发事件 2,exploit-triggered events(咋翻译?) 3,用户交互事件 4, 将事件赋给一个变量! 5,抛异常!!

这个类型分的有点混乱,可能我还没看仔细。

  1. 字符解释技术

    image-20201030171318469

    能够将字符当作JS代码解释的方法, 1,document.write 2, eval 3, setTimeout 4, top (写一遍加深印象...)

总结

image-20201030171651652

En...还是闭合标签感觉爽些。

Tips

看完这篇文章其他部分没仔细看, 光学姿势去了...

  • 可能有些位置就是可以用多种方法,最近趋于喜欢直接用svg做注入
  • 是时候总结一波姿势了