当前位置: 首页 > news >正文

CVE-2013-4547 Nginx文件名解析漏洞详解

今天继续给大家介绍渗透测试相关知识,本文主要内容是CVE-2013-4547 Nginx文件名解析漏洞详解。

免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!

一、漏洞简介

在文件上传之中间件解析漏洞详解一文中,我曾经简单介绍过Nginx的文件解析漏洞,该漏洞编号为CVE-2013-4547。该漏洞广泛存在于0.8.41-1.4.3以及1.5.0-1.5.7版本的Nginx中,该漏洞存在于Nginx于PHP的配置上,如果配置不当,很容易使得Nginx实现对%00等特殊字符解析出现问题,造成Nginx将特殊构造的URL交给PHP来进行处理,而Nginx则因为特殊字符的问题,无法接收含有特殊字符的URL或者是造成了在%00位置处的截断,从而造成了客户上传的文件被当作PHP代码来解析。

二、Vulhub漏洞环境启动

我们还是使用Vulhub靶场来搭建CVE-2013-4547漏洞的环境,Vulhub靶场下载及搭建过程和步骤可以参考以下文章:Vulhub漏洞靶场搭建和使用
在安装完Vulhub后,我们找到对应的漏洞所在的目录,执行命令:

docker-compose build

就可以下载并构建该漏洞的环境,该命令执行结果如下所示:
在这里插入图片描述
之后,我们执行命令:

docker-compose up -d

即可开启Docker虚拟机,运行包含该漏洞的环境,该命令执行结果如下所示:
在这里插入图片描述
之后,我们执行命令:

docker-compose config

可以查看当前虚拟环境的配置,该命令执行结果如下所示:
在这里插入图片描述
从以上可以看出,当前系统开启了8080端口,以对应虚拟环境中Nginx的80端口。

三、漏洞实战

我们访问目标系统的8080端口,结果如下所示:
在这里插入图片描述
我们选择一张含有木马的文件,点击上传,同时开启Burpsuit抓包,截获文件上传的数据包后,在文件名称的后面添加一个空格,这样,文件上传后也会出现一个空格。我们的环境是Linux系统,而对于Linux系统而言,其允许一个文件的结尾是空格,因此该文件中的空格会保存下来。修改数据包并上传后的结果如下所示:
在这里插入图片描述
之后,我们尝试构造一个异常的URL,即
192.168.168.13/uploadfiles/exp.jpg%20%00%2e.php
上述%20%00%2e,都要用URL进行解码,最终的数据包及响应如下所示:
在这里插入图片描述
从上图可以看出,我们访问该URL后,由于系统漏洞,会将该JPG文件当作PHP来进行处理,从而使得该文件中的PHP代码被解析。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

相关文章:

  • 信息收集之 操作系统识别
  • 程序设计——图书管理系统(附源代码)
  • 纯C实现的贪吃蛇(无EaxyX,详解)
  • 布局管理器案例集锦
  • STL 源码阅读笔记-类型萃取(Traits)
  • 【MySQL 第三天数据库表 增删改查】
  • 【白板推导系列笔记】降维-样本均值样本方差矩阵
  • nonebot2聊天机器人插件10:迁移至nonebot2.0.0b5
  • 高速度结构设计
  • Java(六)——常用类 --- 大数运算
  • 【对比Java学Kotlin】协程-异步流
  • 基于Vue+SSM+SpringCloudAlibaba的英雄管理系统
  • 基于注意力机制的循环神经网络对 金融时间序列的应用 学习记录
  • 女篮亚军,为啥男篮那么水?
  • 发动机曲轴及曲柄连杆机构受力有限元分析
  • 【node学习】协程
  • Android 控件背景颜色处理
  • centos安装java运行环境jdk+tomcat
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • DOM的那些事
  • es的写入过程
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • Laravel Mix运行时关于es2015报错解决方案
  • React 快速上手 - 07 前端路由 react-router
  • uva 10370 Above Average
  • 不上全站https的网站你们就等着被恶心死吧
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 基于webpack 的 vue 多页架构
  • 类orAPI - 收藏集 - 掘金
  • 巧用 TypeScript (一)
  • ​低代码平台的核心价值与优势
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (4)Elastix图像配准:3D图像
  • (分布式缓存)Redis分片集群
  • (论文阅读30/100)Convolutional Pose Machines
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)德国人的记事本
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET CF命令行调试器MDbg入门(一)
  • .NET delegate 委托 、 Event 事件
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .NET中winform传递参数至Url并获得返回值或文件
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @Bean, @Component, @Configuration简析
  • [ C++ ] STL---仿函数与priority_queue
  • [ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现
  • [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序...
  • [100天算法】-不同路径 III(day 73)
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]