文件上传——验证/绕过

文件上传——验证/绕过

0.前言

  一般而言,在文件上传的常见验证中分为客户端验证和服务端验证,客户端验证主要是写入JavaScript脚本,校验上传文件的后缀名,可以通过在浏览加载文件,单但没有点击上传按钮就弹出警报窗,这一般就是前端的验证。(注:一般不提交是不会有报文的)

1.文件上传常见验证

  • 后缀名

    • 黑名单

      黑名单明确了不允许上传的格式和后缀,例如不允许上传带有asp,php,jjsp等格式的后缀,因此我们可以寻找没有限制到的格式进行文件上传漏洞的利用。

    • 白名单

      白名单是明确了上传文件的后缀格式,例如明确要求是jpg、png、zip等格式,因为相对于黑名单而言,由于无法寻找到没有限制的格式,所以白名单会相对更加安全。

  • 文件类型:

      MIME是描述消息内容类型的因特网标准。其消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。Content-Type中的内容也就是MIME,不同的应用程序支持不同的 MIME 类型。

    https://www.w3school.com.cn/media/media_mimeref.asp

  • 文件头(内容头信息):

    https://blog.csdn.net/ccj2020/article/details/87603903

文件类型 文件头
JPEG(jpg) FFD8FFE1
PNG(png) 89504E47
GIF(gif) 47494638
TIFF 49492A00
Windows Bitmap 424DC001
ZIP Archive 504B0304
RAR Archive(rar) 5261721
Adobe Photoshop(psd) 38425053
Rich Text Format(rtf) 7B5C727466
XML(xml) 3C3F786D6C
HTML(html) 68746D6C3E
Adobe Acrobat(pdf) 255044462D312E
Wave (wav) 57415654

(接下来以upload——labs为例)

2.Pass-01(前端验证)

  查看提交界面:

  接下来查看前端代码:

  可以看见在前端的js代码中存在相关的验证,我们只需要修改相关验证即可:

  点击进行webshell文件上传:

  可以看见上传成功。

3.Pass-02(MIME验证)

  根据提示,该文件上传是MIME类型,也就是需要使用抓包工具进行抓包处理,先看提交界面:

  抓包查看MIME值:

  修改MIME值:

  文件上传成功


文件上传——验证/绕过
https://one-null-pointer.github.io/2022/09/07/文件上传——后端黑白名单绕过/
Author
liaoyue
Posted on
September 7, 2022
传送口