apache小组起家的apache更名为httpd,也更符合其http server的特性。而apache现在成为 apache基金会下几十种开源项目的标识。apache和httpd是一个,到apache2后就叫httpd了。
Apache HTTPD 换行解析漏洞(CVE-2017-15715)
Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。
漏洞复现
上传一个名为index.php的文件,被拦截,在index.php后面插入一个\x0A(注意,不能是\x0D\x0A,只能是一个\x0A),不再拦截
访问刚才上传的/index.php%0a,发现能够成功解析,但这个文件不是php后缀,说明目标存在解析漏洞:
Apache HTTPD 多后缀解析漏洞
Apache HTTPD 多后缀解析漏洞
Apache HTTPD 支持一个文件拥有多个后缀,并为不同后缀执行不同的指令。比如,如下配置文件:
1 |
AddType text/html .html |
其给.html后缀增加了media-type,值为text/html;给.cn后缀增加了语言,值为zh-CN。此时,如果用户请求文件index.cn.html,他将返回一个中文的html页面。
以上就是Apache多后缀的特性。如果运维人员给.php后缀增加了处理器:
1 |
AddHandler application/x-httpd-php .php |
那么,在有多个后缀的情况下,只要一个文件含有.php后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。
漏洞复现:
http://your-ip/index.php 中是一个白名单检查文件后缀的上传组件,上传完成后并未重命名。我们可以通过上传文件名为xxx.php.jpg或xxx.php.jpeg的文件,利用Apache解析漏洞进行getshell。
Apache SSI 远程命令执行漏洞
在测试任意文件上传漏洞的时候,目标服务端可能不允许上传php后缀的文件。如果目标服务器开启了SSI与CGI支持,我们可以上传一个shtml文件,并利用<!--#exec cmd="id" -->
语法执行任意命令。
详细命令可看如下文章:
https://httpd.apache.org/docs/2.4/howto/ssi.html
https://www.w3.org/Jigsaw/Doc/User/SSI.html
正常上传PHP文件是不允许的,我们可以上传一个shell.shtml文件:
1 |
<!--#exec cmd="ls" --> |
FROM :blog.cfyqy.com | Author:cfyqy
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论