Nginx漏洞—解析漏洞、配置不当和(CVE-2013-4547)

CVE-2013-4547是Nginx目录跨越及代码执行漏洞,也被成为文件名逻辑漏洞。涉及版本:Nginx 0.8.41~1.4.3 / 1.5.0<=1.5.7漏洞原理:这个漏洞虽然也被称为代码执行漏洞,但跟代码执行没有太大关系,主要是由于非法的字符空格和截止符(\0)导致Nginx解析URI时的有限状态机混乱,攻击者通过一个非编码的空格绕过后缀名限制,导致出现权限绕过,代码执行等影...
摘要由CSDN通过智能技术生成

Nginx是一款轻量级的web服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。

一、目录跨越及代码执行漏洞(CVE-2013-4547)

CVE-2013-4547则是Nginx目录跨越及代码执行漏洞,也被称为是文件名逻辑漏洞。

涉及版本:Nginx 0.8.41~1.4.3 / 1.5.0<=1.5.7

漏洞原理

这个漏洞虽然也被称为代码执行漏洞,但跟代码执行没有太大关系,主要是由于非法的字符空格和截止符(\0)导致Nginx解析URI时的有限状态机混乱,攻击者通过一个非编码的空格绕过后缀名限制,导致出现权限绕过,代码执行等影响。
payload如下:

http://127.0.0.1/test.jpg \0.php

在存在CVE-2013-4547的状态下,我们构造payload如上,请求的是test.jpg \0.php,在Nginx解析URI时,由于文件名后面的字符串为.php,而.会被当做URI扩展名的分隔符,所以Nginx认为是此次处理是.php,就会通过配置传给fastcgi处理,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;
}

fastcgi在查找文件“test.jpg \0.php”时被\0截断,所以找到的文件为“test.jpg ”文件,将其当做php文件进行解析,造成了解析漏洞。

漏洞复现

测试环境:vulhub靶场(具体搭建请看上一篇文章)

启动漏洞环境

docker-compose up -d

访问环境

http://you-ip:8080/

开始测试:
上传页面如下:
在这里插入图片描述
由于该上传环境环境是黑名单验证,我们无法上传php后缀的文件,需要利用CVE-2013-4547。所以首先创建一个含有php代码的jpg文件,php代码为:

<?php
phpinfo();
?>

将文件名改为“test2.jpg ”并上传!(注意jpg后面的空格
界面提示上传成功。
在这里插入图片描述
尝试去该路径下访问“test2.jpg ”文件,界面报404错误。
在这里插入图片描述
上传的文件找不到,是因为浏览器自动将空格编码为%20,服务器中找不到名为“test2.jpg%20”的文件。
接下来,我们想要上传的jpg文件作为php解析,就需要利用未编码的空格和截止符(\0)进行构造,构造请求如下:

http://ip:8080/uploadfiles/test2.jpgAAAphp

发送请求并使用burpsuite抓包。使用burpsuite将AAA分别更改为20(空格)、00(截止符\0)和2e(分隔符号.)。
在这里插入图片描述
这样我们发送的请求就变为:

http://you-ip:8080/uploadfiles/test2.jpg[0x20][0x00].php

Nginx解析后,将“test2.jpg ”文件当做php文件解析。
在这里插入图片描述

二、Nginx配置不当漏洞(CRLF和目录穿越)

1、CRLF注入漏洞
漏洞原理

CRLF是回车换行(\r\n)的简称,其十六进制的编码分别为0x0b和0x0a。在http协议中,http消息头以明文的字符串格式传送,以冒号分隔的键/值对,如:Accept-Charset: utf-8,每一个消息头以回车符(CR)和换行符(LF)结尾。而在http消息头结束后,会使用两个连续的CR-LF来进行标识,用来分隔http 消息头 和 http 消息体(请求或响应的内容)。

Nginx中错误的配置文件示例(原本的目的是为了让http的请求跳转到https上):

location 
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值