本篇文章只是学习笔记。

一、概述

文件解析漏洞,是指web容器(Apache、nginx、iss等)在解析文件时出现了漏洞,以其他格式执行出脚本格式的效果从而黑客可以利用该漏洞实现非法文件的解析。

二、web容器

web容器是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如tmocat、apache、nginx等。(可以理解为编程语言提供环境)
中间件:提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通,中间件处在操作系统和更高一级应用程序之间。
容器:给处于其中的应用程序组件(ASP,JSP,PHP)提供一个环境。使处于其中的应用程序组件之间跟容器中的环境变量接口交互,不必关注其他系统问题。
攻击者在利用上传漏洞时,通常会与web容器的解析漏洞配合在一起。

三、IIS

1、IIS6.0

(1)目录解析漏洞(/test.asp/1.jpg)

在IIS5.x/6.0中,在网站下建立文件夹的名字为.asp、.asa、.cer、.cdx的文件夹,你们其目录内的任何扩展名的文件都会被IIS当做asp文件来解释并执行。例如常见目录test.asp,那么/test.asp/1…jpg将被当做asp文件来执行。假设黑客可以控制上传文件夹路径,就可以不管上传后你的图片改不改名都能那shell了。

(2)文件名解析漏洞

在IIS5.X/6.0中,分号是后面的不被解析,也就是说xie.asp;,jpg会被服务器看成是xie.asp。还有IIS6.0默认的可执行文件除了asp还包含这两种.asa .cer。而有些网站对用户上传的文件进行校验,只是校验后缀名。所以我们只要上传.asp;,jpg、.asa;,jpg、.cer;.jpg后缀的文件,就可以通过服务器校验,并且服务器会把它当成asp文件执行。
IIS6.0→主目录→配置→查看这几种扩展名都是指向同一个文件。
C:\WINDOWS\SYSTEM32\INETSRV\ASP.DLL所以都解析成asp。

2、IIS7.X

(1)畸形解析漏洞

在IIS7.0中,在默认Fast-CGI开启状况下,再加上php配置文件中,开启了cgi.fix_pathinfo导致漏洞产生 。
这并不是nginx或者iis7/7.5本身的漏洞。

漏洞产生的条件:

php.ini里的cgi.fix_pathinfo=1
IIS7在Fast-CGI运行模式下
我们往图片里面加入phpinfo。
将文件保存成test.jpg格式,上传到服务器,上传成功后,直接访问test.jpg/x.php,此时神奇的畸形解析开始发挥作用,test.jpg将会被服务器当成php文件执行,所以图片里面的代码就会被执行。

(2)windows环境解析漏洞

在windows环境下,xx.jpg【空格】或xx.jpg,这两类文件都是不允许存在的,若这样命令,windows会默认出去空格或点,黑客可以通过抓包,在文件名后加一个空格或者点绕过黑名单,若上传成功,空格和点都会被windows自动消除。

四、Nginx

1、畸形解析漏洞

该漏洞与Nginx、php版本无关,属于用户配置不当造成的解析漏洞
cgi.fix_pathinfo
这个选项位于配置文件php.ini中,默认值为1,表示开启,当php遇到文件路径/test.png/x.php,若/test.png/x.php不存在,则会去掉最后的/x.php,然后判断/test.php是否存在,若存在,则把/test.png当做文件/test.png/x.php解析,如若test.png还不存在如果在其前面还有后缀,继续前面的步骤,以此类推,若是关闭该选项,访问/test.jpg/x.php只会返回找不到文件。
security.limit_extensions
在配置文件中,它位于/etc/php-fpm.d/www.conf中
这个选项开始是被注释了的也就是默认只允许执行php文件,可以在后面添加其他后缀,比如security.limit_extensions .jpg .php。像这样添加.jpg之后,.jpg文件也能以php格式来执行,修改了后需要service php-fpm restart重启php。
环境
vulhub/nginx/nginx_parsing_vulnerability

2、nginx文件名逻辑漏洞CVE-2013-4547(%20%00)

