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

Apache HTTPD 换行解析漏洞(CVE-2017-15715)

漏洞简介

pache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。

漏洞环境

vulhub/httpd/CVE-2017-15715

Vulhub - Docker-Compose file for vulnerability environment

漏洞复现

进入vulhub项目对应的目录:cd vulhub-master/httpd/CVE-2017-15715

编译容器:“docker-compose build”

启动Docker容器,输入命令:“docker-compose up -d”。

查看容器状态,输入命令:“docker ps”并查看对应容器ID。

进入容器,输入命令:“docker exec -it 容器id /bin/bash”。

该漏洞属于用户配置不当所产生的,看一下配置文件信息,输入命令“cat /etc/apache2/conf-available/docker-php.conf”,如图所示。

前三行的内容意思是将所有以“.php”为后缀的文件内容当作PHP代码进行解析,但是却使用了“$”进行文件匹配,这就导致了漏洞的产生。这个符号在正则表达式中是匹配字符串中结尾的位置,若存在换行则匹配换行符为结尾,也就是说可以利用换行符使“$”与其匹配从而绕过黑名单机制实现文件上传。

如果在黑名单的后缀不让上传php jsp等,就可以通过php%0a绕过黑名单,但是需要保证这个后缀是能够正常解析的脚本代码。如果是白名单可能不行(在白名单里面才可以上传jpj,png,gif 等),但是如果没有考虑以最后一个点为后缀,通过1.jpg.php%0a的形式也可能能够绕过。

查看index.php内容,代码如下:

<?phpif(isset($_FILES['file'])) {$name = basename($_POST['name']);$ext = pathinfo($name,PATHINFO_EXTENSION);if(in_array($ext, ['php', 'php3', 'php4', 'php5', 'phtml', 'pht'])) {exit('bad file');}move_uploaded_file($_FILES['file']['tmp_name'], './' . $name);}

可以看到除了上传文件外,还要以POST请求方式传入参数name,其值作为文件上传后最后的名字,同时设置了黑名单过滤name值传递的带有黑名单信息的后缀。如果通过 $FILES["file"]获 取文件名的话,会把\x0a自动去除,所以 $FILES["file"]这种方式获取文件名也不会造成这个漏洞.

启动后Apache运行在http://your-ip:8080

创建一个文件,写入<?php phpinfo();?> 

上传文件可以看到是上传失败

通过burp抓包把在实际上传文件名后加0a,也就是filename的值加上0a


我用的burp是2021版本,没有hex选项,可以通过选择单个字符修改

老版本可以通过hex修改,修改完,文件正常上传。

访问http://your-ip:8080/test.php%0A,可以看到PHP代码已经被解析,如图所示。

相关文章:

Apache HTTPD 换行解析漏洞(CVE-2017-15715)

漏洞简介 pache HTTPD是一款HTTP服务器&#xff0c;它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞&#xff0c;在解析PHP时&#xff0c;1.php\x0A将被按照PHP后缀进行解析&#xff0c;导致绕过一些服务器的安全策略。 漏洞环境 vulhub/httpd/CVE-2…...

Excel重新踩坑5:二级下拉列表制作;★数据透视表;

0、在excel中函数公式不仅可以写在单元格里面&#xff0c;还可以写在公式里面。 1、二级下拉列表制作&#xff1a; 2、数据透视表&#xff1a; 概念&#xff1a;通过拖拉就能实现复杂函数才能实现的数据统计问题。 概览&#xff1a;在插入选项中有个数据透视表&#xff0c;数…...

力扣--35.搜索插入位置

题目 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 示例 …...

C# 设计模式(行为型模式):模板方法模式

C# 设计模式&#xff08;行为型模式&#xff09;&#xff1a;模板方法模式 在开发过程中&#xff0c;我们经常会遇到一类问题&#xff1a;一些操作的整体步骤是固定的&#xff0c;但某些具体步骤的实现会因为场景不同而有所变化。模板方法模式&#xff08;Template Method Pat…...

Leetcode打卡:设计一个ATM机器

执行结果&#xff1a;通过 题目 2241 设计一个ATM机器 一个 ATM 机器&#xff0c;存有 5 种面值的钞票&#xff1a;20 &#xff0c;50 &#xff0c;100 &#xff0c;200 和 500 美元。初始时&#xff0c;ATM 机是空的。用户可以用它存或者取任意数目的钱。 取款时&#xff0c…...

【TCP】SYN、ACK、FIN、RST、PSH、URG的全称

在 TCP 协议中&#xff0c;SYN、ACK、FIN、RST、PSH 和 URG 都是控制标志位&#xff08;Flags&#xff09;&#xff0c;每个标志位对应不同的功能。它们的全称如下&#xff1a; URG&#xff1a;(URGent)紧急 ACK&#xff1a;(ACKnowledgment)确认 PSH&#xff1a;(PuSH)推送 RS…...

【OceanBase】使用 Superset 连接 OceanBase 数据库并进行数据可视化分析

文章目录 前言一、前提条件二、操作步骤2.1 准备云主机实例2.2 安装docker-compose2.3 使用docker-compose安装Superset2.3.1 克隆 Superset 的 GitHub 存储库2.3.2 通过 Docker Compose 启动 Superset 2.4 开通 OB Cloud 云数据库2.5 获取连接串2.6 使用 Superset 连接 OceanB…...

【通识安全】应急救护常识23则

