Apache 中间件漏洞(换行解析)详解

介绍

Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。
简而言之,Apache服务器不仅简单好用,还能支持HTML、PHP、Perl、Python等基础语言。

目录介绍

bin-------存放常用的命令工具,例如httpd
cgi-bin---存放Linux下常用的命令,例如xxx.sh
conf------Linux的配置相关文件,例如httpd.conf
error-----错误记录
htdocs----放网站源码
icons-----网站图标
logs------日志
manual----手册
modules---扩展模块

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

影响版本:Apache 2.4.0~2.4.29

影响说明:绕过服务器策略,上传webshell

环境说明:PHP5.5.38 、 Apache2.4.10

环境搭建

东塔靶场

Apache 中间件漏洞(换行解析)详解_第1张图片

漏洞原理

Apache文件解析漏洞与用户的配置有密切关系,严格来说属于用户的配置问题。Apache文件解析漏洞涉及到一个解析文件的特性。Apache默认一个文件可以有多个以点分隔的后缀,当右边的后缀无法识别,则继续向左识别,发现后缀是php,交给php处理这个文件。
为什么叫换行解析漏洞?是因为在上传时在文件名后缀后面加了0x0a(换行)
不过为什么要加0x0a呢?看下源码


<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="shell.php">label>
	p>
	<input type="submit">
form>

后台通过黑名单方式过滤了php等后缀的文件。php文件在有定义,以.php结尾的文件都算php文件,在正则中表示匹配输入字符串的结尾位置。如果设置了RegExp对象的Multiline属性,则也匹配 ‘\n’ 或 ‘\r’。
恰好,我们在文件末尾加了0x0a(\n),所以被匹配成功了。

漏洞复现

上传一个webshell一句话木马文件,shell.php

 @eval($_POST[cmd]);?>

此处文件名处加空格
Apache 中间件漏洞(换行解析)详解_第2张图片
Hex改空格(20)处为0a
Apache 中间件漏洞(换行解析)详解_第3张图片POST中密码即可成功传值
Apache 中间件漏洞(换行解析)详解_第4张图片通过蚁剑连接
Apache 中间件漏洞(换行解析)详解_第5张图片

修复建议

在httpd.conf文件中找到

Options + Indexes + FollowSymLinks + ExecCGI

修改成

Options -Indexes + FollowSymLinks + ExecCGI

保存(把+修改为-)

你可能感兴趣的:(CVE,安全漏洞,apache,中间件)