Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Webmaster-Security Fragen zur richtigen Serverkonfiguration oder Absicherung dynamischer Scripte gehören hier hinein.

PhP Code in Gifs

Diskussion: PhP Code in Gifs im Forum Webmaster-Security, in der Kategorie Security Area; Anzeige Hiho, ich wollte mal fragen wie das geht und mit welchem Programm. Damit ihr nicht denkt ich spinne oder ...

Antwort
Alt 22.11.07, 15:19   #1 (permalink)
 
Registriert seit: 15.09.06
moinmoin666 Leistung: Facit NTK
Likes: 0
Standard PhP Code in Gifs

Anzeige

Hiho, ich wollte mal fragen wie das geht und mit welchem Programm.

Damit ihr nicht denkt ich spinne oder anderes, hier mal zwei links.

http://www.network-secure.de/content/view/4826/1755/

http://wafful.org/2007/08/04/php-cod...if-image-file/

Diese Technik würde ich nur allzu gerne Lernen*g* PHP ist für mich auch eindeutig die beste Scriptsprache im WWW!

Damit keine Panik ausbricht, erstmal alle Webseiten mit

http://www.code-authors.com/modules....ewtopic&t=3413

absichern, bzw nen bissel ausführlicher:

http://www.scanit.be/uploads/php-file-upload.pdf

moinmoin666 ist offline   Mit Zitat antworten
Alt 22.11.07, 15:31   #2 (permalink)
 
Registriert seit: 23.05.05
Xalon Leistung: Facit NTK
Xalon eine Nachricht über ICQ schicken
Likes: 0
Standard

Nennt sich "HexEditor" ;D
Einfach deinen Code in die .gif, das wars.

Allerdings muss die Datei dann entweder standartmäßig an den Interpreter weitergegeben werden (ist meistens nicht so) oder von einem anderen Script included werden.


mfg,
Xalon

P.S: Falsches Forum
Xalon ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 22.11.07, 21:20   #3 (permalink)
 
Registriert seit: 06.04.05
adrian90 Leistung: Facit NTK
Likes: 0
Standard

wer includiert schon ein Bild?
Ich sehe hier überhaupt keine Sicherheitslücke.

Dass PHP Code so ausgeführt wird ist ja wohl jedem klar und sicher keine Sicherheitslücke.
adrian90 ist offline   Mit Zitat antworten
Alt 22.11.07, 22:42   #4 (permalink)
Themenstarter
 
Registriert seit: 15.09.06
moinmoin666 Leistung: Facit NTK
Likes: 0
Standard

hmm stimmt ok, man könnt ja noch die variante nehmen, Dateiendung unkenntlich machen, und dann sowas hochladen wie inject.php.uodweiodiweoje aber da kann man dann gleich ne richtige php Datei nehmen.... na ok, wieso das als so große Sicherheitslücke ausgesprochen worden ist, ist mir jetzt auch nen Rätzel.

naja ich sag nur

<?php
$Bild = "Sicherheitslücke";
include ($Bild);
?>

*g* ist doch immer wieder nett.... per Formular geht es wohl auch nicht... ich bin mal wieder nen bissel am spinnen sorry.

mfg moinmoin666

achja und danke für eure schnellen kompetenten antworten!
moinmoin666 ist offline   Mit Zitat antworten
Alt 22.11.07, 23:21   #5 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 14
Standard

Hallo,
@adrian90:
Man sollte den Artikel schon lesen bevor man postet.

@moinmoin:
Zitat:
PHP ist für mich auch eindeutig die beste Scriptsprache im WWW!
Eigentlich geht man nach so einer Aussage davon aus, dass man schon etwas Erfahrung hat in PHP Programmierung.

Wenn man dann nochmal den Artikel genau liest, wird man feststellen, dass es nicht um <?php include("bild.gif"); ?> geht, sondern um PHP Code der in einem Gif-Bild hinterlegt ist.
Also, lies den Artikel solange durch (und wirklich durch, nicht nur den Anfang), bis du die Problematik verstehst und warum es dort nicht um <?php include("bild.gif"); ?> geht.
Elderan ist offline   Mit Zitat antworten
Alt 22.11.07, 23:34   #6 (permalink)
Themenstarter
 
Registriert seit: 15.09.06
moinmoin666 Leistung: Facit NTK
Likes: 0
Standard

