"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Vorsich PHP Programmierer - santy.c

Phobos 29.12.2004 - 17:03 637 6
Posts

Phobos

✝
Avatar
Registered: Jan 2003
Location: 1050
Posts: 2111
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 berichtet

Eine Liste der _HÄUFIGSTEN_ "Denkfehler"
(Auszug: )
Code:
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
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14592
all user input is evil!

moidaschl

Vollzeit-Hackler
Avatar
Registered: Aug 2002
Location: 1210, ABK-D/L
Posts: 4029
Zitat von semteX
all user input is evil!

:D

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
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14592
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

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
sorry, aber wer sowas programmiert, is aber echt selbst schuld...

dio

Here to stay
Registered: Nov 2002
Location: Graz
Posts: 4873
Zitat von semteX
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 ;).

Zitat von watchout
sorry, aber wer sowas programmiert, is aber echt selbst schuld...
Aber anscheinend gibts genug Leute, die's so machen :eek:

EDIT:

script.php?page=http://mysite.com/evilscript.php
:eek: 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

✝
Avatar
Registered: Jan 2003
Location: 1050
Posts: 2111
Zitat von semteX
wie schreibt ma da eigentlich am gscheitesten nen checker?
steht sogar auf der site wenn du lesen würdest !!11111 ;)
Code:
('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.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz