Gå til innhold

Hindre "include" av ekstern URL


Anbefalte innlegg

Skrevet (endret)

Har oppdaget en alvorlig sikkerhets-svakhet i et script jeg har! :O

 

Jeg setter $path="/full/url/til/scriptet/"; i config.inc.php og kjører i script.php:

include('config.inc.php');

include($path.'enfil.php');

 

Problemet:

Om register_globals=off så kan man da kjøre:

http://www.minserver.com/script.php?path=h...hackertool.txt?

 

Om da hackertool.txt inneholder PHP-kode blir denne kjørt/parset på serveren min, noe som er absolutt ikke ønskelig! :(

 

Kan løses med:

* .htaccess-fil hvor register_globals settes til "on", men ikke alle hoster støtter slik "overstyring".

* Med "open_basedir", men dette må settes i php.ini eller httpd.conf

 

Er det noe jeg kan gjøre i en PHP-fil (ini_set eller noe?) som sikrer meg mot slike "angrep"?

 

Edit:

Ser ut til at jeg faktisk har GLEMT å inkludere config.inc.php, og det er det som skaper problemet, da $path ikke er satt i det heletatt... :(

Men, uansett vil jeg beskytte meg mot slike "forglemmelser", tips?

Endret av ZoRaC
Videoannonse
Annonse
Skrevet (endret)

Når register_globals er OFF kan man ikke sette en variabel via URLen hvis ikke man har brukt super globals i koden. Noe du ikke har gjort. Du henter jo fra konfigfil.

 

Så denne: http://www.minserver.com/script.php?path=h...hackertool.txt vil ikke fungere med register_globals off.

 

edit;

Man vil ikke parse eksterne php-filer på den måten uansett. Man får kun outputen av det php-scriptet. Enten blir det parset på remote server, eller så sender "hackeren" bare kildekoden.. Ikke noe stress.

Endret av arnizzz
Skrevet

Dette er et problem med at register_global er ON, og du kan gjøre fint lite med det. Dette er kort og greit hvorfor register_global er direkte idioti å ha på.

Skrevet
...

Man vil ikke parse eksterne php-filer på den måten uansett. Man får kun outputen av det php-scriptet. Enten blir det parset på remote server, eller så sender "hackeren" bare kildekoden.. Ikke noe stress.

6119993[/snapback]

Å joda. Hvis jeg lagrer en .txt fil med:

<?php
deleteSystem("evilCode");
?>

Og du inkluderer den blir koden kjørt :(

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