首页 > 系统相关 >Nginx文件名逻辑漏洞复现CVE-2013-4547

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

时间:2023-08-17 11:58:15浏览次数:43  
标签:文件 php 0x20 2013 Nginx 4547 CVE fastcgi

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

前置知识

本次针对的是中间件Nginx

Nginx是什么?

Nginx(发音为“engine-x”)是一个高性能的开源Web服务器软件。它以异步事件驱动的方式处理客户端请求,具有占用资源
少、处理并发连接能力强和稳定性高等特点。Nginx还可以用作反向代理服务器、负载均衡器和HTTP缓存等。

与Aapache相比,Nginx有何优势?

架构设计:Nginx采用了基于事件驱动的架构,而Apache采用的是多线程或多进程的模型。这使得Nginx在处理大量并发连接时更高效,内存消耗更少。

内存使用:Nginx设计得非常轻量级,内存占用量较低。相比之下,Apache使用的线程模型会为每个连接创建一个线程或进程,导致内存消耗较高。

静态文件处理:Nginx在处理静态文件时效率更高,可以更快地提供静态内容。Apache在这方面的性能相对较差。

可扩展性:Nginx具有良好的可扩展性,可以处理数千个并发连接而不会影响性能。Apache则对并发连接的处理能力相对较弱

受影响版本

Nginx 0.8.41~1.4.3
Nginx 1.5.0~1.5.7

漏洞原理

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;
}

漏洞点在何处?

正常情况下(关闭pathinfo的情况下),只有.php后缀的文件才会被发送给fastcgi解析。而存在CVE-2013-4547的情况下,我们请求1.gif[0x20][0x00].php ,这个URI可以匹配上正则 .php$,可以进入这个Location块;但进入后,由于fastcgi在查找文件时被\0截断,Nginx却错误地认为请求的文件是1.gif[0x20],就设置其为SCRIPT_FILENAME的值发送给fastcgi。

漏洞利用

上传PHP文件,内容是一句话木马

修改Content-Type: image/jpg

修改文件名:

假设原来为ma.php
先改为:ma.jpg  .php   #中间有两个空格,即ma.jpg[0x20][0x20].php
改为:ma.jpg[0x20][0x00].php  #其中通过重发器的Hex功能,将原来hex数据中的对应的20改为00
随后发送,可发现绕过

以POST方法访问木马文件,hackbar的POST框中:s=phpinfo();
在BP中将文件名改为ma.jpg[0x20][0x00].php
发送,发现出现phpinfo

环境配置

find ./ -name *CVE-2013*
cd ./nginx/CVE-2013-4547
docker-compose up -d
docker ps

image-20230815072410550

image-20230815080730559

漏洞利用

image-20230815081928497

直接上传木马:被拦截

image-20230815083152515

增加空格:

image-20230815083412097

蚁剑连接:连接失败

image-20230815083937822

进入容器内查看情况:

docker exec -it 7ca93ca5343f /bin/bash 

image-20230815084347448

image-20230815084449567

可知几点:

1.靶机中没有www目录

2.index.php文件不在/var/www/html目录下,而在/usr/local/nginx/html目录下

3.木马文件eval_POST.php内容正常

尝试访问木马文件:

image-20230815085325164

出现No input file specified

参照:

https://zhuanlan.zhihu.com/p/610669649

https://www.cnblogs.com/llkbk/p/10007217.html

得知木马文件没有被解析,解决方法:

image-20230815085756148

为了不影响原靶机环境,这里就不修改了

上传gif文件:成功上传

image-20230815091059269

修改后缀,增加截断

访问上传文件 phpinfoa.gif[0x20][0x20].php时,将文件修改为phpinfoa.gif[0x20][0x00].php
[0x20]为空格,[0x00]为\0(起到截断作用)

image-20230815092120744

image-20230815100106665

效果:

image-20230815100351286

tips:文件名尽量短一点,以便在Hex中修改

访问:

image-20230815101151452

image-20230815101108783

成功利用

不过用蚁剑的话貌似连不上....

标签:文件,php,0x20,2013,Nginx,4547,CVE,fastcgi
From: https://www.cnblogs.com/hello-admin/p/17637210.html

相关文章

  • Apache HTTPd换行解析漏洞复现CVE-2017-15715
    ApacheHTTPd换行解析漏洞复现CVE-2017-15715漏洞利用漏洞利用条件Apache:2.4.0~2.4.29实际存到后端时的文件名可控漏洞利用方式bp中更改存放到后端的文件名假设原文件名为"evil.php"文件存放在网站根目录下evil.php的内容为:<?php@eval($_REQUEST[1]);?>操作:......
  • Nginx支持websocket的配置详解
     目录一、对wss与nginx代理wss的理解:二、Nginx支持websocket的配置一、对wss与nginx代理wss的理解:1、wss协议实际是websocket+SSL,就是在websocket协议上加入SSL层,类似https(http+SSL)。2、利用nginx代理wss【通讯原理及流程】客户端发起wss连接连到nginxnginx......
  • nginx把http迁移到https
    买的证书是阿里云提供的server{#HTTPS的默认访问端口443。#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。listen443ssl;#填写证书绑定的域名server_name<yourdomain>;#填写证书文件名称ssl_certificate......
  • Linux-Nginx-重新编译添加新模块---with-stream
    1.前期#查看上次编译的模块nginx-V2.源码包编译进入对应版本的源码包,之前已经删除可以重新下载wgethttps://nginx.org/download/nginx-1.22.1.tar.gz--with-stream#带上之前的参数./configure--prefix=/usr/local/environment/nginx1.22--with-http_stub_status......
  • nginx的一些安全设置--持续更新
    #nginx配置安全建议ssl_protocolsTLSv1.2TLSv1.3;ssl_ciphersECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA......
  • Docker 安装 Nginx 容器
    一.Nginx是什么?Nginx是十分轻量级的HTTP服务器。Nginx,它的发音为“engineX”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器。Nginx是由俄罗斯人IgorSysoev为俄罗斯访问量第二的Rambler.ru站点开发的,它已经在该站点运行超过两年半了。IgorSysoev......
  • 漏洞复现报告:CVE-2017-7103 JQuery框架XSS漏洞
    1.简介jQuery是一个快速、简洁的JavaScript框架,是一个丰富的JavaScript代码库。jQuery设计的目的是为了写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。据一项调查报告,在对4......
  • Nginx没有配置环境变量时怎么启动
    今天遇到在启动公司的nginx时,发现怎么做都是命令找不到后来发现nginx没有配置环境变量启动的时候 并不是切换到sbin目录下  直接输入nginx-sreload就可以的 而是需要我们在sbin目录下输入./nginx-sreload  前面的./是不可以少的  一个错误弄半天。。。。。。切记.......
  • 通过docker构建nginx标准镜像
    跟之前的文章类似,只是这里构建的是标准镜像。通过docker构建nginx alpine镜像公众号:毛毛虫的小小蜡笔 通过docker构建nginxalpine镜像第一步:创建Dockerfile文件// 到data目录cd /data// 创建docker目录mkdir docker// 创建Dockerfile文件touch Dockerf......
  • Nginx 代理 MySQL 连接,并限制可访问IP
    1.前言我们的生产环境基本上都部署在云服务器上,例如应用服务器、MySQL服务器等。如果MySQL服务器直接暴露在公网,就会存在很大的风险,为了保证数据安全,MySQL服务器的端口是不对外开放的。好巧不巧,线上业务遇到bug了,开发的小伙伴需要远程连接MySQL来查看数据,那应该怎么办呢?我们可以通......