apache httpd多后綴解析漏洞復現
一、漏洞描述
Apache Httpd支持一個文件擁有多個后綴,不同的后綴執行不同的命令,也就是說當我們上傳的文件中只要后綴名含有php,該文件就可以被解析成php文件,利用Apache httpd這個特性,就可以繞過上傳文件的白名單。
該漏洞和apache版本和php版本無關,屬於用戶配置不當造成的解析漏洞
二、漏洞原理
由於管理員的錯誤配置, AddHandler application/x-httpd-php .php,在有多個后綴的情況下,只要一個文件含有.php后綴的文件即將被識別成PHP文件,沒必要是最后一個后綴。利用這個特性,將會造成一個可以繞過上傳白名單的解析漏洞。
三、漏洞環境搭建與復現
1、使用docker搭建漏洞環境,啟動環境
docker-compose up -d
2、瀏覽器訪問http://172.17.0.1/
3、直接上傳一個php文件,提示Unsupported filetype uploaded
4、查看配置文件,下圖即可看到,管理員錯誤配置導致解析漏洞
5、利用apache解析漏洞,上傳一個phpinfo.php.jpg或者phpinfo.php.jpeg的文件,下圖可以看到成功上傳
6、瀏覽器訪問http://172.17.0.1/uploadfiles/phpinfo.php.jpg,發現phpinfo被執行了,該文件被解析為php腳本
四、漏洞防御
1、使用SetHandler,寫好正則
<FileMatch ".+\.php$">
SetHandler application/x-httpd-php
</FileMatch>
2、禁止.php這樣的文件執行
<FileMatch ".+\.ph(p[3457]?|t|tml)\.">
Require all denied
</FileMatch>