ID:               19113
 Comment by:       uhlar at fantomas dot sk
 Reported By:      php_new at jdc dot parodius dot com
 Status:           Bogus
 Bug Type:         Apache related
 Operating System: FreeBSD
 PHP Version:      4.3.2-dev
 New Comment:

Isn't there a possibility to check for valid/supported methods?
maybe such check should be in apache, but couldn't php check what
method it's processing instead of processing CONNECT as GET?


Previous Comments:
------------------------------------------------------------------------

[2003-08-17 12:52:22] messi at toxis dot com

Reproduced with Apache 2.0.47 (prefork) and PHP 4.3.2
(module/apache2handler) on Linux with an /index.php in docroot of first
vhost.

httpd.conf:
  DirectoryIndex index.php index.html index.htm
  AddType application/x-httpd-php .php

CONNECT www.google.com:80 HTTP/1.0  -->  HTTP/1.1 200 OK
TINTE / HELLO/1.0  -->  HTTP/1.1 200 OK


I can't believe this. Please tell me this is a feature and there is a
way to turn this off. Also, please explain to me why this so-called
feature is turned on by default.

Well, there might be some reasons to introduce a new request method or
even a new http-like protocol and that /index.php can handle this but
this shouldn't be allowed by default.

Thanks in advance.

------------------------------------------------------------------------

[2003-08-06 19:38:21] arafuse at bcexplorers dot com

I had to take the code a little further.
I don't have mod_proxy/mod_rewrite installed, and I keep getting the
following in the log files:

203.98.129.180 - - [05/Aug/2003:17:43:32 -0700] "POST
http://64.59.128.220:25/ HTTP/1.1" 200 933 "-" "-"
203.98.129.180 - - [05/Aug/2003:17:43:32 -0700] "POST
http://64.59.128.220:25/ HTTP/1.1" 200 933 "-" "-"

System: apache 1.3.28, php 4.3.1, RH7.3
========================================================
<?php
if( strtoupper($_SERVER['REQUEST_METHOD'])=="CONNECT"){
        header("HTTP/1.1 405 Method Not Allowed");
        die();
}
if( strtoupper($_SERVER['REQUEST_METHOD'])=="POST") {
        if (preg_match("/\:(\d+)/", $_SERVER['REQUEST_URI'], $matches))
{
                if (($matches[1] != '80') && ($matches[1] != '443')) {
                        header("HTTP/1.1 405 Method Not Allowed");
                        die();
                }
        }
}
?>
========================================================

------------------------------------------------------------------------

[2003-07-07 17:59:18] jesseNO at SPAMhousejunkie dot ca

I have also replicated this issue
slack 9.0. 1.3.27 / 4.3.2

I have also applied the above fix
<snip>
<?
if( strtoupper($_SERVER['REQUEST_METHOD'])=="CONNECT"){
        header("HTTP/1.1 405 Method Not Allowed");
        die();
}
?>
</snip>
I has stopped the issue until php releases the fix

------------------------------------------------------------------------

[2003-06-19 20:10:30] fallenmatt at yahoo dot com

this is my temporally fix:
i put it in an include file with a nice body (coppied from apache
response to connect) and include it on top of index.php files for each
virtual server:

<?
if( strtoupper($HTTP_SERVER_VARS['REQUEST_METHOD'])=="CONNECT"){
        header("HTTP/1.1 405 Method Not Allowed");
        die();
}
?>

you should probably use $_SERVER[] instead... and no empty lines in
your include file, otherwise header() gets confused

------------------------------------------------------------------------

[2003-06-19 09:47:51] fallenmatt at yahoo dot com

i found this bug affecting my servers too.
the severity of it is that spammers scan for open proxies and then
don't check that they get smtp connection back, anything that's
succesfull request puts the address on their proxy list.

the result: i've got basically denial of service attack. My server was
getting thousands of requests ("connect x.x.x.x:25) per hours,
sometimes hundreds per minute. SInce it does a lot of mysql querries my
database gaved up and started throwing can't connect to database
errors.

it is still a persistent problem. for a time being i check my counters
and whenever i get large number of requests from same ip address i just
ban it on my firewall.

that is not a good sollution so still looking for a way to really fix
it.

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/19113

-- 
Edit this bug report at http://bugs.php.net/?id=19113&edit=1

Reply via email to