漏洞复现-CVE-2013-4547-Nginx 文件名逻辑漏洞

 
 
 
 
 

0x00 实验环境

攻击机:win10

靶机:Ubuntu18 (docker搭建的vulhub靶场)

 

0x01 实验引用

(1)在Windows中,文件名1.jpg 后的空格常被忽略,因而具有较大利用率

(2)Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7 为其影响版本

(3)适用于php脚本语言

 

0x02 实验目的

学习nginx文件上传解析漏洞,掌握文件上传更多姿势要领,文件在上传时经过如下文件进行过滤,导致在文件命令末尾使用空格等编码即可绕过:

 

location ~ \.php$ {
    include        fastcgi_params;

    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
    fastcgi_param  DOCUMENT_ROOT /var/www/html;
}

 

 

0x03 实验步骤

打开页面,发现为一个文件查询的页面:

当查询文件为php时,文件格式表示不支持:

此时我们结合2013年年底爆出的CVE-2013-4547漏洞进行文件上传操作:

 

将文件名修改为可上传或查询的文件格式,同时,在Hex一栏修改二进制编码:

 

 

 

将文件修改为1.jpg1后,可以发现,在67后面出现了31,此时我们可以将31修改为20,同时插入00:

 

 

 

 

 

 

修改成功,放包试试:

 

 

 

此时,文件上传成功,我们点击访问:

 

 

 访问  http://you-ip:8080/uploadfiles/1.jpg .php 即可成功

0x04 实验原理

 主要原因:错误地解析了请求的URL,错误地获取到用户请求的文件名,导致出现权限绕过、代码执行的连带影响。

 

posted @ 2020-07-09 20:58  铺哩  阅读(563)  评论(0)    收藏  举报