一、概述
Apache HTTPD 支持一个文件拥有多个后缀,并为不同后缀执行不同的指令,也就是说当我们上传的文件中只要后缀名含有php(没必要是最后一个后缀),该文件就可以被解析成php文件,利用Apache httpd这个特性,就可以绕过上传文件的白名单。
参考:
https://vulhub.org/#/environments/httpd/apache_parsing_vulnerability/
二、漏洞环境
路径:vulhub/httpd/apache_parsing_vulnerability
启动一个稳定版Apache,并附带PHP 7.3环境:docker-compose up -d
访问http://192.168.220.134/uploadfiles/apache.php.jpeg即可发现,phpinfo被执行了,该文件被解析为php脚本。
三、漏洞复现
http://192.168.220.134/index.php中是一个白名单检查文件后缀的上传组件:
直接提交123.php显示失败:
通过上传文件名为123.php.jpg的文件,利用Apache解析漏洞进行getshell:
成功上传:
查看上传的文件: