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

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...