Mein include

<?php include("bild.gif"); ?>

war mehr als scherz gemeint, und wenn DU meinen Post richtig gelsen hättest wüsstest du das bei mir nicht

<?php include("bild.gif"); ?>

steht sonder

<?php include("Sicherheitslücke"); ?>

Mir war auch schon klar(nach dem Post von Xalon) das ich mit einem Hexeditor auch in ein jpg oder was auch immer phpcode reinbekomme, nur das er halt NIE ausgeführt wird!

Ich bitte doch mit deinen Anschuldigungen ein wenig zurücktrittst!
moinmoin666 ist offline   Mit Zitat antworten
Alt 22.11.07, 23:59   #7 (permalink)
LX
Moderator
 
Registriert seit: 14.02.06
LX Leistung: Z3
LX eine Nachricht über ICQ schicken LX eine Nachricht über AIM schicken LX eine Nachricht über Yahoo! schicken
Likes: 21
Arrow

Zitat:
Original von Elderan
Wenn man dann nochmal den Artikel genau liest, wird man feststellen, dass es nicht um <?php include("bild.gif"); ?> geht, sondern um PHP Code der in einem Gif-Bild hinterlegt ist.
Sicherlich ist include() nicht der einzige Weg, über den der maliziöse Inhalt des Bildes letztendlich zur Wirkung kommt... aber letztendlich muss die Datei auf welchem Wege auch immer in den PHP-Parser wandern. Dabei finde ich den unter Beispiel 8 genannten Weg noch am kritischsten, da der einem nicht sofort bewusst wird, wenn man mit Dateiuploads arbeitet. Warum in aller Welt z.B. jemand einen Webserver betreiben sollte, der Bilddateiendungen an den PHP-Parser leitet, das will mir nu nicht einleuchten

Alles in allem viel zu reißerisch aufgemacht. Von "faktisch alle PHP-Software ist betroffen" und "Uploads kann man im Grunde genommen nach Bekanntwerden dieser Lücke vergessen", wie's am Anfang ja rüber kommt, bleibt am Ende nicht viel übrig *schmunzel*
__________________
"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

JS BB LX UP
LX ist offline   Mit Zitat antworten
Alt 23.11.07, 00:03   #8 (permalink)
 
Registriert seit: 06.01.07
keksinat0r Leistung: Facit NTK
Likes: 0
Standard

Wenn wir schon beim ungewollten Einbinden / Ausführen von PHP-Code sind,
denkt dran, dass zB der Apache datei.php.blubb als PHP-Datei parst.

( dazu gibts hier aber scho irgendwo n thema... )

MFG - Keks
keksinat0r ist offline   Mit Zitat antworten
Alt 23.11.07, 10:35   #9 (permalink)
 
Benutzerbild von metax.
 
Registriert seit: 22.01.07
metax. Leistung: 8086
metax. eine Nachricht über ICQ schicken
Likes: 10
Standard

PHP zu Programmieren ist, wie auf einem Drahtseil zu balancieren, während man eine Stange Dynamit mit brennender Lunte in der Hand hält.
Wenn man nicht ganz genau aufpasst, baut man sich ein Scheunentor von Sicherheitslücke ein und fliegt auf die Schnauze. Und früher und später findet jemand einen Exploit, der dich zwingt, deine ganze Anwendung neu zu designen, weil dich sonst auch früher oder später jemand auf dem Server "besuchen" kommt.
Trotzdem macht es irgendwie Spaß

Ne, mal im Ernst:
Eigentlich lebt man damit ganz gut, wenn man eine Grundlegende Regel beachtet:
Never trust user input!

Oder genauer gesagt:
Behandle alles was irgendwie von Benutzer kommen kann (Hochgeladene Dateien, Parameter, der Request an sich), als hätte es die Pest!

Wenn man damit im Hinterkopf programmiert, achtet man eher auf solche Dinge.

mfg, metax.
__________________
Wenn keiner zuschaut, teile ich heimlich durch Null!
Meine Homepage: Planet Metax | meine Bilder: DeviantArt | Twitter
metax. ist offline   Mit Zitat antworten
Alt 23.11.07, 14:26   #10 (permalink)
 
Registriert seit: 23.05.05
Xalon Leistung: Facit NTK
Xalon eine Nachricht über ICQ schicken
Likes: 0
Standard

