【Vulhub靶场】Nginx 漏洞复现

Nginx 漏洞复现

  • 一、Nginx 文件名逻辑漏洞(CVE-2013-4547)
    • 1、影响版本
    • 2、漏洞原理
    • 3、漏洞复现
  • 二、Nginx 解析漏洞
    • 1、版本信息:
    • 2、漏洞详情
    • 3、漏洞复现

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

1、影响版本

Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7

2、漏洞原理

这个漏洞其实和代码执行没有太大关系,其主要原因是错误地解析了请求的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;
}

正常情况下(关闭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解析之。

3、漏洞复现

开启vulhub靶机,启动环境

root@Fly:~/vulhub/nginx/CVE-2013-4547# docker-compose build
root@Fly:~/vulhub/nginx/CVE-2013-4547# docker-compose up -d

在这里插入图片描述
访问靶机的IP地址,如下图:

在这里插入图片描述
这个环境是黑名单验证,我们无法上传php后缀的文件,需要利用CVE-2013-4547。我们上传一个“1.gif ”,注意后面的空格:
在这里插入图片描述
上传成功
在这里插入图片描述
访问http://your-ip:8080/uploadfiles/1.gif[0x20][0x00].php,再次抓包修改,即可发现PHP已被解析:
在这里插入图片描述

二、Nginx 解析漏洞

Nginx解析漏洞复现

1、版本信息:

Nginx 1.x 最新版
PHP 7.x最新版

2、漏洞详情

该漏洞与Nginx、php版本无关,属于用户配置不当造成的解析漏洞。

3、漏洞复现

开启vulhub靶机,启动环境

root@Fly:~/vulhub/nginx/nginx_parsing_vulnerability# docker-compose up -d

访问http://192.168.111.146/uploadfiles/nginx.png可正常显示
在这里插入图片描述
增加/.php后缀,被解析成PHP文件:http://192.168.111.146/uploadfiles/nginx.png/.php
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/5937.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网际协议IP

一、概念导入 网际协议IP是TCP/IP体系中最重要的协议之一。与IP协议配套使用的还有三个协议: 地址解析协议ARP网际控制报文协议ICMP网际组管理协议IGMP 二、虚拟互联网络 (1)定义 现实世界中,不同网络的主机进行通信&#xf…

Centos7.9系统MySQL5.7.32升级为5.7.44(生成环境操作)

1.背景 由于客户进行等保漏扫和渗透,生成环境mysql数据库被扫描出了 高危漏洞。 如图:部分漏洞 查看漏洞详细信息,建议升级到指定版本解决: 说明: 本文仅适合使用当前数据库为 RPM 安装方式 2.升级前准备 查看环…

nginx的前世今生(三)

高手对决:武林盟主之路 1.不败之地,高可用江湖 技术角度讲,高可用(High Availability, HA)是指系统或服务能够在预定的时间内,以极高的概率持续提供服务的能力。具体来说,这通常涉及到系统的架…

【Java 算法实现】链表反转(迭代法)

【Java 算法实现】链表反转(迭代法) 这个反转方法采用的是迭代方式,它逐个将原链表的节点移动到新链表的头部 public class LinkedList {// 定义链表节点static class Node {int value;Node next;Node(int value) {this.value value;this.…

32.Docker认识

Docker介绍 Docker是一个快速交付应用,运行应用的技术。 1.可以将程序、依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统。 2.运行时利用沙箱机制行程隔离容器,各个应用互不干扰。 3.启动、移除都可以通过一行命令完成&am…

I2C接口18路LED呼吸灯驱动IS31FL3218互相替代SN3218替换HTR3218

I2C接口18路LED呼吸灯控制电路IC 该型号IC为QFN24接口,属于小众产品,IS31FL3218、SN3218、HTR3218S管脚兼容,需要注意的是HTR3218管脚与其他型号不兼容。 I2C接口可实现多个LED灯的呼吸灯控制,可实现单色控制18个LED灯&#xff0…

Kubernetes - Dashboard 配置用户名密码方式登录

Kubernetes - Dashboard 配置用户名密码方式登录 前言: 为了 K8s 集群安全,默认情况下 Dashboard 以 Token的形式登录的,那如果我们想以用户名/密码的方式登录该怎么操作呢?其实只需要我们创建用户并进行 ClusterRoleBinding绑定即…

问题记录-全局配置了跨域但是后端下载仍然跨域-(Java, SpirngBoot)

问题背景 前端请求后端下载文件,其它接口都不会跨域,唯独这个下载跨域了。上代码: ApiOperation(value "下载模板文件", notes "importArchive") GetMapping("v1/downLoadTemplate/{templateName}") publi…

Educational Codeforces Round 165 (Rated for Div. 2 ABCDE 题)视频讲解

A. Two Friends Problem Statement Monocarp wants to throw a party. He has n n n friends, and he wants to have at least 2 2 2 of them at his party. The i i i-th friend’s best friend is p i p_i pi​. All p i p_i pi​ are distinct, and for every i ∈…

并发编程之线程池的设计和原理

一、线程池 提前创建一系列的线程,保存在这个线程池中,有任务要执行的时候,从线程池中取出线程来执行。没有任务的时候,线程池放回去。 二、为什么要使用线程池 线程使用上的问题: 线程的频繁创建 和 销毁 线程的数量过多&…

政安晨:【Keras机器学习示例演绎】(二十六)—— 图像相似性搜索的度量学习

目录 概述 设置 数据集 嵌入模型 测试 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 本文…

基于Pytorch深度学习——多层感知机

本文章来源于对李沐动手深度学习代码以及原理的理解,并且由于李沐老师的代码能力很强,以及视频中讲解代码的部分较少,所以这里将代码进行尽量逐行详细解释 并且由于pytorch的语法有些小伙伴可能并不熟悉,所以我们会采用逐行解释小…

Word域代码学习(简单使用)-【SEQ】

Word域代码学习(简单使用)-【SEQ】 快捷键 序号快捷键操作1 Ctrl F9 插入域代码花括号2 F9 显示域代码结果3 Shift F9 切换为域代码4 Windows Alt F9 切换全部域代码 域代码说明 域代码不区分大小写在word中,依次选择插入➡文档部件➡域即可选择插入…

Go 泛型函数中的 ~ 符号 的意义 -- 用于指定类型的底层类型

本文通过 slices.Clone 泛型函数介绍了 Go 是如何使用类型推断完成参数类型的解构。简单来说,如果第一个类型参数是一个复合类型,则可以通过第二、第三或更多的类型参数约束复杂类型中的类型参数,而类型推断则可以通过第一个参数推断出后续类…

Linux 学习 --- 编辑 vi 命令

1、vi 基本概念(了解) 基本上 vi 可以分为三种状态,分别是命令模式 (command mode)、插入模式 (Insert mode) 和底行模式 (last line mode),各模式的功能区分如下: 命令行模式 command mode)  控制屏幕光标的移动&a…

PotatoPie 4.0 实验教程(31) —— FPGA实现摄像头图像高斯滤波

什么是高斯滤波 高斯滤波是一种常见的图像处理技术,用于去除图像中的噪声和平滑图像。它的原理基于统计学中的高斯分布(也称为正态分布)。 在高斯滤波中,一个二维的高斯核函数被用来对图像中的每个像素进行加权平均。这个高斯核…

jvm 马士兵 01

01.JVM是什么 JVM是一个跨平台的标准 JVM只识别class文件,符合JVM规范的class文件都可以被识别

Java中异常的处理方式之二:throws详解

在Java中,除了使用try-catch语句块来直接处理异常外,还有另一种处理异常的方式:通过在方法签名中使用throws关键字声明该方法可能抛出的异常,从而将异常的处理责任传递给调用该方法的代码。这种方式对于某些情况下无法直接处理异常…

AI智能名片商城小程序:引领企业迈向第三增长极

随着数字化浪潮的席卷,私域流量的重要性逐渐凸显,为企业增长提供了全新的动力。在这一背景下,AI智能名片商城系统崭露头角,以其独特的优势,引领企业迈向第三增长极。 私域流量的兴起,为企业打开了一扇新的销…

【codeforces】Immobile Knight

Immobile Knight 我感觉自己不太适合写codeforces,简单题也比较考验思维,当时这题看了半天以为是搜索,写了20分钟暴力交了,还好对的,20个人19个人5分钟不到速通第一题,唯留我一人在第一题凌乱。下来看看这…