当前位置: 首页 > 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;揭示…...

Kampala 来袭:可逆向工程任何网络流程,Mac 版已上线,Windows 版即将推出!

Zatanna 推出 Kampala&#xff0c;开启网络逆向工程新时代Zatanna 打造的 Kampala 是一款强大的工具&#xff0c;能让用户立即对包括网站、移动应用和桌面应用在内的任何事物进行逆向工程。目前&#xff0c;适用于 Mac 的版本已可下载&#xff0c;而 Windows 支持也即将推出&am…...

SAP ECC6 EC-CS 合并报表操作手册(完整版)

SAP ECC6 EC-CS 合并报表操作手册&#xff08;完整版&#xff09;适用版本&#xff1a;ECC6.0&#xff08;含 EHP&#xff09;模块&#xff1a;EC-CS&#xff08;Enterprise Controlling – Consolidation&#xff09;核心用途&#xff1a;法定合并、管理合并、内部交易抵销、股…...

从Simulink仿真到DSP28335真机部署:PID闭环控制快速移植指南

从Simulink仿真到DSP28335真机部署&#xff1a;PID闭环控制快速移植指南 在控制算法开发领域&#xff0c;Simulink仿真与嵌入式硬件实现之间往往存在一道难以逾越的鸿沟。许多工程师能够轻松设计出仿真效果优异的PID控制器&#xff0c;却在将其部署到DSP28335等嵌入式平台时遭遇…...

C语言的发展及其版本

如果您是一名入门学者&#xff0c;或者您还不理解什么是编程语言&#xff0c;请查看&#xff1a;什么是编程语言。 如果您之前未接触任何编程语言&#xff0c;或者您不理解为什么学习C语言&#xff0c;请查看&#xff1a;为什么C语言是首选。 C语言于1972年11月问世&#xff0c…...

终极指南:使用Jsxer快速解密Adobe JSXBIN二进制脚本文件

终极指南&#xff1a;使用Jsxer快速解密Adobe JSXBIN二进制脚本文件 【免费下载链接】jsxer A fast and accurate JSXBIN decompiler. 项目地址: https://gitcode.com/gh_mirrors/js/jsxer 你是否曾经遇到过以JSXBIN开头的Adobe ExtendScript二进制文件&#xff1f;这些…...

从零开始:用DSP28335手把手实现BLDC六步换相(附完整代码与避坑指南)

从零开始&#xff1a;用DSP28335手把手实现BLDC六步换相&#xff08;附完整代码与避坑指南&#xff09; 1. 硬件准备与开发环境搭建 1.1 所需硬件清单 DSP28335开发板&#xff1a;推荐使用TI官方评估板或兼容开发板BLDC电机&#xff1a;建议选择24V/500W以内带霍尔传感器的电机…...

别再写if-elseif-else了!Matlab里这5个坑,新手程序员踩过几个?

别再写if-elseif-else了&#xff01;Matlab里这5个坑&#xff0c;新手程序员踩过几个&#xff1f; 刚接触Matlab时&#xff0c;我总以为条件语句不过是if-else的简单组合——直到某次调试让我对着屏幕怀疑人生。为什么明明逻辑正确的代码就是跑不出预期结果&#xff1f;为什么看…...

从Kaggle数据集到业务策略:如何用Python分析电信客户流失并制定精准留存方案

从Kaggle数据集到业务策略&#xff1a;如何用Python分析电信客户流失并制定精准留存方案 电信行业正面临前所未有的客户流失挑战。根据行业研究&#xff0c;获取一个新客户的成本是保留现有客户的5-25倍。当一位业务负责人拿到客户流失分析报告时&#xff0c;他们最关心的往往不…...

大厂面试:TCP四次挥手,可以变成三次吗?

上周有位读者面美团时&#xff0c;被问到&#xff1a;TCP 四次挥手中&#xff0c;能不能把第二次的 ACK 报文&#xff0c; 放到第三次 FIN 报文一起发送&#xff1f;虽然我们在学习 TCP 挥手时&#xff0c;学到的是需要四次来完成 TCP 挥手&#xff0c;但是在一些情况下&#x…...

大厂 Multi-Agent 落地经验:字节跳动智能创作平台的架构拆解

大厂 Multi-Agent 落地经验:字节跳动智能创作平台的架构拆解 第一部分:引言与基础 1.1 引人注目的标题 从零到一理解工业级 Multi-Agent 系统:字节跳动智能创作平台架构深度拆解 副标题: 揭秘大厂如何通过多智能体协作实现高效、高质量的 AIGC 内容生产 1.2 摘要/引言…...