Gå til innhold

Er dette scriptet hacker sikkert ?


Anbefalte innlegg

Skrevet

<?php
$date = date('l dS \of F Y h:i:s A');
$path = "./";
$dir_handle = @opendir($path) or die("Unable to open $path");
$file = htmlspecialchars($_GET['file']);
$logfile = 'stats.txt';
$ip = $_SERVER['REMOTE_ADDR'];

if($file)
{

if($file != 'index.php')
{
$fp = fopen("./$logfile", 'a');
fwrite($fp, "$date $ip $file\n");
fclose($fp);

if(strstr($file, "..") || strstr($file, "/")){ die("dø script kiddie");}
include($file);
}
}
else
{

while ($file = readdir($dir_handle))
{
if($file != '.' && $file != '..' && $file != 'stats.txt'){
  echo "<a href='?file=$file'>$file</a><br/> \n";}
}
closedir($dir_handle);

}
?>

 

Fins det feil i dette scriptet som kan utnyttes? I såfall fortell hvordan.

Videoannonse
Annonse
Skrevet

$file = basename($_GET['file']); er vel bedre...

Og du kan jo også sjekke om is_file($path.$file). ;)

 

Dette blir litt smør på flesk:

if($file)

{

 

if($file != 'index.php')

{

 

Det rekker å sjekke den nederste. :)

Skrevet

Ta heller å se litt på realpath, og så er det ikke så vanskelig å sjekke om fila er inni realpath("./"); og... ja du tar resten.

 

Det med logginga di er ganske dumt, tenk deg at en person setter seg og trykker på refresh et par hundre ganger, eller enda værre, skriver et enkelt script spør etter samme hele tida. Du må heller gjøre sånn at du legger en til "kolonne" med antall requests fra hver ip.

 

Det med å ta htmlspecialchars er unødvendig først. Lag heller en annen variabel $file_print som er uten html kode som du bruker til å skrive ut. Tenk hvis en fil har < eller > i navnet sitt.

Skrevet

Jeg kan ikke nok php til å avgjøre om scriptet ditt er sikkert. Jeg pleier å bruke preg_match for å forsikre meg om at bare tegn som har noe i filnavn å gjøre er der, om det er du som definerer hvilke filnavn som skal kunne inkluderes så kan du jo sørge for at bare bokstaver og punktum godtas i filnavnet. Vet ikke om scriptet ditt vil slippe gjennom ascii-kodede tegn etc. Kan som sagt altfor lite om dette.

Skrevet

Et script vil aldri bli helt hacke og cracke sikkert, pga. sikkerhetshull i de fleste serversoftware.

Men, når du bruker flatfiler blir sikkerheten enda mindre, pga. alle som vet filnavnet og filpatch (hvor filen ligger) kan i teorien endre på filen uten problemer.

Skrevet

For å forhindre "spamming" av scriptet, kan du jo bruke session variabel, nesten som et login script, der man bare får oppdatert en gang så lenge session varer.

Skrevet
Et script vil aldri bli helt hacke og cracke sikkert, pga. sikkerhetshull i de fleste serversoftware.

Men, når du bruker flatfiler blir sikkerheten enda mindre, pga. alle som vet filnavnet og filpatch (hvor filen ligger) kan i teorien endre på filen uten problemer.

7632203[/snapback]

 

Det blir vel feil? Et script i seg selv kan godt være bombesikkert det, men som du sier kan hull i serversoftware allikevel gi en hacker tilgang.

Men at sikkerheten nødvendigvis blir dårligere med "flatfiler" stemmer da ikke. Så lenge man ikke har gjort noen feil i oppsettet så blir det jo ingen hull.

Derimot er det nok adskillig mer jobb og lage sitt eget sikre "flatfil"-system en å ta i bruk en database-server.

Skrevet
For å forhindre "spamming" av scriptet, kan du jo bruke session variabel, nesten som et login script, der man bare får oppdatert en gang så lenge session varer.

7633349[/snapback]

Verdiløst. Det er ikkje vanskelig å få en ny session om du vil, og php er heller ikkje laga for at det skal vere vanskeleg å få ny session. Hugs på at en spambot ikkje oppfører seg slik som en nettleser mtp. cookies, javascript o.l.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...