Kein Problem - natürlich erkläre ich gerne, wofür die Regeln speziell da sind...
Code: Alles auswählen
RewriteCond %{QUERY_STRING} ^.*http://.*$ [NC,OR]
RewriteCond %{QUERY_STRING} ^.*https://.*$ [NC,OR]
RewriteCond %{QUERY_STRING} ^.*ftp://.*$ [NC,OR]
Hier wird überprüft ob im Querystring (Das sind die Variablen, die hinter dem Dateinamen und dem Fragezeichen an die Datei übergeben werden; z.B. index.php?id=3) die Protokollangaben "http://", "https://" oder "ftp://" vorkommen. In der Regel wird versucht über die von der Sicherheitslücke betroffenen Dateien Schad-Code in Contendio einzuschleusen. Da dieser Schad-Code sich in Dateien befindet, die sich auf anderen Servern befinden, müssten diese über eines der Protokolle geladen werden, welches aber durch die Regel in der htaccess-Datei verhindert wird.
Diese Regel überprüft ob die Angabe "cfg[*]" im Querystring vorkommt. Da in den betroffenen Dateien diese eigentlich Contenido-internen Variablen überschrieben werden können, werden mit dieser Regel alle Anfragen mit einem Querystring der diese Variable enthält gesperrt.
Code: Alles auswählen
RewriteCond %{QUERY_STRING} ^.*(\.\./|/\.\.|\./\.).*$ [NC,OR]
Oftmals wird versucht über "../" oder ähnliche Konstrukte in eine andere Verzeichnisebene des Servers zu gelangen. Diese Regel verhindert diese Verzeichnissprünge.
Code: Alles auswählen
RewriteCond %{QUERY_STRING} ^.*(localhost|loopback|127\.0\.0\.1).*$ [NC,OR]
Mit dieser Regel wird überprüft ob über den Querystring versucht wird auf eine lokale Resource zuzugreifen. Sollte dies der Fall sein, wird der Zugriff verweigert.
Code: Alles auswählen
RewriteCond %{QUERY_STRING} ^.*(;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|cast|set|declare|drop|update|md5|benchmark).*$ [NC,OR]
Hierbei handelt es sich um unnatürliche Zeichen und Elemente, die für SQL-Abfragen verwendet werden können und in den Querystrings von Contenido nichts verloren haben - daher werden alle Anfragen mit diesen Zeichen geblockt.
Code: Alles auswählen
RewriteCond %{REQUEST_METHOD} !^(GET|POST|HEAD)$ [NC,OR]
Da auf Webseiten mit verschiedenen Request-Methoden (Das bedeutet, in welcher Form die Daten abgerufen/gesendet werden) zugegriffen werden kann, sind alle Request-Methoden außer "POST", "GET" und "HEAD" gesperrt, da diese für die Nutzung von Contenido keine Relevanz haben und eventuell für Angriffe genutzt werden könnten.
Code: Alles auswählen
RewriteCond %{THE_REQUEST} ^.*(\\r|\\n|%0A|%0D).* [NC,OR]
An dieser Stelle überprüfen wir, ob in der Anfrage an den Webserver unnatürliche oder auffällige Zeichen vorkommen - beim Auftreten von solchen sperrt die htaccess-Datei den Zugriff.
Code: Alles auswählen
RewriteCond %{HTTP_COOKIE} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC]
Da auch Cookies die Möglichkeit bieten, Sicherheitslücken von Software auszunutzen, überprüfen wir hier ebenfalls ob auffällige Zeichen in den Werten vorhanden sind und stoppen den Zugriff, wenn dieses der Fall sein sollte.
Die "RewriteRule" ist die Aktion die ausgeführt werden soll, wenn eine der vorherigen Regeln zutrifft. In diesem Fall wird dem Browser ein 403 zurückgegeben, dass den Zugriff auf die entsprechende Datei verbietet.
Sonnige Grüße,
Mirco