Electronic Code Book (ECB)
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
(ECB) Elektronska knjiga kodova - simetrična šema enkripcije koja menja svaki blok otvorenog teksta sa blokom šifrovanog teksta. To je najjednostavnija šema enkripcije. Glavna ideja je da se podeli otvoreni tekst na blokove od N bita (zavisi od veličine bloka ulaznih podataka, algoritma enkripcije) i zatim da se enkriptuje (dekriptuje) svaki blok otvorenog teksta koristeći jedini ključ.
Korišćenje ECB ima više bezbednosnih implikacija:
Blokovi iz šifrovane poruke mogu biti uklonjeni
Blokovi iz šifrovane poruke mogu biti pomerani
Zamislite da se prijavljujete u aplikaciju nekoliko puta i uvek dobijate isti kolačić. To je zato što je kolačić aplikacije <korisničko_ime>|<lozinka>
.
Zatim, generišete nove korisnike, oboje sa istom dugom lozinkom i gotovo istim korisničkim imenom.
Otkrivate da su blokovi od 8B gde su informacije obojice korisnika iste jednaki. Zatim, zamišljate da bi to moglo biti zato što se koristi ECB.
Kao u sledećem primeru. Posmatrajte kako ova 2 dekodirana kolačića imaju nekoliko puta blok \x23U\xE45K\xCB\x21\xC8
.
Ovo je zato što korisničko ime i lozinka tih kolačića sadrže nekoliko puta slovo "a" (na primer). Blokovi koji su različiti su blokovi koji sadrže barem 1 različit karakter (možda delimiter "|" ili neka neophodna razlika u korisničkom imenu).
Sada, napadaču je potrebno samo da otkrije da li je format <username><delimiter><password>
ili <password><delimiter><username>
. Da bi to uradio, može jednostavno generisati nekoliko korisničkih imena sa sličnim i dugim korisničkim imenima i lozinkama dok ne pronađe format i dužinu delimitera:
2
2
4
8
3
3
6
8
3
4
7
8
4
4
8
16
7
7
14
16
Znajući format kolačića (<username>|<password>
), kako bi se pretvarao da je korisnik admin
, kreirajte novog korisnika pod imenom aaaaaaaaadmin
i dobijte kolačić i dekodirajte ga:
Možemo videti obrazac \x23U\xE45K\xCB\x21\xC8
koji je prethodno kreiran sa korisničkim imenom koje je sadržalo samo a
.
Zatim, možete ukloniti prvi blok od 8B i dobićete važeći kolačić za korisničko ime admin
:
U mnogim bazama podataka je isto pretraživati WHERE username='admin';
ili WHERE username='admin ';
(Obratite pažnju na dodatne razmake)
Dakle, drugi način da se lažno predstavi korisnik admin
bio bi:
Generisati korisničko ime koje: len(<username>) + len(<delimiter) % len(block)
. Sa veličinom bloka od 8B
možete generisati korisničko ime pod nazivom: username
, sa delimiterom |
deo <username><delimiter>
će generisati 2 bloka od 8B.
Zatim, generisati lozinku koja će popuniti tačan broj blokova koji sadrže korisničko ime koje želimo da lažno predstavimo i razmake, kao: admin
Kolačić ovog korisnika će se sastojati od 3 bloka: prva 2 su blokovi korisničkog imena + delimiter, a treći je lozinka (koja lažno predstavlja korisničko ime): username |admin
Zatim, samo zamenite prvi blok sa poslednjim i lažno ćete predstavljati korisnika admin
: admin |username
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)