Sikkerhed

SQL afkortningsangreb

SQL afkortningsangreb
SQL-trunkeringssårbarhed opstår, når en database trunkerer brugerindgangen på grund af en begrænsning af længden. Angribere kan indsamle oplysninger om længden af ​​et kritisk felt (såsom et brugernavn) og udnytte disse oplysninger for at få uautoriseret adgang. Angribere kan logge ind som en anden bruger, såsom en administrator, med deres egen registrerede adgangskode.

SQL-trunkeringssårbarhed findes normalt i MySQL-databaser. Denne sårbarhed blev først beskrevet i CVE-2008-4106, som var relateret til WordPress CMS.

Sådan fungerer SQL-trunkeringsangreb

Dette angreb fungerer på grund af trunkering af brugerinput i databaser ved hjælp af funktionerne 'valg' og 'indsættelse'.

Antag at en udvikler opretter tabellen "brugere" via følgende forespørgsel:

Opret tabelbrugere (
user_id INT IKKE NULL AUTO_INCREMENT,
brugernavn VARCHAR (20) IKKE NULL,
adgangskode VARCHAR (40) IKKE NULL,
PRIMÆR NØGLE (user_id)
);

Ved hjælp af dette skema, hvis udvikleren opretter en admin-konto med følgende:

user_name = 'admin'
adgangskode = “secret_p4ssw0ord”

Disse legitimationsoplysninger er åbenbart ikke offentlige. Der er kun en administratorkonto i databasen, og hvis en angriber forsøger at registrere en anden konto med 'admin' brugernavnet, vil angriberen mislykkes på grund af databundets redundanskontrol. Angriberen kan stadig omgå denne redundanskontrol for at tilføje en anden admin-konto ved at udnytte SQL Truncation-sårbarheden. Antag, at angriberen registrerer en anden konto med følgende input:

Brugernavn = 'adminxxxxxxxxxxxxxxx tilfældigt'
(x er mellemrumene)
&
Adgangskode = ”RandomUser”

Databasen vil tage 'brugernavn' (26 tegn) og kontrollere, om dette allerede eksisterer. Derefter afkortes brugernavn-input, og 'admin' ('admin' med plads) vil blive indsat i databasen, hvilket resulterer i to duplikerede admin-brugere.

Angriberen er derefter i stand til at oprette en 'admin' bruger med sin egen adgangskode. Nu har databasen to admin 'brugernavn' poster, men med forskellige adgangskoder. Angriberen kan logge ind med de nyoprettede legitimationsoplysninger for at få et adminpanel, fordi både brugernavn “admin” og “admin” er ens for databaseniveau. Nu vil vi se på et eksempel på et praktisk angreb.

Prøveangreb

I dette eksempel tager vi et scenarie fra hjemmesiden.org. Overthewire-samfundet leverer wargame-CTF'er, som vi kan øve vores sikkerhedskoncepter på. Scenariet med SQL-afkortning forekommer i natas-spil niveau 26-> 27. Vi kan få adgang til niveauet ved hjælp af følgende:

URL: http: // natas27.natas.laboratorier.overtråd.org
Brugernavn: natas27
Adgangskode: 55TBjpPZUUJgVP5b3BnbG6ON9uDPVzCJ

Dette niveau er tilgængeligt på: https: // overthewire.org / wargames / natas / natas27.html. Du får vist en login-side, der er sårbar over for et SQL-trunkeringsangreb.

Efter inspektion af kildekoden vil du se, at længden af ​​brugernavnet er 64, som vist nedenfor.

En bruger ved navn 'natas28' findes allerede. Vores mål er at oprette en anden bruger ved navn 'natas28' ved hjælp af SQL_truncation-angrebet. Så vi vil indtaste natas28 efterfulgt af 57 mellemrum og et tilfældigt alfabet (i vores tilfælde a), brugernavn og enhver adgangskode. Bogstavet 'a' er ikke synligt på skærmbilledet på grund af brugernavnet på 65 tegn. Efter oprettelsen af ​​brugerkontoen vil du kunne se '-en.''

Hvis databasen indeholder sql_truncation-sårbarhed, skal databasen nu have to 'natas28' brugernavne. Et brugernavn indeholder vores adgangskode. Lad os prøve at indtaste legitimationsoplysningerne på login-siden.

Nu er vi logget ind som 'natas28' bruger.

Afbødning

For at afbøde dette angreb bliver vi nødt til at overveje flere faktorer.

Lad os for eksempel kontrollere den strenge tilstand ved hjælp af følgende forespørgsel:

mysql> vælg @@ sql_mode

Vi opretter en database og tabellens brugere.''

mysql> Opret DATABASE-test
Forespørgsel OK, 1 række berørt (0.02 sek)
mysql> Brug test
Database ændret
mysql> Opret TABEL-brugere (brugernavn VARCHAR (10), adgangskode VARCHAR (10));
Forespørgsel OK, 0 rækker berørt (0.05 sek)

Dernæst opretter vi en adminbruger med legitimationsoplysninger ved hjælp af INSERT-forespørgslen.

mysql> INDSÆT I brugerVÆRDIER ('admin', 'password1');
Forespørgsel OK, 1 række berørt (0.01 sek)

Vi kan se 'brugernes' tabeloplysninger ved hjælp af 'vælg * fra brugerne'.

Brugernavnets længde er 10 tegn. Nu prøver vi SQL-trunkeringsangrebet.

Når vi prøver at indtaste følgende:

Brugernavn = 'adminxxxxxa'
(x er mellemrumene)
&
Adgangskode = 'pass2'

Vi får en fejl, hvilket betyder, at streng tilstand er helt effektiv.

mysql> INDSÆT I brugerværdier ('admin a', 'pass2')
FEJL 1406 (22001): Data er for lange til kolonne 'brugernavn' i række 1

Uden streng tilstand aktiveret udsender databasen advarsler, men indsætter stadig dataene i tabellen.

Konklusion

Angribere kan få adgang til konti med højt privilegium, hvis sårbarheden sql_trunction findes i din applikation. Angriberen kan nemt få oplysninger om et brugernavn og dets databaselængde ved hjælp af de kritiske felter og derefter oprette det samme brugernavn efterfulgt af mellemrum og tilfældigt alfabet efter minimumlængden, hvilket resulterer i oprettelse af flere konti med højt privilegium. Denne sårbarhed er kritisk, men det kan undgås, hvis du tager nogle sikkerhedsforanstaltninger, såsom at aktivere streng tilstand for brugerindgange og gøre det følsomme felt til den primære nøgle i databasen.

Mus Føj musbevægelser til Windows 10 ved hjælp af disse gratis værktøjer
Føj musbevægelser til Windows 10 ved hjælp af disse gratis værktøjer
I de senere år har computere og operativsystemer udviklet sig meget. Der var et tidspunkt, hvor brugerne skulle bruge kommandoer til at navigere genne...
Mus Styr og administrer musebevægelse mellem flere skærme i Windows 10
Styr og administrer musebevægelse mellem flere skærme i Windows 10
Dual Display Mouse Manager lader dig kontrollere og konfigurere musebevægelse mellem flere skærme ved at bremse dens bevægelser nær grænsen. Windows 1...
Mus WinMouse giver dig mulighed for at tilpasse og forbedre musemarkørens bevægelse på Windows-pc
WinMouse giver dig mulighed for at tilpasse og forbedre musemarkørens bevægelse på Windows-pc
Hvis du vil forbedre standardfunktionerne for din musemarkør, skal du bruge freeware WinMouse. Det tilføjer flere funktioner, der hjælper dig med at f...