Page 1 of 1

HTTP Requests blocken

Posted: 2008-07-04 10:07
by p17
Hallo,
ich kriege seit einiger Zeit GET Anfragen nach folgendem Muster:

Code: Select all

http://myhost.tld//index.php?_SERVER[DOCUMENT_ROOT]=http://www.otherhost.tld
von verschiedenen IPs.
Das mod_security diese Anfragen blockt, bezweifel ich, denn der apache spuckt dabei öfters gerne mal ein "200" aus, und die Logs von mod_security sind diesbezüglich auch nicht gerade aufschlussreich.
Also habe ich mir die apache Direktive "SetEnvIf" mal näher angesehen. Dazu habe ich zwei Möglichkeiten ausprobiert:
- einmal in Kombination mit der allow, deny Direktive
- und die Reject Direktive
Das sieht dann in der config so aus:

Code: Select all

        <Directory /var/www/>
        AuthzDefaultAuthoritative On
        SetEnvIf Request_URI ".*_SERVER[DOCUMENT_ROOT]=http://*" drop_them
#       Reject env drop_them

                Options -Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                deny from env=drop_them
                RewriteEngine on
                RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
                RewriteRule .* - [F]
        </Directory>
Folgende Module habe ich zusätzlich geladen:
- authz_default
- authz_host.load
- authz_user.load

Die Möglichkeit mit der Reject Direktive verlangt das "authz_core" Modul, welches ich aber nirgends finden kann. Also bieb mir die Deny Direktive.
Das scheint aber nicht zu funktionieren, denn bei Selbsttests lässt der Browser diese Anfragen durch.
Ich habe das Gefühl, das einfach nur die Regex ( SetEnvIf ...) falsch ist.

Hat jemand einen Tip?

Re: HTTP Requests blocken

Posted: 2008-07-04 10:19
by Joe User
Statt wild an der httpd.conf rumzufummeln, solltest Du lieber schnellstens die Sicherheitslöcher in Deiner Webapplikation fixen...

Re: HTTP Requests blocken

Posted: 2008-07-04 11:16
by p17
Danke für den Hinweis. Das hilft mir aber jetzt konkret auch nicht weiter.

Re: HTTP Requests blocken

Posted: 2008-07-04 11:29
by Roger Wilco
P17 wrote:Danke für den Hinweis. Das hilft mir aber jetzt konkret auch nicht weiter.
Das $_SERVER Superglobal kann man von außerhalb nicht modifizieren. Wenn dein Skript trotzdem darauf reagiert, ist etwas an deinem Skript faul.

Re: HTTP Requests blocken

Posted: 2008-07-04 15:35
by EdRoxter
Ob und wie das Skript darauf reagiert, lässt sich ja anhand des HTTP-Statuscodes nicht sagen.

Ruf doch die URL einfach mal im Browser auf und schau, wie das Skript damit umgeht.

Re: HTTP Requests blocken

Posted: 2008-07-04 21:47
by p17
Ich habs jetzt doch mit mod_security gelöst:

Code: Select all

SecRule QUERY_STRING "@contains _SERVER[DOCUMENT_ROOT]=" "log,drop,msg:'SERVER[DOCUMENT_ROOT] Denied!'"

mach das, was ich will.
Ist zwar noch ausbaufähig, aber immerhin.