Zitat:
Original von moinmoin666
Mir war auch schon klar(nach dem Post von Xalon) das ich mit einem Hexeditor auch in ein jpg oder was auch immer phpcode reinbekomme, nur das er halt NIE ausgeführt wird!

Ich bitte doch mit deinen Anschuldigungen ein wenig zurücktrittst!
Schon mal was von Local-File Inclusion gehört?
Xalon ist offline   Mit Zitat antworten
Alt 23.11.07, 14:52   #11 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 14
Standard

Halllo,

Zitat:
Original von moinmoin666

<?php include("Sicherheitslücke"); ?>

Mir war auch schon klar(nach dem Post von Xalon) das ich mit einem Hexeditor auch in ein jpg oder was auch immer phpcode reinbekomme, nur das er halt NIE ausgeführt wird!

Ich bitte doch mit deinen Anschuldigungen ein wenig zurücktrittst!
In dem Artikel geht es nicht im Entferntesten um Include und irgendwelche Sicherheitslücken die man dadurch aufreißt.

Wenn man sich die Beispiele anguckt, wird einem das auch bald klar (setzt natürlich vorraus, dass man den Artikel auch wirklich komplett liest).


Es geht um folgendes:

Man kann in einem Gif-Bild, d.h.keine Datei nur mit .gif-Endung, sondern wirklich ein Bild im Gif-Format, PHP Code einfügen.

Viele Upload-Scripts haben folgende Überprüfung, um zu gucken ob das hochgeladene Bild auch ein Bild ist:
PHP-Code:
<?php
$imageinfo 
getimagesize($_FILES['userfile']['tmp_name']);
if(
$imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg') { 
    echo 
"Sorry, we only accept GIF and JPEG images\n";
    exit;
}
$uploaddir 'uploads/';
$uploadfile $uploaddir basename($_FILES['userfile']['name']);
if (
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo 
"File is valid, and was successfully uploaded.\n";
} else {
    echo 
"File uploading failed.\n";
}
?>
So nun erstell ich ein Gif-Bild und schleuse in dieses PHP Code ein und speicher dieses unter den Dateinamen: gifbild.php ab.

getimagesize() intressiert sich nicht für die Dateiendung, sondern für den MIME-Type des Bildes.
Wenn gifbild.php also ein Gif-Bild ist, wird als MIME-Type 'image/gif' zurückgegeben.

Lade ich diese Datei also hoch, gibt getimagesize als Type 'image/gif' zurück und die Datei gifbild.php wird im Ordner uploads abgespeichert.
Wenn ich direkten Zugriff auf den Upload Ordner habe, was oft der Fall ist, kann ich upload/gifbild.php aufrufen.
Da dies eine .php-Endung besitzt, wird der Inhalt der Datei an den PHP Interpreter gesendet.
Dieser führt den enthalten PHP Code aus und der Angreifer hat alle Möglichkeiten der Welt.

@LX:
Zitat:
Warum in aller Welt z.B. jemand einen Webserver betreiben sollte, der Bilddateiendungen an den PHP-Parser leitet, das will mir nu nicht einleuchten
Die Datei hat ja die Endung .php, aber den MIME-Type image/gif.
Deswegen passiert dieses die if-Anweisung, wird aber als .gif abgespeichert.

Leider ist es oft so, dass eine Überprüfung aufgrund des MIME-Types durchgeführt wird und nicht aufgrund der Dateiendung.

Allerdings, eine Überprüfung auf Dateiende ist auch nicht sicher. Die einzige Lösung ist, keinen direkten Zugriff auf das Upload-Verzeichnis zu erlauben sondern diesen über einen PHP Script zu steuern, der die Datei dann zum Download anbietet
Elderan ist offline   Mit Zitat antworten
Alt 24.11.07, 10:55   #12 (permalink)
Member of Honour
 
Benutzerbild von easteregg
 
Registriert seit: 14.09.07
easteregg Leistung: Pentium Ieasteregg Leistung: Pentium I
easteregg eine Nachricht über ICQ schicken
Likes: 62
Standard

hier wäre es aber vlt. noch eleganter den uploadir zugriff schon zu erlauben, aber dort sämmtliche interpreter zu deaktivieren!
__________________
» Flattr mich! - Wenn dir mein Beitrag geholfen hat! «
<| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |>
easteregg ist offline   Mit Zitat antworten
Alt 24.11.07, 17:01   #13 (permalink)
 
