SQL-Injektio

(MySQL) UNION ja salasanatiivisteiden (hash) murtaminen

Keskitaso
45 min

Tiivistealgoritmit

Nykyisin on onneksi melko harvinaista, että sovellukset tallentavat käyttäjien salasanat selkokielisenä tietokantaan. Tällöinhän hyökkääjä, joka saisi tietokannan varastettua, saisi läjän salasanoja, joita koittaa esimerkiksi käyttäjien tileihin muissa palveluissa (tästä syystä salasanoja ei saa uudelleenkäyttää).

Sen sijaan salasanat yleensä "hashataan", eli ajetaan yksisuuntaisen tiivistealgoritmin läpi, joita ovat esimerkiksi MD5, SHA1, jne.

Esimerkiksi tekstin "kissa123" MD5-tiiviste on 13c3a117d0013ab22417c8edca354b76. Sovellus voisi siis tallentaa käyttäjän tietokantaan seuraavasti:

Email: jaska.jokunen@example.com

PasswordHash: 13c3a117d0013ab22417c8edca354b76

Kun Jaska Jokunen kirjautuu, sovellus tarkistaa että onko MD5(jaskan syöttämä salasana) == tietokantaan tallennettu salasanatiiviste.

Hyökkääjä sen sijaan ei voi suoraan muuttaa tiivistettä 13c3a117d0013ab22417c8edca354b76 takaisin muotoon "kissa123". Tiivistealgoritmit ovat yksisuuntaisia.

Hyökkääjä voi kuitenkin arvailla raa'alla laskentateholla ja sanalistoilla.

  • Onko "pokemon" tiiviste 13c3a117d0013ab22417c8edca354b76? Ei.
  • Onko "kitara456" tiiviste 13c3a117d0013ab22417c8edca354b76? Ei.
  • Onko "kissa123" tiiviste 13c3a117d0013ab22417c8edca354b76? Kyllä.

Tällaista arvailua kutsutaan yleensä salasanan kräkkäämiseksi.

Admin-käyttäjän salasanatiivisteen hankkiminen

Käytä tuttua ja turvallista luottokorttihaussa olevaa SQL-injektiohaavoittuvuutta ja hae admin-käyttäjän salasanatiiviste. Askeleet ovat täsmälleen samat kuin tehtävässä, jossa hait järjestelmänvalvojan salasanan, silloin salasana vain oli selkokielinen. Tässä askeleet muistin virkistykseksi (nämä kaikki on opittu aiemmin kurssilla):

  • Karkaa hipsulla LIKE-lausekkeen tekstin sisältä ja kommentoi loput kyselystä kahdella viivalla (ja välilyönnillä), jotta kysely menee taas läpi.
  • Lisää kyselyn perään ORDER BY 1, ORDER BY 2, jne. kunnes saat selville kyselyn palauttamien sarakkeiden määrän.
  • Lisää UNION SELECT -lauseke jossa on oikea määrä sarakkeita. Kokeile ensin vaikka NULL-arvoilla ja sitten koita löytää sarake, joka heijastuu sovelluksessa, eli reflektiopiste.
  • Laita UNION SELECT hakemaan email- ja password-sarakkeet user-taulusta. Suodata rivit sellaisiin, joiden admin-sarakkeen arvo on True.

Voit vaihtelun vuoksi palauttaa sekä käyttäjätunnuksen että salasanatiivisteen yhdessä sarakkeessa, hyödyntäen MySQL concat-funktiota.

Malli:

UNION SELECT NULL,NULL,NULL,NULL,NULL,NULL,concat(email, ":", password),NULL FROM user WHERE admin=True

Tiivisteen murtaminen

Käytetään MD5-tiivisteen murtamiseen John The Ripper (JTR) -työkalua. Avaa hyökkääjän terminaali ja kopioi admin-käyttäjän tiiviste tekstitiedostoon nimeltä hash.txt. Esimerkiksi näin:

Seuraavaksi aja JTR (john) seuraavilla asetuksilla:

  • Tiivistealgoritmi (--format): raw-md5
  • Salasanalista, jota käytetään arvaamiseen (--wordlist): /usr/share/wordlists/rockyou.txt
  • Tiedosto, josta tiiviste löytyy: hash.txt
john --format=raw-md5 --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

Tulosteen pitäisi olla jotain tämän suuntaista; tässä tapauksessa salasana oli "tucker".

Created directory: /root/.john Using default input encoding: UTF-8 Loaded 1 password hash (Raw-MD5 [MD5 256/256 AVX2 8x3]) Press 'q' or Ctrl-C to abort, almost any other key for status
tucker (?) 1g 0:00:00:00

DONE (2021-07-01 07:12) 100.0g/s 115200p/s 115200c/s 115200C/s football1..summer1

Voit ajaa vielä john --show komennon:

john --show --format=raw-md5 hash.txt

Komennon pitäisi tulostaa salasana.

?:tucker 1 password hash cracked, 0 left

Kirjaudu sisään aiemmin hakemallasi sähköpostilla ja kräkätyllä salasanalla, niin saat harjoituksen suoritettua.

MySQLI - Salasanatiivisteiden murtaminen

Tässä labrassa salasanat ovatkin tiivistealgoritmilla suojattuja, joten pääset kräkkäämään niitä JTR (John the Ripper) työkalulla.

Tavoite

Kirjaudu admin-käyttäjänä.

Tehtävät

Flag

Löydä lippu (flag) labraympäristöstä ja syötä se alle.

hakatemia pro

Valmis ryhtymään eettiseksi hakkeriksi?
Aloita jo tänään.

Hakatemian jäsenenä saat rajoittamattoman pääsyn Hakatemian moduuleihin, harjoituksiin ja työkaluihin, sekä pääset discord-kanavalle jossa voit pyytää apua sekä ohjaajilta että muilta Hakatemian jäseniltä.