漏洞复现-CVE-2017-15715-httpd解析漏洞

 
 
 
 
 
 
 
 

0x00实验环境

攻击机:win10

靶机:Ubuntu18 (docker搭建的vulhub靶场)

 

0x01实验目的

了解httpd解析漏洞,并能在之后的文件上传环境获取文件上传新姿势,Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞。

 

0x02实验步骤

打开vulhub目录,进入CVE-2017-15715目录后,使用以下命令将靶场环境启动起来:

docker-compose up --build 

进入靶场,访问页面后进行测试:

选择一个图片马,然后进行观察:

 

 

这里主要是由于换行引起的php解析问题,通过上传php文件,可以发现文件不在白名单范围内:

 

那我们可以使用在白名单内的文件进行尝试,同时以文档.txt的格式进行上传:

 

发现文件上传成功,点击访问页面:

 

此时,尝试上传恶意文件,依据httpd换行解析漏洞,我们使用在文件名后加入%0a进行换行的形式来使文件解析:

在70后的0d后插入0a以换行的方式提交报文值:

 

 

添加完成,此时修改一句话木马为

<?php phpinfo();?>

 

发包成功,此时再次访问页面,并记得使用%0A使文件解析:

 

成功上传恶意文件php并解析:

 

 0x03实验原理

 下文参考https://www.cnblogs.com/leixiao-/p/10223090.html

 

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

 

conf-enabled下都是conf-available中文件的链接,所以真正的配置文件在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 @ 2020-07-09 19:43  铺哩  阅读(2749)  评论(0编辑  收藏  举报