【漏洞】文件解析漏洞

前言

文件解析漏洞学习笔记

漏洞原理

  • Web中间件解析机制存在漏洞,导致将普通文件当作脚本代码解析执行
  • 通常配合文件上传功能,上传包含木马的文件

Nginx + PHP

Nginx 路径解析漏洞

  • 漏洞编号:CVE‑2013‑4547
  • 受影响版本
    • 0.8.41 <= Nginx <= 1.4.3
    • 1.5.0 <= Nginx <= 1.5.6
  • 利用:上传文件为<file_name>.png,访问路径为<file_name>.png/.php,Nginx会将文件交给PHP解析执行

传送门

PHP‑CGI cgi.fix_pathinfo 解析漏洞

  • 适用环境:Nginx + PHP‑CGI
  • 利用:上传图片马<file_name>.png,访问<file_name>.png/.php,被当作PHP脚本执行
  • 防御:修改php.ini配置
/etc/php/php.ini
1
cgi.fix_pathinfo=0

Apache + PHP

换行绕过符漏洞

  • 漏洞编号:CVE-2017-15715
  • 受影响版本
    • 2.4.0 <= Apache <= 2.4.29
  • 原理:Apache解析文件名时会忽略末尾换行符%0a
  • 利用:上传文件为<file_name>.php%0a,实际保存为<file_name>.php,访问即可执行PHP

传送门

.htaccess 配置不当解析漏洞

  • 原理:通过.htaccess配置强制指定后缀文件由 PHP 处理器解析
  • 利用:先上传.htaccess,再上传图片马<file_name>.png,访问即可执行PHP
.htaccess
1
2
3
<FileMatch "*.png">
SetHandler application/x-httpd-php
</FileMatch>

未知后缀解析漏洞

  • 原理:Apache从右向左依次识别后缀,识别到合法脚本后缀即执行
  • 利用:上传文件为<file_name>.php.xxx,会被当作PHP文件执行

IIS 6.0

分号解析漏洞

  • 原理:IIS 6.0 解析文件名时,将;视为文件名结束符
  • 利用:上传文件为<file_name>.asp;.jpg,IIS只识别.asp并执行

目录解析漏洞

  • 原理:IIS 6.0 中,若目录后缀为 .asp/.asa/.cer,目录内所有文件均会被当作ASP执行
  • 利用:创建名为.asp的文件夹,内部上传图片马,访问即可getshell

防御

  • Internet信息服务(IIS)管理器中,选择服务器->选择处理程序映射

  • 选择PHP的CGI->编辑

  • 请求限制

  • 映射->勾选仅当请求映射至以下内容时才调用处理程序->确定

PHP

00截断漏洞

  • 受影响版本
    • PHP < 5.3.4
  • 原理:C语言底层将0x00视为字符串结束符,后端截断文件名
  • 利用:上传<file_name>.php%00.jpg,实际保存为<file_name>.php

完成

参考文献

哔哩哔哩——千锋教育网络安全学院
哔哩哔哩——xiaodisec