Apache HTTPD 换行解析漏洞(CVE-2017-15715)&& Apache HTTPD 未知后缀解析漏洞

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

漏洞详情

Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0a将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。

复现

打开漏洞页面,发现一片空白,到docker里查看了一下,发现此页面并未写前端,所以就自己写html表单上传文件

可以看到这里获取文件名是需要单独post一个name的,因为如果通过$_FILES['file']['name']获取文件名的话,会把\x0a自动去除,所以$_FILES['file']['name']这种方式获取文件名就不会造成这个漏洞

<form action="" method="post" enctype="multipart/form-data">
	<input type="file" name="file">
	<input type="text" name="name">
	<input type="submit" value="submit">
</form>

burp抓包,在Hex选项卡.php后面0d的位置右键-Insert byte,添加一个0a,然后发包,成功上传

浏览器访问 /x.php%0A,正常解析

Apache HTTPD 未知后缀解析漏洞

漏洞详情

该环境版本:

  • PHP 7.x 最新版
  • Apache HTTPD 2.4.10 稳定版(来自debian源)

由此可知,该漏洞与Apache、php版本无关,属于用户配置不当造成的解析漏洞。

访问 /uploadfiles/apache.php.jpeg即可发现,phpinfo被执行了,该文件被解析为php脚本。我们可以通过上传文件名为xxx.php.jpg或xxx.php.jpeg的文件,利用Apache解析漏洞进行getshell。

那在当前环境下具体是什么配置不当呢
在ubuntu下,Apache的配置文件在etc/apache2/apache2.conf,查看一下这个文件,发现包含了conf-enabled下的所有.conf配置文件

conf-enabled下都是conf-available中文件的链接,所以真正的配置文件在conf-available

就是该目录下的docker-php.conf配置不当造成未知后缀解析漏洞

真正成因就在AddHandler application/x-httpd-php .php
是由于运维人员在配置服务器时,为了使Apache能够解析PHP,而自己添加了一个handler。这句话的作用也是为了让Apache把PHP文件交给php_moudle解析,但是它与sethandler的区别是它的后缀不是用正则去匹配。所以在文件名的任何位置匹配到php,他都会让php_module解析。类似1.php.xxx.yyy文件就会是这样的顺序,.yyy无法识别,向左,.xxx无法识别,向左,.php可以识别,就激活php处理器,执行PHP代码,解析漏洞就产生了

posted @ 2019-01-09 15:41  淚笑  阅读(...)  评论(...编辑  收藏