Apache HTTPD 换行解析漏洞(CVE-2017-15715)
还是借助BMZCTF这个网站来复现漏洞,不需要自己再启动环境了。
1. 什么是解析漏洞
解析漏洞指的是服务器应用程序在解析某些精心构造的后缀文件时,会将其解析成网页脚本,从而导致网站的沦陷。大部分解析漏洞的产生都是由应用程序本身的漏洞导致的。
2.常见的解析漏洞
1.IIS5.x-6.x解析漏洞
使用 IIS5.x-6.x 版本的服务器,大多为Windows server 2003,网站比较古老,开发语句一般为asp;该解析漏洞也只能解析asp文件,不能解析aspx文件。
解析文件类型 IIS6.0 默认的可执行文件除了asp还包含这三种 :
- /test.asa
- /test.cer
- /test.cdx
2.Apache(1.x、2.x)解析漏洞
Apache解析文件的时候是按照从右向左的方式,如请求http://192.168.11.132/test1/aaa.ccc.php.ras ,Apache无法解析.ras,向左解析到.php,于是就把该请求交给php模块去处理,于是文件aaa.ccc.php.ras 就会被解析为php可执行文件,如果在这个文件中写入php可执行代码,就可以利用漏洞,这就是Apache解析漏洞,该漏洞在旧版本中存在,但是在新版本中修复了。 如果遇到无法解析的文件后缀类型,会按默认处理方式认为是txt文本文件,如http://192.168.11.132/test1/asa.asd.sss.cdf
3.漏洞描述
Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。在解析PHP时,xx.php\x0A将被按照PHP后缀进行解析,导致可以绕过一些服务器的安全策略。 可以看到这里获取文件名是需要单独post一个name的,因为如果通过$_FILES['file']['name'] 获取文件名的话,会把\x0a自动去除,所以$_FILES['file']['name'] 这种方式获取文件名就不会造成这个漏洞。
该程序是采用黑名单的形式,如果文件后缀名不在名单内即可上传,所以 a.php\x0A不在黑名单列表中,可以上传。但是x0A是换行符,所以apache会直接忽略,将其当成php来执行。
4.漏洞影响
HTTPD的版本2.4.0~2.4.29都有可能存在该漏洞
5.漏洞复现
打开靶场看一下 上传一个1.php,发现返回bad file,被拦截了 这里有一点需要注意,我们不能直接在xj.php文件名后面加上%0a,因为Get传参他是有URL的编码解码的,但是我们这里是POST传参,他没有,所以我们通过Hex编码的方式手动给他加上. 这里有一点需要注意,我们不能直接在xj.php文件名后面加上%0a,因为Get传参他是有URL的编码解码的,但是我们这里是POST传参,他没有,所以我们通过Hex编码的方式手动给他加上
burp抓包,在Hex选项卡,php后面0d的位置右键-Insert byte,添加一个0a,然后发包,成功上传 修改之后就可以正常上传了 访问刚才上传的/1.php%0a,发现能够成功解析,但这个文件不是php后缀,说明目标存在解析漏洞 可以用蚁剑连接一下,连接成功 也可以用phpinfo()
6.修复建议
- 升级到最新版本
- 对上传文件重命名
- 禁用上传文件的执行权限
|