Vorsich PHP Programmierer - santy.c

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/vorsich_php_programmierer_santy_c_133192/page_1 - zur Vollversion wechseln!


Phobos schrieb am 29.12.2004 um 17:03

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!


semteX schrieb am 29.12.2004 um 21:43

all user input is evil!


moidaschl schrieb am 29.12.2004 um 21:48

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!


semteX schrieb am 29.12.2004 um 22:18

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 schrieb am 29.12.2004 um 22:48

sorry, aber wer sowas programmiert, is aber echt selbst schuld...


dio schrieb am 29.12.2004 um 22:50

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 ;).


Phobos schrieb am 30.12.2004 um 01:30

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.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025