任意文件上传漏洞checklist

作者:绿洲安全 发布:2026-10-13 08:30 收录:2026-10-13 18:07 4 次阅读 约 2562 字
摘要:一些无用的知识
推荐理由:本文涵盖「文件上传」、「漏洞」、「AGI」等多个主题,重点关注 文件上传。

免责声明

图片
图片

由于传播、利用本公众号绿洲安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号绿洲安全及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢


一些无用的知识

1. 文件类型验证

  • □ 

    上传扩展名已修改的文件。

  • □ 

    检查验证是否仅依赖 Content-Type。

  • □ 

    测试双重扩展名:image.jpg.php、image.php.jpg。

  • □ 

    检查大小写变体:.PHP、.pHp。

  • □ 

    验证 MIME 类型与文件签名(magic bytes)。

  • □ 

    测试补充可执行/解析扩展名:.phtml、.php5、.php7、.phar、.htaccess、.web.config、.user.ini、.svg、.html、.shtml。

  • □ 

    测试空字节/截断绕过:image.jpg%00.php。

  • □ 

    测试路径分隔符绕过:image.jpg/.php。

  • □ 

    测试 polyglot 文件:GIF89a 开头但内容含脚本。

  • □ 

    验证上传后重命名并禁止执行。

2. 文件名和路径处理

  • □ 

    测试文件名特殊字符、shell 元字符、CRLF、控制字符。

  • □ 

    检查文件名标准化、清理、Unicode 变体、全角字符、尾部点/空格。

  • □ 

    测试 Windows 保留名:CON、PRN、AUX、NUL。

  • □ 

    检查下载、检索、预览、删除、重命名端点的路径遍历。

  • □ 

    测试路径遍历编码绕过:..%2f..%2f、....//....//、%2e%2e%2f。

  • □ 

    检查文件名冲突、覆盖、权限继承、缓存投毒。

  • □ 

    验证服务端生成随机文件名,原文件名仅存数据库。

  • □ 

    验证路径 canonicalize,禁止 ..,下载必须鉴权。

  • □ 

    测试多扩展名、大小写、尾部点/空格、分号、NTFS ADS、8.3 短文件名。

  • □ 

    测试 URL 编码、双重编码、空字节、路径参数、矩阵参数。

  • □ 

    测试 Nginx/Apache/IIS/Tomcat 对同一路径解析差异。

  • □ 

    测试反向代理与后端路径规范化差异导致鉴权绕过或文件解析。

3. 访问控制

  • □ 

    注销状态下访问上传文件。

  • □ 

    用户 A 访问用户 B 文件。

  • □ 

    检查上传、预览、下载、删除端点授权。

  • □ 

    更改文件 ID、user_id、path、token 暴露他人内容。

  • □ 

    测试签名 URL 可猜测、长期有效、可重放。

  • □ 

    检查 CDN/反向代理缓存绕过鉴权。

  • □ 

    验证每个端点独立鉴权。

  • □ 

    验证对象存储私有。

  • □ 

    验证签名 URL 短期有效且绑定用户/文件。

  • □ 

    验证敏感响应不缓存。

  • □ 

    测试 X-Forwarded-*、X-Original-URL、X-Rewrite-URL 伪造。

  • □ 

    测试 Host 头注入、缓存投毒。

4. 内容处理

  • □ 

    SVG 上传导致存储型 XSS XXE。

  • □ 

    图像元数据处理:EXIF、IPTC、XMP 泄露路径、GPS、作者。

  • □ 

    文档预览和转换功能。

  • □ 

    测试 HTML、PDF、Office、SWF 等浏览器直接渲染。

  • □ 

    检查文档转换调用 ImageMagick、Ghostscript、FFmpeg 等。

  • □ 

    验证安全响应头:Content-Type、Content-Disposition: attachment、X-Content-Type-Options: nosniff、Content-Security-Policy。

  • □ 

    测试 CSV 公式注入、PDF JavaScript、Office 宏。

  • □ 

    验证不可信文件不直接内联渲染,图片重编码。

  • □ 

    验证转换在沙箱/低权限容器,下载强制附件,禁用宏和 JS。

  • □ 

    测试元数据字段是否进入外部命令:EXIF、标题、作者、注释。

  • □ pdf xss。

