Bezpečnosť

SQL Truncation Attack

SQL Truncation Attack
Zraniteľnosť SQL Truncation nastáva, keď databáza skráti vstup užívateľa z dôvodu obmedzenia dĺžky. Útočníci môžu zhromažďovať informácie o dĺžke kritického poľa (napríklad používateľské meno) a využívať ich na získanie neoprávneného prístupu. Útočníci sa môžu prihlásiť ako niektorí ďalší používatelia, napríklad ako správcovia, pomocou svojich vlastných registrovaných hesiel.

V databázach MySQL zvyčajne existuje chyba skrátenia SQL. Táto chyba bola prvýkrát popísaná v CVE-2008-4106, ktorá sa týkala WordPress CMS.

Ako fungujú skrátené útoky SQL

Tento útok funguje z dôvodu oklieštenia vstupu používateľa v databázach pomocou funkcií „výber“ a „vloženie“.

Predpokladajme, že vývojár vytvorí tabuľku „používatelia“ pomocou nasledujúceho dotazu:

vytvoriť používateľov tabuľky (
user_id INT NIE JE NULL AUTO_INCREMENT,
meno_pouzivatela VARCHAR (20) NIE NULL,
heslo VARCHAR (40) NIE NULL,
PRIMÁRNY KLÍČ (user_id)
);

Ak pomocou tejto schémy vytvorí vývojár účet správcu s týmto:

user_name = 'admin'
heslo = “secret_p4ssw0ord”

Je zrejmé, že tieto poverovacie listiny nie sú verejné. V databáze je iba jeden účet správcu. Ak sa útočník pokúsi zaregistrovať iný účet pomocou používateľského mena „správca“, útočník zlyhá z dôvodu kontroly nadbytočnosti databázy. Útočník môže túto kontrolu nadbytočnosti obísť a pridať ďalší účet správcu využitím chyby zabezpečenia Truncation SQL. Predpokladajme, že útočník zaregistruje iný účet s týmto vstupom:

User_name = 'adminxxxxxxxxxxxxxxxxxrandom'
(x sú medzery)
&
Heslo = „RandomUser“

Databáza prevezme meno_uživateľa (26 znakov) a skontroluje, či už existuje. Potom bude vstup user_name skrátený a do databázy bude vložený 'admin' ('admin' s medzerou), čo povedie k dvom duplicitným užívateľom admin.

Útočník je potom schopný vytvoriť používateľa „admin“ s vlastným heslom. Databáza má teraz dva položky správcu „user_name“, ale s rôznymi heslami. Útočník sa môže prihlásiť pomocou novovytvorených prihlasovacích údajov, aby získal panel správcu, pretože obe používateľské mená „admin“ a „admin“ sú na úrovni databázy rovnaké. Teraz sa pozrieme na ukážkový praktický útok.

Ukážka útoku

V tomto príklade si vezmeme scenár z overthewire webu.org. Komunita overthewire poskytuje bojové CTF, na ktorých si môžeme precvičiť naše bezpečnostné koncepty. Scenár skrátenia SQL nastáva v hre natas úroveň 26-> 27. Na úroveň môžeme získať prístup pomocou nasledujúcich nástrojov:

URL: http: // natas27.natas.laboratóriá.overthewire.org
Používateľské meno: natas27
Heslo: 55TBjpPZUUJgVP5b3BnbG6ON9uDPVzCJ

Táto úroveň je k dispozícii na adrese: https: // overthewire.org / wargames / natas / natas27.html. Zobrazí sa prihlasovacia stránka, ktorá je zraniteľná voči útoku Truncation SQL.

Po kontrole zdrojového kódu uvidíte, že dĺžka používateľského mena je 64, ako je uvedené nižšie.

Používateľ s menom „natas28“ už existuje. Naším cieľom je vytvoriť iného používateľa s menom 'natas28' pomocou útoku SQL_truncation. Zadáme teda natas28, po ktorom bude nasledovať 57 medzier a náhodná abeceda (v našom prípade a), používateľské meno a akékoľvek heslo. Písmeno „a“ nie je na snímke obrazovky viditeľné kvôli používateľskému menu s dĺžkou 65 znakov. Po vytvorení používateľského účtu uvidíte 'a.„

