FUSE->Finding File Upload Bugs via Penetration Testing

笔记作者:z3r0yu

原文作者:Taekjin Lee, Seongil Wi, Suyoung Lee, Sooel Son

原文标题:FUSE: Finding File Upload Bugs via Penetration Testing

原文来源:NDSS 2020

0x00 定义

  1. UFU 不受约束的文件上传
  2. UEFU 不受约束的可执行文件上传

    0x01 针对的两个挑战

  3. 绕过内容过滤检查系统的检查;
  4. 上传一个可执行文件(可以是PHP, HTML, XHTML, and JS)

    0x02 应对挑战的方法

  5. 13种变异策略+5个基础的变异文件对象–>针对挑战1

  6. 种子文件的可执行性不会被破坏,也就是保证了是可以执行的 –>针对挑战2

0x03 工具设计的几个阶段

  1. Chain Coordination: 构造链式变异组合,如果链上的某一个变异方式可以触发漏洞,则后面的内容将不会继续进行。注意到这个链其实就是对制定的变异策略的各种组合。但是如过两个变异策略是互相冲突的,则会将这种组合方式清除掉。
  2. Mutating and Sending Upload Requests: 这个主要是对整体文件上传的表述。但是可以注意到这里提到了unique identifier,这个很重要,写过PoC的都知道这个可以确保我们漏洞验证的准确有效的。但在这个方法中,这个值主要用在了两个地方:文件名和文件的内容注释
  3. Upload Validation: 第一步是根据response来验证文件是否上传成功;第二步是UPLOAD VALIDATOR中使用的三种方式来对漏洞的存在做验证。使用的方法还挺有意思。
  4. Uploading .htaccess: 这个文件是用来特殊考虑的,因为这个文件是可以直接控制PHP解释器的行为的。如果能任意上传这个文件那么对应的目录就可以被我们控制了。

    0x04 变异的对象 (Mutation objectives)

    1) Checking the absence of content-filtering checks
    2) Eliciting incorrect type inferences based on Content
    3) Exploiting incomplete whitelists or blacklists based on Extension
    4) Bypassing keyword filtering logic based on Content
    5) Bypassing filtering logic based on Content-Type

    0x05 13种变异策略

0x06 benchmark

(1) the evaluation set covered by NAVEX
(2) popular CMS applications listed by W3Techs
(3) highly rated CMS projects in PHP with more than 500 stars on GitHub that report no errors in their installations.

0x07 个人看法

  1. 总体的系统设计和变异策略很不错(但是变异策略不完全,这个好办在工程方面补上就行)
  2. 感觉比较好的是作者对很多情况进行了定义,表述很清晰
  3. 这个系统可以集成到框架中来对上传漏洞进行发现,也可以继续优化来加强其漏洞发现能力

    0x08 附录

    论文链接:https://wsp-lab.github.io/papers/lee-fuse-ndss20.pdf
    工具链接:https://github.com/WSP-LAB/FUSE

PS: 这篇短文只对论文关键点做了简述,翻译版本(较为粗略)其它简述见链接。