HTML Formular entgegennehmen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
adresse
beispiel
bild
code
datei
fertig inklusive filter
filter
formular
frage
http
info
jemand
nummer
ober
ordner
server
status
test
url
zeile
-
Guten Tag.
Ich habe folgendes Formular mit http://de.selfhtml.org/ zusammengebaut.
http://pastebin.com/9ZK97yQg<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Formular</title> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <meta name="description" content=""> <meta name="author" content=""> <meta name="keywords" content=""> <link href="style.css" type="text/css" rel="stylesheet"> </head> <body> <form action="http://localhost/mc-status/fertig.php" method="post" enctype="multipart/form-data"> <p>Nummer:<br /><input name="nummer1" type="number" maxlength="15"/></p> <p>Zweite Nummer:<br /><input name="nummer2" type="number" maxlength="5"/></p> <p>Bild:<br /><input name="bild1" type="file" accept="image/png"/></p> <p>zweites Bild:<br /><input name="bild2" type="file" accept="image/png"/></p> <p>E-Mail Adresse:<br /><input name="mail" type="email"/></p> <p><input type="submit" value="Absenden"/></p> </form> </body> </html>
Nun wollte ich Fragen wie ich das mit PHP entgegennehme?
Ich habe mir das so vorgestellt:
Auf dem Webspace wird automatisch ein Ordner erstellt der so heisst wie die erste Nummer (nummer1). Darin sollte automatisch eine txt Datei erstellt werden die die restlichen Inhalte Beinhaltet.
Zusätzlich sollten die zwei Bilder auch in den Ordner hochgeladen werden.
Wenn jemand anders das Formular ausfüllt (mit einer anderen Nummer) sollte automatisch ein neuer Ordner gefüllt werden.
Versteht ihr wie ich das meine?
Ich habe es sehr knapp geschafft das HTML zusammen zu bröseln deshalb währe ich dankbar wenn mir das jemand mehr oder weniger machen würde .
Oder zummindest eine einfache Vorlage legt.
Grüsse, mc-status :) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wieso lässt du dir das nicht per E-Mail schicken ?
Das funktioniert mit der mail() Funktion, uind ist einfacher als es auf dem Webspace zu speichern -
ich hätte dazu noch ne Frage, wozu ist die zweite Nummer?
Dann werde ich mal sehen was sich machen lässt ;) -
Obwohl ich dir das jetzt nicht mehr oder weniger mache: ein Upload von beliebigen Benutzerdateien auf den Webspace ist zwar möglich, sicherheitstechnisch aber einfach nicht sinnvoll.
Stell dir vor, jemand lädt eine php-Datei statt einem Bild hoch. Die landet dann am Webspace und lässt sich ganz normal ausführen. Mit der PHP-Datei kann ich dann alle Dateien von deinem Webspace herunterladen und z.B. nach Datenbankpasswörtern suchen. Wenn ich welche gefunden habe kann ich aus deinen Datenbanken auslesen was mir gerade passt, ohne dass du es merkst.
Sinnvoll ist es deshalb nicht Dateien vom Benutzer direkt in den Webspace hochzuladen.
Natürlich könnte ich dir trotzdem ein Beispiel geben, aber überleg dir das vorher nochmal gut! Das hier ist im Internet und nicht auf einem lokalen von außen nicht zugänglichen Testserver.
imho schrieb:
Wenn noch bekannt wäre wozu das alles hochgeladen werden soll und was danach passiert könnten solche Entscheidungen sinnvoller getroffen werden.
Wieso lässt du dir das nicht per E-Mail schicken? -
Obwohl ich dir das jetzt nicht mehr oder weniger mache: ein Upload von beliebigen Benutzerdateien auf den Webspace ist zwar möglich, sicherheitstechnisch aber einfach nicht sinnvoll.
Stell dir vor, jemand lädt eine php-Datei statt einem Bild hoch. Die landet dann am Webspace und lässt sich ganz normal ausführen. Mit der PHP-Datei kann ich dann alle Dateien von deinem Webspace herunterladen und z.B. nach Datenbankpasswörtern suchen. Wenn ich welche gefunden habe kann ich aus deinen Datenbanken auslesen was mir gerade passt, ohne dass du es merkst.
wenn ich das hier richtig gelesen habe sollen nur Bilder hochgeladen werden und dafür kann man durchaus ein Test einbauen ansonsten gebe ich dir4 durchaus Recht :)
-
webaffe schrieb:
Nur wenn der TE schon mit dem Erstellen des Formulars kämpft bezweifle ich, dass er solch einen Filter zustande bringen wird...
wenn ich das hier richtig gelesen habe sollen nur Bilder hochgeladen werden und dafür kann man durchaus ein Test einbauen ansonsten gebe ich dir4 durchaus Recht :) -
hackyourlife schrieb:
webaffe schrieb:
Nur wenn der TE schon mit dem Erstellen des Formulars kämpft bezweifle ich, dass er solch einen Filter zustande bringen wird...
wenn ich das hier richtig gelesen habe sollen nur Bilder hochgeladen werden und dafür kann man durchaus ein Test einbauen ansonsten gebe ich dir4 durchaus Recht :)
deswegen fragt er ja ob ihm dass jemand machen würde... und ich habe das soweit fertig(inklusive Filter), dass ich 2-3 Zeilen ändern müsste, damit es exakt passt und biete mich auch an dass zu machen -
Achja: du solltest noch beachten, dass eine maximale Dateigröße von 2MB beim Upload nicht überschritten werden darf.
-
hackyourlife schrieb:
Achja: du solltest noch beachten, dass eine maximale Dateigröße von 2MB beim Upload nicht überschritten werden darf.
mach ich und danke :)
jetzt noch mal an den ursprünglichen Beitrag, was soll mit der zweiten Nummer geschehen? -
imho schrieb:
Das währe eine gute alternative. Das ganze auf dem Webspace fände ich aber praktischer da ich das dann in den Explorer integrieren würde um direkt drauf zuzugreifen.
Wieso lässt du dir das nicht per E-Mail schicken ?webaffe schrieb:
Nichts weiter als eine Normale Nummer die auch in der txt Datei landen sollte.
ich hätte dazu noch ne Frage, wozu ist die zweite Nummer?hackyourlife schrieb:
Hhm, da hast du wohl recht. Währe das mit einem Filter realisierbar?
Obwohl ich dir das jetzt nicht mehr oder weniger mache: ein Upload von beliebigen Benutzerdateien auf den Webspace ist zwar möglich, sicherheitstechnisch aber einfach nicht sinnvoll.
Ich dachte eigentlich dass, das Formular so oder so nur PNG dateien zulässt. Scheint aber nicht so zu sein?accept="image/png"
hackyourlife schrieb:
Die Daten danach werden dann von Hand verwalten.
Wenn noch bekannt wäre wozu das alles hochgeladen werden soll und was danach passiert könnten solche Entscheidungen sinnvoller getroffen werden.webaffe schrieb:
Das währe natürlich ober klasse :)
deswegen fragt er ja ob ihm dass jemand machen würde... und ich habe das soweit fertig(inklusive Filter), dass ich 2-3 Zeilen ändern müsste, damit es exakt passt und biete mich auch an dass zu machen -
mc-status schrieb:
...webaffe schrieb:
Das währe natürlich ober klasse :)
deswegen fragt er ja ob ihm dass jemand machen würde... und ich habe das soweit fertig(inklusive Filter), dass ich 2-3 Zeilen ändern müsste, damit es exakt passt und biete mich auch an dass zu machen
@webaffe: erhat nichts davon! er soll das lernen!
@mc-status:Das währe natürlich ober klasse :)
ja. aber hier ist niemand fronarbeiter ;) -
hemiolos schrieb:
mc-status schrieb:
...webaffe schrieb:
Das währe natürlich ober klasse :)
deswegen fragt er ja ob ihm dass jemand machen würde... und ich habe das soweit fertig(inklusive Filter), dass ich 2-3 Zeilen ändern müsste, damit es exakt passt und biete mich auch an dass zu machen
@webaffe: erhat nichts davon! er soll das lernen!
@mc-status:Das währe natürlich ober klasse :)
ja. aber hier ist niemand fronarbeiter ;)
ich weiß dass er nichts davon hat, aber hilfsbereit sein ist wichtig und ich habe im Nachhinein ein gutes Gefühl und er ist sein Problem los
sonst geb ich dir natürlich Recht, wenn der Code irgendwann veraltet ist, kann er es nicht updaten, aber dann kann er ja wieder fragen :)
So hab das Script jetzt fertig :)
http://pbeckmann.de/index_upload
einfach den Inhalt kopieren und in eine neue Datei einfügen , abspeichern und aufrufen, dass Formular, wird auch vom Skript mitgegeben.
@hackyourlife: Vielleicht bist du ja so freundlich, dir den Code noch mal anzugucken
Danke schon mal im Voraus
Beitrag zuletzt geändert: 9.4.2012 13:38:49 von webaffe -
Ich bitte euch zu bedenken, dass jegliche Sicherheitsfilter für Bilder nicht voll funktionstüchtig sind beziehungsweise sich leicht austricksen lassen.
Das image/png steht im Header der Bilddatei und lässt sich theoretisch an jedes PHP-Script vorne anfügen. Außerdem kann man auch in einem Bild entsprechenden PHP-Code verstecken, der beim Aufrufen des Bildes ausgeführt wird.
Weiterhin ist der Webspace übrigens nicht als Bilderspeicher gedacht, wir haben ab und an schon Probleme mit dem Speicherplatz weil einzelne User Unmengen verbrauchen. Aber das nur am Rande ;)
MfG,
karlsve -
webaffe schrieb:
Schon geschehen.
@hackyourlife: Vielleicht bist du ja so freundlich, dir den Code noch mal anzugucken
karlsve schrieb:
Der hier eingebaute Filter lässt sich extrem leicht austricksen...
Ich bitte euch zu bedenken, dass jegliche Sicherheitsfilter für Bilder nicht voll funktionstüchtig sind beziehungsweise sich leicht austricksen lassen.
karlsve schrieb:
Wichtig hierbei ist noch, dass es bei einigen Bildformaten sogar erlaubt ist, Extrabytes anzuhängen, bei einem normalen Bildviewer wird das Bild dann trotzdem noch richtig angezeigt!
Das image/png steht im Header der Bilddatei und lässt sich theoretisch an jedes PHP-Script vorne anfügen. Außerdem kann man auch in einem Bild entsprechenden PHP-Code verstecken, der beim Aufrufen des Bildes ausgeführt wird.
Und so ein Filter wie dieser:
hält nur Anfänger davon ab, irgendwas hochzuladen, da ja der Client selbst "aufgefordert" wird, den Dateityp zu prüfen. Das hindert aber niemanden daran, die POST-Anfrage direkt zu senden... möglicherweise mit einem manipulierten Formular.<input name="bild1" type="file" accept="image/png"/>
Was benötigt wird um PHP-Code auf dem Server auszuführen:
- irgend ein Bild (möglichst 1x1 Pixel PNG, weil das extrem klein ist (~120 Bytes))
- PHP-Code, der am Server ausgeführt werden soll
- ein guter Editor
An das Bild (vorzugsweise 1x1 Pixel PNG) hängt man mit einem Editor, der Binärdateien nicht zerstört, den PHP-Code an (z.B.
). Das ganze speichert man und lädt das als Bild hoch.<?php eval($_REQUEST['evil']); ?>
Bei dem hier vorgestellten Script (http://pbeckmann.de/index_upload) gibt es noch einen weiteren Fehler, der Angreifern zu Gunsten kommt: man darf sich sogar den Ordner aussuchen, in dem das "Bild" gespeichert wird. Das lässt sich über das "nummer1"-Feld erreichen... -
natürlich lässt sich dieser Filter umgehen, wie jeder andere auch, aber ich glaube, dass es in diesem Fall aiusreicht, denn ich gehe hier zum einen von einer Unschuldsvermutung aus
zum anderen würde ich niemals ein upload-Script ohne PAsswort-Schutz(z.B. in Form einer .htaccess) ins Netz stellen, da iuch ja nie weiß, was andere damit machen.
und wenn es ein Passwortschutz gibt, müsste der "böswillige " Hacker den überwinden um überhaupt seinen Schadcode hochzuladen.
zum anderen weise ich darauf hin, dass man über die 2. Nummer oder die E-MAil Adresse ohne irgendwelche Kontrollen einfach PHP- Code hochladen kann, der auf einem unsicher konfiguriertem Server bei Aufruf der infos.txt ausgeführt wird
trotzdem vielen Dank für die konstruktive Kritik -
webaffe schrieb:
Wobei hierzu der Server so konfiguriert sein müsste, dass er TXT-Dateien als PHP-Code interpretiert, was eher unwahrscheinlich ist.
zum anderen weise ich darauf hin, dass man über die 2. Nummer oder die E-MAil Adresse ohne irgendwelche Kontrollen einfach PHP- Code hochladen kann, der auf einem unsicher konfiguriertem Server bei Aufruf der infos.txt ausgeführt wird -
Und noch einmal:
Der Denkansatz mit dem PHP in einem Textfeld ist nicht ganz unbedeutend auch wenn sich das ja bereits vor der Speicherung in einer .txt Datei auswirkt. Man kann simpel mit einem
"; irgendwelcher PHP code (zum Beispiel zum schreiben einer Dateizugriffsfunktion in eine .php-Datei); $x ="test
das Script umfunktionieren ;)
Aber nur als Hinweis zu verstehen.
MfG,
karlsve -
hackyourlife schrieb:
webaffe schrieb:
Wobei hierzu der Server so konfiguriert sein müsste, dass er TXT-Dateien als PHP-Code interpretiert, was eher unwahrscheinlich ist.
zum anderen weise ich darauf hin, dass man über die 2. Nummer oder die E-MAil Adresse ohne irgendwelche Kontrollen einfach PHP- Code hochladen kann, der auf einem unsicher konfiguriertem Server bei Aufruf der infos.txt ausgeführt wird
gerade das Unwahrscheinliche soll man nicht vernachlässigen
und ja man das Skript einfach umfunktionieren : ) das ist mir bewusst, aber ich bin wirklich davon ausgegangen, dass mc-status das alleine und mit ein zwei anderen Personen nutzt
Beitrag zuletzt geändert: 10.4.2012 14:42:08 von webaffe -
webaffe schrieb:
Dazu müsste man aber explizit wissen, wo und wie man das umstellt. Absichtlich kann man so eine Umstellung aber nicht machen, da man sonst nicht einmal mehr normale TXT-Dateien online stellen kann. Dazu muss jemand schon ein ausgesprochener Idiot sein...
gerade das Unwahrscheinliche soll man nicht vernachlässigen
karlsve schrieb:
Stellst du dir das etwa so vor, dass du das in dein "nummer2"-Textfeld eingibst? Irgendwer hat hier wohl PHP noch nicht verstanden...
Der Denkansatz mit dem PHP in einem Textfeld ist nicht ganz unbedeutend auch wenn sich das ja bereits vor der Speicherung in einer .txt Datei auswirkt. Man kann simpel mit einem
das Script umfunktionieren ;)"; irgendwelcher PHP code (zum Beispiel zum schreiben einer Dateizugriffsfunktion in eine .php-Datei); $x ="test
Dein Angriff würde funktionieren, wenn die Zeile innerhalb von
stehen würde, ansonsten hast du keine Chance, da ja nur Variablen zusammengefügt werden.eval()
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage