Apache漏洞
概述
Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。
httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。
apache_parsing_vulnerability
漏洞描述
apache多后缀解析漏洞
apahe解析文件时候有一特性,Apache默认一个文件可以有多个以点分割的后缀,apache会从最右边开始识别其后缀名,如遇无法识别的后缀名则依次往左进行识别。
如果运维人员给.php后缀的文件添加了处理程序 AddHandler application/x-httpd-php .php
那么在有多个后缀的情况下,只要文件含有.php后缀那么该文件就会被识别为PHP文件进行解析。
漏洞范围
该漏洞和apache版本和php版本无关,属于用户配置不当造成的解析漏洞。
修复建议
- 通过正则方式来对其进行限制;在配置文件中添加如 匹配样式为 .php. 的文件并拒绝访问
漏洞复现
1、首先准备一个shell.php木马
2、直接上传shell.php,显示类型不正确
3、在后缀名.php后面加上.jpg,再次进行上传
上传成功
4、对文件进行访问传参
CVE-2017-15715
漏洞描述
换行解析漏洞
apache 在修复第一个后缀名解析漏洞时,用正则来匹配后缀。在解析 php 时 xxx.php\x0A 将被按照 php 后缀进行解析,导致绕过一些服务器的安全策略。
漏洞范围
2.4.0~2.4.29 版本中存在一个解析漏洞
漏洞原理
解析漏洞的根本原因就是这个 $ ,正则表达式中,我们都知道 $ 用来匹配字符串结尾位置.
$符号: 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。 要匹配 $ 字符本身,请使用 \$。
如果设置MULTILINE标示,就当作换符处理,如果不设置就当作一行文本处理
打开httpd-php.conf,通过正则匹配到$结尾,刚刚那个只要有.php就解析
漏洞复现
1、查看index.php的后端源码
采用黑名单的形式,如果文件后缀名不在名单内即可上传,所以 a.php\0A不在黑名单列表中,可以上传。
但是0A是换行符,所以apache会直接忽略,将其当成php来执行。
2、上传shell.php进行抓包
3、通过16进制在abc.php换为一个oa换行符
0d换为0a
4、放包后页面显示空白
5、访问abc.php%oa并进行传参
本文系作者 @小白学安全 原创发布在 xbxaq.com 站点,未经许可,禁止转载!
评论