5. 存储和配置

  • □ 

    检查上传存储在应用服务器或对象存储。

  • □ 

    验证上传文件是否作为服务器端代码执行。

  • □ 

    检查公共存储权限、目录列表、ACL 过宽。

  • □ 

    检查缓存和 CDN 行为访问控制绕过。

  • □ 

    检查 CORS 配置任意源读取。

  • □ 

    验证非 Web 根目录、无执行权限。

  • □ 

    验证对象存储私有、最小权限。

  • □ 

    验证 CDN 鉴权、CORS 白名单。

  • □ 

    检查上传目录可执行脚本。

  • □ 

    检查临时目录不可访问。

6. 尺寸和资源限制

  • □ 

    检查最大文件大小强制执行。

  • □ 

    验证文件数量和上传频率限制。

  • □ 

    测试分块传输、Content-Length 伪造绕过大小限制。

  • □ 

    测试并发上传、并发解压。

  • □ 

    测试归档提取限制:Zip Slip、Zip Bomb、嵌套压缩、解压路径穿越。

  • □ 

    检查失败上传留下临时文件。

  • □ 

    验证解压限制路径、大小、层数。

  • □ 

    验证失败清理临时文件。

  • □ 

    检查代理上传大小限制与后端不一致。

  • □ 

    测试临时文件竞态:上传中执行、重命名、覆盖。

  • □ PNG解压DOS

    。

  • □ 

    Pixel floodattack。


7. Excel/XML 注入

  • □ 

    CSV/Excel 公式注入:单元格以 =、+、-、@、\t、\r、\n 开头。

  • □ 

    经典 Payload:=cmd|' /C calc'!A0、=HYPERLINK(...)、=WEBSERVICE(...)、=IMPORTXML(...)。

  • □ 

    测试导入、预览、导出、报表、日志下载、用户列表导出。

  • □ 

    导出文件被 Excel/WPS/Numbers 自动计算公式或外连。

  • □ 

    XML 外部实体注入(XXE)。

  • □ 

    盲 XXE:外部 DTD、参数实体、OOB 通道。

  • □ 

    XXE 导致 SSRF、本地文件读取、拒绝服务。

  • □ 

    XML 炸弹:Billion Laughs、Quadratic Blowup。

  • □ 

    XPath 注入、XSLT 注入。

  • □ 

    XLSX/ODS/DOCX/PPTX 内部 XML:xl/workbook.xml、xl/sharedStrings.xml、[Content_Types].xml、_rels/.rels、docProps。

  • □ 

    Excel 2003 XML / SpreadsheetML。

  • □ 

    检查解析器禁用 DTD、外部实体、外部 schema。

  • □ 

    使用安全解析库:defusedxml、禁用 FEATURE_SECURE_PROCESSING。

  • □ 

    导出公式前缀转义:加 ' 或前置空格,过滤 = + - @。

  • □ 

    CSV 强制 Content-Type: text/csv、Content-Disposition: attachment。

  • □ 

    检查宏、外部链接、DDE、OLE 对象。

  • □ 

    XLSX 解压路径、大小、层数限制。

