Apache
多后缀名
一般来说windows只认最后一个'.'以及后面的字符,大多数操作系统,应用程序也是这样任务的
但是Apache不然,它支持多种后缀
例如text.php.aaa.ccc apache服务器会从右到左依次解析 根据mime.types里面的文件后缀(在Linux里面位于/etc/mime.types,在Windows下,该文件位于apache的安装路径/conf/mime.types)
倘若文件没有aaa,ccc 会直接把text.php.aaa.ccc当作text.php处理
又或者是text.php.html.xxx, apache服务器会从右向左读到html,表示认识就不继续了 把text.php.html.xxx认为是text.html
版本:
apache版本在以下范围内
Apache 2.0.x <= 2.0.59 Apache 2.2.x <= 2.2.17 Apache 2.2.2 <= 2.2.8 都可以通过解析漏洞配合上传使用。
危害
绕过白名单
假如网站有上传文件的功能,对一些特殊的后缀名进行检验,但是只对最后面的后缀,就有可能绕过校验 上传危害文件
例外
但是有时候绕过检验 apache把其当作php文件解析了但是php本身的解析器不认 也不行
可能需要对相关配置文件进行修改才行 只是一种假设
还有一种是访问 aaa.php.xxx这种不是php程序的文件,会触发500错误
有可能是配置文件没有配置好导致的
罕见后缀名
服务器代码中限制了某些后缀的文件不允许上传,但是有些Apache是允许解析其它后缀的,例如在httpd.conf中如果配置有如下代码,则能够解析php和phtml文件
AddType application/x-httpd-php .php .phtml
.php3 .pht .php5也能解析成php
.htaccess文件
.htaccess只作用于当前目录以及子目录 不像其他配置文件一样作用于全局
换行解析
其2.4.0~2.4.29版本中存在一个解析漏洞
在php后面的hex改成0a,然后就能上传成功 绕过黑名单校验 想要访问文件需要在文件后面加上%0A
IIS
IIS6.0解析漏洞
对于文件名
IIS6.0不解析;后面的内容 对于1.asp;jpg会当作1.asp解析 相当于把;后面的注释掉了
对于文件
IIS6.0会将/*.asp/文件夹下面的文件当作asp解析
如下几种文件类型也会被执行。
xxx.asa xxx.cer xxx.cdx
IIS7.0/7.5解析漏洞
IIS7.*在FastCGI运行php的情况下,php默认配置cgi.fix_pathinfo=1,导致在任意文件后面添加/.php,服务器就会解析成php
参考资料:
文件解析漏洞总结-Apache_apache2.4.7漏洞_Werneror的博客-CSDN博客