一、异物入眼 任何细小的物体或液体&#xff0c;哪怕是一粒沙子或是一滴洗涤剂进入眼中&#xff0c;都会引起眼部疼痛&#xff0c;甚至损伤眼角膜。 急救办法&#xff1a;首先是用力且频繁地眨眼&#xff0c;用泪水将异物冲刷出去。如果不奏效&#xff0c;就将眼皮捏起&#…...

C语言:cJSON将struct结构体与JSON互相转换

文章目录 struct 转 jsonjson 转 struct 文档&#xff1a; https://github.com/DaveGamble/cJSON 项目结构 . ├── libs │ ├── cJSON.c │ └── cJSON.h └── main.c示例 struct 转 json #include "libs/cJSON.h" #include <stdio.h>// defi…...

在Linux中,如何查看和修改网络接口配置?

在Linux中&#xff0c;查看和修改网络接口配置主要依赖于几个命令行工具。这里详细介绍两种传统的命令行方式以及一些图形化工具&#xff08;前提&#xff1a;系统支持&#xff09;&#xff1a; 一、临时性修改 1. 使用ifconfig命令&#xff08;部分系统已被弃用&#xff09;…...

使用深度学习来实现图像超分辨率 综述!

今天给大家介绍一篇图像超分辨率邻域的综述&#xff0c;这篇综述总结了图像超分辨率领域的几方面&#xff1a;problem settings、数据集、performance metrics、SR方法、特定领域应用以结构组件形式&#xff0c;同时&#xff0c;总结超分方法的优点与限制。讨论了存在的问题和挑…...

基于深度学习的视觉检测小项目(六) 项目的信号和变量的规划

• 关于前后端分离 当前流行的一种常见的前后端分离模式是vueflask&#xff0c;vueflask模式的前端和后端之间进行数据的传递通常是借助 API&#xff08;应用程序编程接口&#xff09;来完成的。vue通过调用后端提供的 API 来获取或提交数据。例如&#xff0c;前端可能通过发送…...

【Android项目学习】3. MVVMHabit

项目链接 文章目录 一. 项目结构1. 项目整体划分2. 模块细分 二. Android知识点学习1. registerActivityLifecycleCallbacks方法2. 一. 项目结构 1. 项目整体划分 MVVMHabit是以谷歌DataBindingLiveDataViewModel框架为基础&#xff0c;整合OkhttpRxJavaRetrofitGlide等流行…...

在Linux中,如何配置负载均衡器以分配网络流量?

NGINX NGINX是一款高性能的HTTP和反向代理服务器&#xff0c;也常用作负载均衡器。它支持多种负载均衡算法&#xff0c;如轮询、加权轮询、IP哈希等。 配置步骤&#xff1a; 安装NGINX&#xff1a;根据您的Linux发行版&#xff0c;使用相应的包管理器安装NGINX。配置负载均衡…...

手机投屏到电视的3种选择:无线本地投屏,无线远程投屏,AirPlay投屏

现在大部分手机投屏都要求连接相同的WiFi&#xff0c;这就意味着手机投屏到电视必须是近距离投屏&#xff0c;稍微远一点就会脱离WiFi连接范围&#xff0c;投屏失败。 如果想将手机远程投屏到安卓电视&#xff0c;要怎样做&#xff1f; 第一步&#xff0c;在手机和安卓电视都安…...

MySQL关联关系理论与实践

MySQL 是一种关系型数据库管理系统,以其高性能、灵活性和易用性在开发者中广受欢迎。在 MySQL 中,数据存储以表格形式存在,表与表之间的关联关系构成了关系型数据库的核心。本篇文章将介绍 MySQL 关联关系的理论基础和常见实践,包括表的类型、主外键的使用,以及连接查询的…...

多模态论文笔记——U-ViT(国内版DiT)

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍U-ViT的模型架构和实验细节&#xff0c;虽然没有后续的DiT在AIGC领域火爆&#xff0c;但为后来的研究奠定了基础&#xff0c;但其开创性的探索值得学习…...

在 IntelliJ IDEA 中开发 GPT 自动补全插件

背景与目标 随着 AI 的发展&#xff0c;GitHub Copilot 等智能代码补全工具在开发者中获得了广泛的应用&#xff0c;极大地提高了编程效率。本篇文章将教你如何开发一个 IntelliJ IDEA 插件&#xff0c;使用 OpenAI 的 GPT API 来实现类似 Copilot 的代码自动补全功能。通过这…...

7. C语言 运算符详解

本章目录: 前言C语言运算符的分类1. 算术运算符2. 关系运算符3. 逻辑运算符4. 位运算符5. 赋值运算符6. 杂项运算符 运算符优先级 前言 在C语言中&#xff0c;运算符是程序中执行各种操作的核心工具&#xff0c;涉及算术运算、逻辑判断、位操作等多个方面。掌握C语言中的各种运…...

Java四大常用JSON解析性能对比:Hutool、Fastjson2、Gson与Jackson测试

1. 引言 JSON 是现代软件开发中常用的数据交换格式&#xff0c;尤其在微服务和前后端分离的架构中更是必不可少。 本文将对 Java 中四大主流 JSON 解析库——Hutool、Fastjson2、Gson 和 Jackson 进行性能测试和对比分析&#xff0c;通过实测 20 万条数据解析&#xff0c;揭示…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西&#xff0c;但是如果把三者放在一起&#xff0c;它们之间到底什么关系&#xff1f;又有什么联系呢&#xff1f;我不是很明白&#xff01;&#xff01;&#xff01; 就比如说&#xff1a; 沙箱&#…...