Registriert seit: 17.02.06
Harry Boeck Leistung: Facit NTK
Likes: 0
Standard sichere Apache- und PHP-Konfiguration...

Jeder, der einen Server betreibt, ist selbst verantwortlich, diesen SO zu konfigurieren, daß sich ein geschlossenes, sicheres System ergibt.

Wobei ich hier mit "geschlossen" meine, daß unter keinen Umständen Code von außerhalb dessen, was der Serveradmin als zulässig definiert, ausgeführt werden kann. UND, daß er nur nur das als zulässig definiert, was den Server nicht gefährdet.

Nicht nachvollziehen kann ich das Argument, daß Dateien mit beliebiger Endung, aber "php" irgendwo im Namen zwischen zwei Punkten, als PHP interpretiert werden. In diesem Fall ist die Apache-Konfiguration falsch:

http://harryboeck.dyndns.org/verschiedenes/test.php.txt

Interessant wäre es vielleicht noch, wenn jemand hier WEISS, wie die Konfiguration fehlerhaft aussehen würde (ich wüßte es nicht), so daß man Admins noch einen Hinweis zum gezielten Suchen dieser Lücke geben könnte.

Solange weder diese Fehlkonfiguration noch gravierende Mängel wie includes von beliebigen Fremddateien gegeben sind, ist der angesprochene Fall gegenstandslos.
Harry Boeck ist offline   Mit Zitat antworten
Alt 24.11.07, 18:15   #14 (permalink)
LX
Moderator
 
Registriert seit: 14.02.06
LX Leistung: Z3
LX eine Nachricht über ICQ schicken LX eine Nachricht über AIM schicken LX eine Nachricht über Yahoo! schicken
Likes: 21
Arrow

Das Problem tritt allgemein bei Dateiendungen auf, nicht nur bei *.php.irgendwas. Solange die Endungen beim Apache mit einem MIME-Type assoziiert sind, wird jede folgende Endung die vorherige überschreiben. In HBs Beispiel gehe ich mal davon aus, dass *.txt dem Apache als Endung bekannt und mit dem MIME-Type text/plain assoziiert ist. Würde er die Datei aber test.php.blahblubb nennen (und *.blahblubb nicht mit einem MIME-Type verknüpft sein), dann würde da wieder PHP ausgewertet werden.

Das ganze wurde im Apache-Bugtracker auch behandelt, IMHO mit sehr unbefriedigendem Ausgang (nämlich keinem).

Umgehen kann man das also nur, indem man explizit dem Apache alle Endungen, die geservt werden dürfen, auch bekannt macht und neben dem obligatorischen MIME-Check auch einen Dateiendungs-Check in seine Upload-Formulare einbaut. Alternativ bleibt nur, die Inhalte der Uploadverzeichnisse selbst mit einem Wrapper-Skript zu serven oder PHP-Auswertung für dieses Verzeichnis ganz zu unterbinden.
__________________
"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

JS BB LX UP
LX ist offline   Mit Zitat antworten
Alt 24.11.07, 21:18   #15 (permalink)
 
Registriert seit: 25.12.04
stone.dr Leistung: Facit NTK
Likes: 0
Standard

Zitat:
hier wäre es aber vlt. noch eleganter den uploadir zugriff schon zu erlauben, aber dort sämmtliche interpreter zu deaktivieren!
Genau dieses Sicherheitsprinzip nutzte Webspell - das witzige, genau diese "Sicherheitseinstellung" öffnete eine neue Sicherheitslücke.

Man möchte doch nicht, dass plötzlich PHP-Code sichtbar wird
stone.dr ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Security Area » Webmaster-Security » PhP Code in Gifs
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PhP Code in Gifs moinmoin666 (Web-) Design und webbasierte Sprachen 1 22.11.07 15:31
witzige gifs -= pillepalle =- Fun Section 6 27.10.05 20:35
Animierte Gifs Lami12 Internet Allgemein 1 19.06.05 23:50
Animierte Gifs Nicmon Windows 11 15.10.04 14:10
gifs Itchy (Web-) Design und webbasierte Sprachen 3 27.09.03 16:14


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61