【Web】vulhub-httpd apache解析漏洞复现(1)

目录

①CVE-2017-15715

②apache_parsing_vulnerability


①CVE-2017-15715

贴出源码:

复制代码
<?php
if(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);
} else {

?>

<!DOCTYPE html>
<html>
<head>
	<title>Upload</title>
</head>
<body>
<form method="POST" enctype="multipart/form-data">
	<p>
		<label>file:<input type="file" name="file"></label>
	</p>
	<p>
		<label>filename:<input type="text" name="name" value="evil.php"></label>
	</p>
	<input type="submit">
</form>
</body>
</html>

<?php
}
?>

意思就是上传文件的后缀不能是php,php3,php4,php5,phtml,pht

我们看一下.htaccess配置文件

复制代码
<FilesMatch \.php$> 
    SetHandler application/x­httpd­php 
</FilesMatch>

这段代码的作用是告诉 Apache 如何处理以 .php 结尾的请求,确保这些请求能够被正确地解释和执行 PHP 代码,并将结果返回给客户端。

这个我们很熟悉,在非多行模式下,`会忽略在句尾的%0a。`之前就利用%0a换行绕过了preg_match

举个例子

复制代码
if (preg_match('/^flag$/', $_GET['a']) && $_GET['a'] !== 'flag') {
    echo $flag;
}

只要传入?a=flag%0a即可

这里也是一样的道理

绕过过滤,写马成功

访问 ,RCE

②apache_parsing_vulnerability

贴出源码:

复制代码
<?php

if (!empty($_FILES)):

$ext = pathinfo($_FILES['file_upload']['name'], PATHINFO_EXTENSION);
if (!in_array($ext, ['gif', 'png', 'jpg', 'jpeg'])) {
    die('Unsupported filetype uploaded.');
}

$new_name = __DIR__ . '/uploadfiles/' . $_FILES['file_upload']['name'];
if(!move_uploaded_file($_FILES['file_upload']['tmp_name'], $new_name)){
    die('Error uploading file - check destination is writeable.');
}

die('File uploaded successfully: ' . $new_name);

else:
?>
<form method="post" enctype="multipart/form-data">
    File: <input type="file" name="file_upload">
    <input type="submit">
</form>
<?php
endif;

原理:

apache通过查看mime.types文件来查看是否能够识别上传文件的文件类型。在/etc/mime.types文件中记录了大量的文件后缀和mime类型。Apache文件解析漏洞涉及一个解析文件的特性:Apache默认一个文件可以有多个以点分隔的后缀,当右边的后缀无法识别(不在mime.types内),则继续向左识别。

如果在Apache 的 配置文件里有这样一行配置

复制代码
AddHandler application/x-httpd-php .php

AddHandler不是用正则去匹配后缀的。所以 ,在文件名的任何位置匹配到php后缀,它都会让php_module解析 。

在有多个后缀的情况下,只要一个文件含有`.php`后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞

实操:

改文件后缀,上传,写马成功

访问,RCE

相关推荐
沫璃染墨41 分钟前
《Linux工程实践篇(一):认识设计模式——从日志系统看策略模式》
linux·c++·安全·设计模式·策略模式
小蒋观天下1 小时前
端侧大模型在安防摄像头部署实操(上)|行业痛点、架构选型、落地思路解析
大数据·人工智能·安全·计算机视觉·ai大模型
林伽一1 小时前
能力趋同、账单分化,技术选型正在从榜单转向负载|2026年10月06日
人工智能·科技·安全·ai
HackTwoHub4 小时前
Clown SRC skill第二代2.x最新版企业安全研究 Skill|证据优先的 SRC 与白盒审计工作流正式更新
网络·安全·web安全·网络安全·系统安全·密码学·安全架构
白帽攻防录4 小时前
SRC 挖洞:Certighost AD CS 域控制器伪造深度复盘,CVE-2026-54121 一个普通域用户怎么拿走整个企业域
网络·安全·web安全·网络安全·域安全
Days20504 小时前
全网去水印1.0.0源码发布
php
hengdonghui5 小时前
Writeup 4 N1BOOK SQL注入-1
ctf·sql注入·union·字符型注入
刘胡子大叔5 小时前
repo 与 index:站点目录该怎么切
ubuntu·php
张彦峰ZYF6 小时前
从智能体到生产系统:企业 Agent 规模化的治理、记忆、知识与安全
人工智能·安全·架构·operatingsystem·agent platform·agentcontrol·agent mesh
2601_962885726 小时前
批量取数比循环单取快多少?用 AlphaFeed klines.batch给多股票取数提速
开发语言·php·batch