某期三个白帽,某牛的出的题被秒,他利用过滤黑名单的方式防止上传。做题的人就是直接上传phtml绕过黑名单的, 但是我之前还不知道phtml还被能解析成php。
于是我本地测试,却发现我本地的phtml后缀解析不了。我本地的环境phpstudy集成环境。
我然后又在我的kali虚拟机里面测试,发现可以解析phtml。当时感觉好奇怪于是我就翻了翻了我kali里面的apache配置文件
kali是debian系的,/etc/apache2的目录下就是apache2的所有配置文件
其中apache2.conf是主要的配置文件,*-enabled表示在是用的配置,*-available表示是可用的配置。
我们来看看apache2.conf中的配置。
在文件的尾部包含了包含了模块的配置,而php5模块配置就是在mods-enabled里面
可看见php5.conf是../mods-available/php5.conf的软连接。看看php5.conf
终于找到原因啦,只要符合这个正则的后缀名都可以被当做php文件执行。符合的后缀包括 php、php3、php4、php5、phtml、pht 等
后来我还去测试了其他的一些apache+php的环境
windows
phpstudy和wamp两个集成环境
linux
ubuntu、debian和centos用源的方式安装lamp.(apt-get和yum)
结果
phpstudy和wamp以及centos用yum方式安装的lamp环境不能解析 phtml和pht
ubuntu和debian利用apt-get方式安装的lamp环境就能解析 phtml和pht , 原因和上图分析是一样的 。
备注
利用这些环境特性和黑名单就能绕过限制,达到上传webshell的目的,在平常渗透测试当中也许会是一个突破点