漏洞复现-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代码,解析漏洞就产生了。