php wird nicht weiterverarbeitet?

Hi liebe HaBo User,

ich versuche mich gerade von Grund auf ein wenig in Richtung php Injektion weiterzubilden. daher hab ich fix ein mini Script geschrieben was einfach nur das Eingegebene wieder ausgeben soll.
Also von der Grundidee super XSS anfällig.

zum Code:

<form action="<?php echo $PHP_SELF; ?>" method="post">
<input type="text" name="text">
<br/>
<input type="submit" name="los" value="Berechnen">
</form>

<?php
echo $_POST['text'];
?>

also eine mini-mini-abgespeckte Version von einem unsicheren Gästebuch.

Nun versuche ich alles zu übergeben was sich übergeben lässt.
also html Befehle klappen alle prima (klar warum auch nicht).

allerdings wenn ich
<?php echo "toll"; ?>
übergeben will, zeigt der einfach nichts an, übergeht also den php Befehl einfach.
Nur im Quelltext sieht man:
<?php echo \"toll\"; ?>

Was ich weiter getestet habe sind Eingaben wie:
" dies wird zu \" obwohl ich kein addslashes(); oder ähnliches verwende.
wie man ein Beispiel vorher auch super erkennen kann.

zusätzlich reagiert der auf <?php und <? auch nicht so wie er "soll". Er gibt nichts aus und hinterlässt bloß wieder im Quelltext die Eingabe.

Hat jemand eine Idee woran das liegen könnte? und wenn ja auch eine Idee wie man eine solche "Problematik" umgehen kann?

Hier die Infos zu XAMPP: den ich hab die Vermutung das es irgendwas von XAMPP ist, ist aber nur n Überlegung von mir.

ApacheFriends XAMPP (Basispaket) version 1.7.0
+ Apache 2.2.11
+ MySQL 5.1.30 (Community Server)
+ PHP 5.2.8

Liebe Grüße p-g
 
@felix: natürlich hat p-g die Dateien .php genannt - er schreibt doch, dass das mit dem Formular an sich, wenn er nur HTML-Tags dort rein schreibt, alles funktioniert...


Original von p-g
allerdings wenn ich
<?php echo "toll"; ?>
übergeben will, zeigt der einfach nichts an, übergeht also den php Befehl einfach.
Nur im Quelltext sieht man:
<?php echo \"toll\"; ?>

Was ich weiter getestet habe sind Eingaben wie:
" dies wird zu \" obwohl ich kein addslashes(); oder ähnliches verwende.

Das ist einfach Sache der Server-Config.
siehe hier: http://de3.php.net/magic_quotes



Original von p-g
zusätzlich reagiert der auf <?php und <? auch nicht so wie er "soll". Er gibt nichts aus und hinterlässt bloß wieder im Quelltext die Eingabe.

User-Eingaben werden als Zeichenketten gewertet.
Wenn du explizit eingegebenen PHP-Code ausführen willst, dann gibt es die PHP-Funktion eval().
Aber einfach so "aus Versehen" wird kein über Formular eingeschleuster PHP-Code ausgeführt.

Es gibt allerdings genügend andere Schwachstellen, die alle aus einer möglichst explosiven Mischung aus unsicherer Server-Config und ich sag mal "schlampig" geschriebenem PHP-Code hervor gehen.

Ich hab mal vor 2 Semestern 'nen Vortrag drüber gehalten, wo ich aber auch nur ganz grob einen Überblick über die Problematik gegeben habe, da einige mit PHP noch gar keine Berührung hatten.
http://studium.cs-bergann.de/inet/phpsecurity/

viel Spaß damit! :-)

hab dort auch 'ne Menge Demo-Codes mit Anmerkungen, was man Server-seitig und was man Script-seitig in diesen Fällen noch verbessern müsste, um die entsprechenden Schwachstellen zu beheben.
 
Zurück
Oben