影响nginx版本:nginx0.8.41~1.5.6
漏洞的原理是非法字符空格和截止符(%00)会导致Nginx解析URI时的有限状态机混乱,危害是允许攻击者通过一个非编码空格绕过后缀名限制。举个例子,假设服务器上存在文件:file.jpg【空格】,注意文件名的最后一个字符是空格,则可以通过访问:

五、Apache

1、未知扩展名解析漏洞

在Apache 2.0.x<=2.0.59,Apache 2.2.x<=2.2.17,Apache 2.2.2<=2.2.8中Apache解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。
apache是从右到左开始判断解析,如果为不可识别解析,就再往左判断,比如,sh.php.owf.rar和.rar这两种后缀是apache不可识别的解析,apache就会把sh.php.pwf.rar解析成sh.php。如何判断是不是合法的后缀就是这个漏洞的利用关键,测试时可以尝试上传一个sh.php.rara.jpg.png…去测试是否是合法后缀。任意不识别的后缀,逐级向上识别。
只要不在mime.types当中的都不认识,可以到安装Apache的目录下找这个文件。

2、Apache配置问题(.htaccess)

.htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置,通过.htaccess文件,可以实现:网页301重定向、自定义404错误页面、改变文件扩展名、运行/阻止特定用户或者目录的访问、禁止目录列表、配置默认文档等功能IIS平台上不存在该文件,该文件默认开启,启用和关闭在httpd.conf文件中配置。
.htaccess文件生效前提条件为:
mod_rewrite模块开启
AllowOverride ALL

要.htaccess的规则生效,则需要在apache开启rewrite重写模块,因为apache是多数都开启这个模块,所以规则一般都生效,以下这个,.htaccess的意思就是把所有名字里面含有jpg的文件当成php脚本来执行。当前目录下的所有jpg文件当成php文件执行。如果在Apache的conf里有这样一行设置,AddType application/x-httpd-php .jpg即使扩展名是 .jpg ,也会以php来执行。

3、apache httpd换行解析漏洞(CVE-2017-15715)

(1)原理

正则表达式在结尾处 符号,如果设置了 R e g E x p 对象的 M u l t i l i n e 属性,则 符号,如果设置了RegExp对象的Multiline属性,则 符号,如果设置了RegExp对象的Multiline属性,则也匹配‘\n’或’\r’。
因为1.php\x0a = 1.php\n,所以我们在上传文件名后面加上\0xa(换行符),也会以php文件形式解析执行。
该漏洞属于用户配置不当产生的漏洞,与具体中间件版本无关。
1.php\x0a=>1.php
apache通过mod_php来运行脚本,其2.4.0-2.4.29中存在apache换行解析漏洞,在解析php时xxx.php\x0A将被安装PHP后缀进行解析,导致绕过一些服务器的安全策略,该漏洞属于用户配置不当产生的漏洞,与具体中间件版本无关。
影响版本:Apache 2.4.0-2.4.29
环境:vulhub/httpd/CVE-2017-15715

六、.user.ini

1、.user.ini作用和配置

.htaccess是伪静态环境配置文件,用于lamp。
.user.ini是lnmp文件,里面放的是你网站的文件夹路径地址,目的是防止跨目录访问和文件跨目录读取。
为了防止跨站,可将.user.ini放在网站根目录下,内容为:

2、.user.ini文件利用

利用条件:
1、服务器脚本语言为PHP
2、服务器使用CGI/FastCGI模式
3、上传目录下要有课执行的php文件

七、Windows操作系统文件命名规则

windows操作系统中,文件名不能以空格或.开头,也不能以空格或.结尾,当把一个文件命名为以空格或.开头或结尾时,会自动的去掉开头和结尾处的空格和.,利用此特性,也可能造成文件解析漏洞。

生命在于学习——文件解析相关推荐

  1. 生命在于学习——框架-中间件的学习(一)

    声明:本篇文章仅用于学习笔记记录,不得用于其他用途. 一.什么是框架 Web框架(Web framework)或者叫做Web应用框架(Web application framework),是用于进行W ...

  2. 生命在于学习——docker逃逸

    注意:本篇文章仅用于学习记录,不得用于其他用途. 一.docker逃逸 docker逃逸就是从当前docker容器权限中逃逸出来,获得宿主机的权限. 二.常见的逃逸方法 1.配置不当引起的逃逸 (1) ...

  3. 后端开发工程师的生命周期,生命在于学习

    后端开发工程师的生命周期 1 职业发展方向: 标准:需要不断学习.主动思考.不断锻炼.多提问 技术专家:三年.五年.八年的时间节点 2 后端学习成长路线 2.1 后端技术图谱 2.2 Go语言技术图谱 ...

  4. 生命在于学习——免杀

    注意:本篇文章仅用于学习以及笔记记录,不得用于其他违规用途. 一.什么是免杀 免杀,也就是病毒与反间谍的对立面,英文为Anti-AntiVirus(简写Virus AV),翻译为"反杀毒技术 ...

  5. 生命在于学习——MSF初体验(一)

    注意:本篇文章仅用于学习笔记记录与交流,不得用于其他违规用途. 一.什么是MSF框架 Metasploit就是一个漏洞利用框架,全称是The Metasploit Framework,简称MSF(美少 ...

  6. Android学习笔记之AndroidManifest.xml文件解析(摘自皮狼的博客)

    Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它 ...

  7. 嵌入式知识-ARM裸机-学习笔记(2):利用GPIO来控制LED(附mkv210_image.c文件解析)

    嵌入式知识-ARM裸机-学习笔记(2):利用GPIO来控制LED(附mkv210_image.c文件解析) 首先声明该博客是针对朱有鹏老师的嵌入式课程进行笔记的总结. 一.通过GPIO控制点亮LED( ...

  8. Glib学习(17) Key-value文件解析器 Key-value file parser

    glib源码下载:http://ftp.gnome.org/pub/gnome/sources/glib/ glib帮助文档:https://developer.gnome.org/glib/ 本节主 ...

  9. 流媒体-H264协议-编码-x264学习-相关概念x264编译及文件解析(一)

    流媒体-H264协议-编码-x264学习-相关概念x264编译及文件解析(一) 流媒体-H264协议-编码-x264学习-主要结构体(二) 流媒体-H264协议-编码-x264学习-主要函数(三) 流 ...

最新文章

  1. iOS微信支付集成 SDK1 7 5
  2. 嵌入式系统学习笔记之五-- uboot常用命令 环境变量
  3. 某书2018面试题之最长对称子串
  4. Unicode字符集下WriteFile中文处理
  5. 跟着 Alex 学python 1.安装
  6. win2003 vps IIS6中添加站点并绑定域名的配置方法
  7. 数据结构算法(二)_算法基础之前传(递归、时间复杂度、空间复杂度、二分查找)...
  8. 通过对代码进行调试讲解缓冲区溢出原理
  9. [css] 你有没有使用过“形似猫头鹰”(例:`* + *{ ... }`) 的选择器?
  10. cmake 安装_linux下安装cmake
  11. Spine(2d动画制作软件)绿色中文最终优化版V3.8.75 | spine动画软件下载
  12. iftables 官方文档
  13. c语言程序设计网站有哪些,C语言编程软件有哪些?
  14. 常用数据手册(Datasheet)下载网站
  15. ubuntu 文件名乱码
  16. 【预测模型】基于粒子群优化宽度学习实现预测matlab代码
  17. 郁金香商业辅助教程 2016 笔记 1~5
  18. MS SQL用两个字段中较大的值为条件进行查询
  19. java课后思考问题(八)
  20. 前端利用js里数组的filter方法进行多条件过滤查询

热门文章

  1. 西门子200smart与v90伺服驱动器Profinet通讯。 sina-pos的运用
  2. 图像算法:数字图像处理程序大全
  3. python commands_[转载]python - Commands模块 - 使用方法
  4. 喜马拉雅FM-Java 招聘中~
  5. VS2019快捷键大全
  6. CentOS安装Tars
  7. matlab--16进制转ASCII代码
  8. 诸葛亮十万雄师,一夕而撤之,势如大山潜 移而无声;十里连营,一夕而拔之,势如大河暗流而无形。由此可见,他的用兵之术竟达到 了‘静如山而动如水’的境界,岂不令人望而生畏?”
  9. 程序猿表情包合集,让你斗图再也不会输
  10. mysql (errcode 13)_MySQL 启动报错:File ./mysql-bin.index not found (Errcode: 13)