Apache解析漏洞(换行解析+多后缀解析)复现
停了好长时间没做一些安全相关的东西了,今天难得上实验课的时候有时间,搞两个漏洞复现把。
和往常一样,使用vulhub搭建环境。
Apache两个解析漏洞环境在httpd目录下:
一个是换行解析漏洞(CVE-2017-15715),另一个是多后缀解析。(ssi的rce本次不复现)
复现一:换行解析
一、原理
Apache可以通过mod_php来运行PHP网页。
其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,解析到下面例子时候:
1.php\x0A
将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。(%0a即编码中的换行符,于是这个解析漏洞叫换行解析)
二、复现过程
首先进入到换行解析漏洞环境目录下开启环境:
service docker start
docker-compose build
docker-compose up -d
接着访问虚拟机ip:8080即可:
先上传一个简单的小马看看:
被拦了,开始尝试下换行符后缀:
在Hex编码下查看,该处插入(insert byte)0a作为换行符
放包,访问 ip/2.php%0A:
phpinfo():
退出docker环境:
docker-compose down
复现二:多后缀解析
一、原理
Apache HTTPD 支持一个文件拥有多个后缀,并为不同后缀执行不同的指令。比如,如下配置文件:
AddType text/html .html
AddLanguage zh-CN .cn
其中,.html后缀增加了media-type,值为text/html;给.cn后缀增加了语言,值为zh-CN。此时,如果用户请求文件index.cn.html,他将返回一个中文的html页面。
以上就是Apache多后缀的特性。
如果运维人员给.php后缀增加了处理器:
AddHandler application/x-httpd-php .php
那么,在有多个后缀的情况下,只要一个文件含有.php后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。
二、复现过程
同上,进入多后缀解析漏洞的目录,开启环境:
访问 虚拟机ip:
先上传小马:被拦。
接着利用多后缀解析的漏洞,修改文件后缀名:.php.jpg
成功,并返回文件的路径
访问ip/路径,并输入phpinfo:
两个基本的解析漏洞复现过程。
好久没打靶机了,这几天学校课程实验有点多,忙着上网课。
发篇博客调动下自己的学习状态,潜心努力。