Apache htaccess ErrorDocument指令不起作用

时间:2017-06-23 14:29:40

标签: apache .htaccess mod-rewrite

我在网页上发现了内容欺骗的漏洞。

此网址:

https://www.mygreatsite.com/www.mygreatsite.com%20has%20moved%20to%20www.evilsite.com.%20CHECK%200UT%20H0W%20COOL%20THE%20NEW%20SITE%20IS!%20Sadly,%20the%20file%00

Apache输出:

未找到

请求的网址/www.mygreatsite.com已移至www.evilsite.com。检查0UT H0W COOL新站点!可悲的是,在这台服务器上找不到该文件。

-

URL覆盖Apache-Error并输出添加到浏览器中URL的文本以及404错误。

实际上,所有对服务器的请求都应该重定向到CMS(Typo3),后者又处理404错误并显示自定义页面。 当我输入不存在的URL时,这非常有效。只是上面提到的URL搞砸了一切。 有趣的是,当我从URL的末尾删除«%00»时,请求将被转发到CMS并显示正确的错误文档。

我试图在htaccess文件中添加一个单独的ErrorDocument-Directive - 但没有成功。

任何想法出了什么问题以及如何解决这个问题?

正如Anubhava所指出的,当检测到NULL-Byte时,Apache不会加载任何模块而只会抛出404.这就是为什么htaccess中的ErrorDocument和mod_rewrite不起作用的原因。

[编辑澄清]

1 个答案:

答案 0 :(得分:1)

%00或Hex \x00是一个NULL字节。当Web服务器在最后找到一个NULL字节时,Web服务器认为它是一个欺骗请求,并认为任何指令处理都是危险的。

出于安全原因,网络服务器未加载此请求的任何模块,并返回404 / Not found状态。浏览器会在未找到文本下方显示默认的404页面,其中包含已解码的网址。