Salasanojen replikoiminen Djangoon
Django tallentaa normaalisti salasanat SHA1-hasheina, joissa on mukana myös 5-merkkinen salt. Mutta jos salasanoja replikoi jostain toisesta systeemistä Djangoon, ne voi tallentaa myös MD5-hasheina tai ilman salttia. Tämä tarkoittaa, että melkein mistä tahansa tyypillisestä web-pohjaisesta käyttäjärekisteristä on suhteellisen helppoa replikoida käyttäjätunnukset ja salasanat Djangoon.
Djangon itse luoma salasanakenttä näyttää tietokannassa suurin piirtein tältä:
sha1$abcde$9f228544172d611cbfb5b8c7111f51aac0a166ba
Kentässä on siis peräkkäin algoritmi (sha1), salt (abcde) ja itse hashi (9f228544172d611cbfb5b8c7111f51aac0a166ba) dollarimerkeillä eroteltuna.
Jos oletetaan, että legacy-järjestelmässä on käytetty pelkkää MD5-hashia ilman saltteja, niin siellä tietokantakenttään on tallennettu luultavasti jotain tällaista:
5f4dcc3b5aa765d61d8327deb882cf99
Tämä voidaan replikoida suoraan Djangoon kirjoittamalla salasanakenttä tietokantaan tässä muodossa:
md5$$5f4dcc3b5aa765d61d8327deb882cf99
Vanha salasana toimii nyt normaalisti sisäänkirjautumiseen. Kun salasanaa sitten joskus vaihdetaan, se korvautuu uudella SHA1-hashilla, jossa on salt mukana.
PS. Papukaijamerkki kaikille hakkereille, jotka osaavat päätellä tuosta, mitä salasanaa käytin esimerkeissä. ;-)
0 Comments
You can use Markdown to format your comment:
- > quoted text
- *italic* text
- **bold** text
- `code block` (multi-line is ok, whitespace is preserved)
- [link text](http://www.google.com "link title")
Separate paragraphs in your text with two newlines