8. 文件名命令执行

  • □ 

    文件名包含 shell 元字符:;、|、&、&&、||、$()、${}、反引号、>、<、换行。

  • □ 

    Windows shell 元字符:&、|、^、%VAR%、!VAR!、\r\n。

  • □ 

    文件名直接拼接到 system()、exec()、shell_exec()、popen()、Runtime.exec()、ProcessBuilder。

  • □ 

    后端调用外部程序:ImageMagick、FFmpeg、Ghostscript、LibreOffice、unzip、7z、tar、clamav、exiftool。

  • □ 

    图像/视频/文档转换、缩略图、预览、压缩解压、杀毒扫描、重命名、移动、复制。

  • □ 

    参数注入:文件名以 - 开头,如 -o /var/www/shell.php、--output、--config。

  • □ 

    通配符注入:*、?、[]。

  • □ 

    通过 filename、filename*、Content-Disposition 注入 shell 元字符。

  • □ 

    盲命令执行:时间延迟、DNS 外带、HTTP 外带、写入临时文件。

  • □ 

    命令执行回显:;id、|whoami、$(id)、反引号 id。

  • □ 

    路径与文件名组合:/tmp/a;id、a$(id).jpg、a\nid。

  • □ 

    Windows 路径:a&whoami、a|whoami、%COMSPEC%。

  • □ 

    检查使用数组传参/参数化 API,禁止 shell=True。

  • □ 

    服务端随机文件名,严格白名单,过滤 shell 元字符和 - 开头。

  • □ 

    外部命令沙箱、低权限、无网络。

  • □ 

    临时目录隔离、命令超时、输出限制。

9. 服务器与中间件测试漏洞

  • □ 

    识别 Web 服务器、应用服务器、语言运行时、反向代理、负载均衡、CDN、WAF。

  • □ 

    获取版本、补丁级别、默认配置、错误页、响应头。

  • □ 

    对照已知 CVE、安全公告、默认口令、示例应用。

  • □ 

    检查 Apache .htaccess 上传与覆盖、mod_mime、AddHandler、AddType、mod_php、mod_cgi、mod_fcgid。

  • □ 

    检查 Apache mod_proxy、mod_rewrite、Alias 路径遍历、CVE-2021-41773、CVE-2021-42013。

  • □ 

    检查 Apache server-status、server-info 暴露。

  • □ 

    检查 Nginx location ~ \.php$、fastcgi_split_path_info。

  • □ 

    测试 Nginx /upload/x.jpg/1.php、/upload/x.jpg%00.php、/upload/x.jpg%0a.php。

  • □ 

    检查 Nginx alias、root、try_files、merge_slashes 路径遍历。

  • □ 

    检查 Nginx client_body_temp_path 临时文件可访问/执行。

  • □ 

    检查 Nginx 与 PHP-FPM 解析差异、空字节、路径截断、CRLF 历史漏洞。

  • □ 

    检查 Nginx X-Accel-Redirect、内部重定向、鉴权绕过。

  • □ 

    测试 IIS 解析漏洞:file.asp;.jpg、file.asp:.jpg、file.asp/。

  • □ 

    测试 IIS 8.3 短文件名泄露与枚举。

  • □ 

    测试 IIS 尾部点、空格、::$DATA、NTFS ADS。

  • □ 

    检查 IIS WebDAV、PUT、MOVE、COPY 方法。

  • □ 

    检查 IIS .config、.asax、.ashx、.asmx、.svc、.cer、.cdx、.asa 上传。

  • □ 

    检查 IIS web.config 上传导致 RCE 或配置覆盖。

  • □ 

    检查 IIS 6.0/7.0/7.5 历史解析漏洞。

  • □ 

    检查 Tomcat/Jetty/Undertow manager、host-manager、status 弱口令。

  • □ 

    测试 Tomcat PUT 上传 JSP,如 CVE-2017-12615。

  • □ 

    检查 Tomcat AJP 暴露,如 Ghostcat CVE-2020-1938。

  • □ 

    检查 web.xml、context.xml 覆盖。

  • □ 

    检查 examples、docs、ROOT 示例应用。

  • □ 

    检查 JSP、JSPX、JSPF、tag 文件上传执行。

  • □ 

    检查 Tomcat 临时目录、work 目录、上传目录权限、版本相关 CVE。

  • □ 

    检查 WebLogic/WebSphere/JBoss/WildFly 管理控制台默认口令与未授权访问。

  • □ 

    检查 T3、IIOP、JNDI、XMLDecoder 相关漏洞。

  • □ 

    检查 WebLogic CVE-2018-2628、CVE-2019-2725、CVE-2020-14882/14883。

  • □ 

    检查 JBoss jmx-console、web-console、CVE-2017-12149。

  • □ 

    检查上传 WAR、JAR、XML 部署包。

  • □ 

    检查反序列化、表达式注入、文件上传组合链。

  • □ 

    检查 WebSphere 管理台、SOAP、文件传输。

  • □ 

    检查 PHP-FPM security.limit_extensions、cgi.fix_pathinfo=1。

  • □ 

    测试 /upload/x.jpg/1.php、/upload/x.jpg%00.php。

  • □ 

    检查 PHP-FPM 未授权 FastCGI 访问、CVE-2019-11043。

  • □ 

    检查 phpinfo()、phpmyadmin、adminer 暴露。

  • □ 

    检查 auto_prepend_file、phar、phar:// 反序列化。

  • □ 

    检查 Nginx client_body_temp_path、PHP upload_tmp_dir、Tomcat work/Catalina、temp、Jetty/Undertow/Spring Multipart 临时目录。

  • □ 

    检查管理端点:server-status、server-info、phpinfo、actuator、env、heapdump、jolokia。

  • □ 

    检查 Tomcat manager、WebLogic console、JBoss jmx-console、WebSphere admin。

  • □ 

    检查默认页面、示例应用、测试页面、调试端点。

  • □ 

    检查错误页泄露版本、路径、堆栈。

  • □ 

    检查目录列表、备份文件、源码泄露。

  • □ 

    检查中间件日志记录上传文件名导致日志注入。

  • □ 

    检查 WebDAV PUT/MOVE/COPY/PROPFIND 上传可执行文件。

  • □ 

    检查 SSI:.shtml、.stm、.shtm 上传执行。

  • □ 

    检查 CGI/Perl/Python 脚本上传执行。

  • □ 

    检查符号链接上传指向敏感文件。

  • □ 

    检查容器/K8s 挂载、权限、临时卷。

  • □ 

    检查中间件进程用户、上传目录权限、执行权限。