Ak databáza obsahuje chybu zabezpečenia sql_truncation, potom by mala mať táto databáza dve používateľské mená „natas28“. Jedno užívateľské meno bude obsahovať naše heslo. Skúsme zadať poverenia na prihlasovacej stránke.

Teraz sme prihlásení ako používateľ „natas28“.

Zmiernenie

Aby sme tento útok zmiernili, budeme musieť zvážiť viac faktorov.

Skontrolujme napríklad prísny režim pomocou nasledujúceho dotazu:

mysql> vyberte @@ sql_mode

Vytvoríme databázu a používateľov tabuľky.„

mysql> VYTVORIŤ test DATABÁZY
Dotaz v poriadku, ovplyvnený 1 riadok (0.02 s)
mysql> Použiť test
Databáza sa zmenila
mysql> CREATE TABLE používatelia (užívateľské meno VARCHAR (10), heslo VARCHAR (10));
Dopyt v poriadku, ovplyvnených 0 riadkov (0.05 s)

Ďalej pomocou dotazu INSERT vytvoríme správcovského používateľa s povereniami.

mysql> VLOŽIŤ HODNOTY používateľov ('admin', 'heslo1');
Dotaz v poriadku, ovplyvnený 1 riadok (0.01 s)

Informácie v tabuľke „používatelia“ môžeme zobraziť pomocou možnosti „vybrať * od používateľov“.

Dĺžka používateľského mena je 10 znakov. Teraz vyskúšame útok skrátenia SQL.

Keď sa pokúsime zadať nasledujúce:

Užívateľské meno = 'adminxxxxxa'
(x sú medzery)
&
Heslo = 'pass2'

Dostaneme chybu, čo znamená, že prísny režim je úplne efektívny.

mysql> VLOŽIŤ do užívateľských hodnôt ('admin a', 'pass2')
CHYBA 1406 (22001): Údaje príliš dlhé pre stĺpec „používateľské meno“ v riadku 1

Bez povoleného prísneho režimu bude databáza odosielať varovania, ale bude stále vkladať údaje do tabuľky.

Záver

Útočníci môžu získať prístup k účtom s vysokými oprávneniami, ak vo vašej aplikácii existuje chyba zabezpečenia sql_trunction. Útočník môže ľahko získať informácie o používateľskom mene a jeho dĺžke databázy pomocou kritických polí, potom vytvoriť rovnaké používateľské meno, po ktorom nasledujú medzery a náhodná abeceda po minimálnej dĺžke, čo vedie k vytvoreniu viacerých účtov s vysokými právami. Táto zraniteľnosť je kritická, ale je možné sa jej vyhnúť, ak urobíte nejaké bezpečnostné opatrenia, napríklad aktivujete prísny režim pre vstupy používateľov a nastavíte citlivé pole ako hlavný kľúč v databáze.

Hry Nainštalujte si najnovšiu strategickú hru OpenRA na Ubuntu Linux
Nainštalujte si najnovšiu strategickú hru OpenRA na Ubuntu Linux
OpenRA je herný engine Libre / Free Real Time Strategy, ktorý obnovuje rané hry z Westwoodu, ako napríklad klasické Command & Conquer: Red Alert. Dist...
Hry Nainštalujte si najnovší Dolphin Emulator pre Gamecube a Wii na Linuxe
Nainštalujte si najnovší Dolphin Emulator pre Gamecube a Wii na Linuxe
Emulátor Dolphin vám umožní hrať vybrané hry Gamecube a Wii na osobných počítačoch Linux (PC). Emulátor Dolphin, ktorý je voľne dostupným emulátorom ...
Hry Ako používať GameConqueror Cheat Engine v Linuxe
Ako používať GameConqueror Cheat Engine v Linuxe
Tento článok obsahuje sprievodcu používaním cheatovacieho modulu GameConqueror v systéme Linux. Mnoho používateľov, ktorí hrajú hry v systéme Windows,...