• Nginx 文件名逻辑漏洞(CVE-2013-4547)


    Nginx 文件名逻辑漏洞(CVE-2013-4547)

    漏洞描述

    非法字符空格和截止符(\0)会导致Nginx解析URI时的有限状态机混乱,此漏洞可导致目录跨越及代码执行

    影响版本

    Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7

    漏洞原理

    这个漏洞其实和代码执行没有太大关系,其主要原因是错误地解析了请求的URI,错误地获取到用户请求的文件名,导致出现权限绕过、代码执行的连带影响。

    举个例子,比如,Nginx匹配到.php结尾的请求,就发送给fastcgi进行解析,常见的写法如下:

    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    正常情况下(关闭pathinfo的情况下),只有.php后缀的文件才会被发送给fastcgi解析。

    而存在CVE-2013-4547的情况下,我们请求1.gif[0x20][0x00].php,这个URI可以匹配上正则\.php$,可以进入这个Location块;但进入后,Nginx却错误地认为请求的文件是1.gif[0x20],就设置其为SCRIPT_FILENAME的值发送给fastcgi。

    fastcgi根据SCRIPT_FILENAME的值进行解析,最后造成了解析漏洞。

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

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

    location /admin/ {
        allow 127.0.0.1;
        deny all;
    }
    
    • 1
    • 2
    • 3
    • 4

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

    漏洞复现

    环境搭建
    访问页面:
    http://192.168.149.212:8080/
    
    • 1
    • 2

    在这里插入图片描述

    漏洞复现
    上传一个php文件,修改后缀名为
    
    
    • 1
    • 2

    在这里插入图片描述

    抓包, 将文件重命名为1.gif 截断符.php
    
    • 1

    在这里插入图片描述

    这里先用aa进行占位,之后通过16进制进行修改,将这里的aa修改为空格(20)和截断符(00)
    
    • 1

    在这里插入图片描述

    在这里插入图片描述

    重新发送包,能够正常上传
    
    • 1

    在这里插入图片描述

    在这里插入图片描述

    获取get包,同样的操作,进行修改
    
    • 1

    在这里插入图片描述

    发送包,获取结果
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    卡尔曼家族从零解剖-(05)卡尔曼滤波→公式推导,应用通俗讲解,c++代码示例
    Git精讲
    查找-二叉排序树
    阿里巴巴的“双11”高并发秒杀终极版教程(Java语言设计)
    UG7.5三四五轴编程+后处理讲解视频教程
    Au 入门系列之九:多轨混音
    计网第五章(运输层)(六)(TCP可靠传输的实现)
    stylegan3相关代码报错解决
    Flutter - 波浪动画和lottie动画的使用
    flutter开发实战-应用更新apk下载、安装apk、启动应用实现
  • 原文地址:https://blog.csdn.net/cgjil/article/details/132791062