10. 反向代理、缓存与请求走私

  • □ 

    检查反向代理与后端路径规范化差异。

  • □ 

    测试 X-Forwarded-*、X-Original-URL、X-Rewrite-URL 伪造。

  • □ 

    测试 Host 头注入、缓存投毒。

  • □ 

    测试 CL.TE、TE.CL、TE.TE 请求走私。

  • □ 

    检查 CDN 缓存键、Vary、扩展名、鉴权绕过。

  • □ 

    检查 WAF 绕过:分块、编码、大小写、多扩展名。

  • □ 

    检查代理上传大小限制与后端不一致。

  • □ 

    检查缓存私有文件、缓存键不包含身份/租户/权限。

  • □ 

    检查 Cache-Control、Vary、Expires 正确性。

  • □ 

    检查下载/预览端点是否被 CDN 缓存。

  • □ 

    检查响应包含 Set-Cookie、Authorization 却仍被缓存。

11. 其他补充测试
  • □ 

    CSRF 上传。

  • □ 

    竞态条件:并发上传同名文件、并发解压。

  • □ 

    远程 URL 上传导致 SSRF。

  • □ 

    图像/视频处理库 RCE:ImageMagick、Ghostscript、FFmpeg。

  • □ 

    病毒/恶意软件扫描。

  • □ 

    文件名注入响应头:CRLF、日志注入。

  • □ 

    元数据泄露:GPS、用户名、内部路径。

  • □ 

    存储成本滥用:大量上传、超大文件。

  • □ 

    解析差异:Nginx/Apache/IIS 对扩展名、路径、编码解析不一致。

  • □ 

    WAF 绕过:分块、编码、大小写、多扩展名。





转载声明:本文转载自原发布平台 (作者:绿洲安全), 原文标题《任意文件上传漏洞checklist》, 查看原文。 版权归原作者及原发布平台所有,本站仅作收录与展示,未对正文内容作实质性修改; 若涉及侵权请联系本站处理。