SiXSS

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 18. března 2019; kontroly vyžadují 16 úprav .

SiXSS ( anglicky  Sql Injection Сross Site Scripting  - "Cross- site scripting v přítomnosti SQL injection ") - typ útoku na zranitelné interaktivní informační systémy na webu ; vložení škodlivých skriptů spuštěných na klientském počítači do stránky vydané systémem vložením kódu do SQL injection. K této chybě zabezpečení obvykle dochází na straně klienta, když jsou tisknutelná pole odvozena prostřednictvím vkládání SQL.

Popis

Aby k útoku došlo, musí být na serveru dvě věci.

  1. Vývojář webu povolil vložení kódu SQL do nějakého dotazu.
  2. Požadavek (nebezpečnější, pokud je stejný jako v bodě 1) vrací jakékoli informace, které jsou přímo vložené do finálního HTML, například:
    • Správce webu s jistotou ví, že v žádném poli (například v uživatelském jménu) nejsou znaky HTML, a neunikne mu.
    • Pokud je web napsán v dynamicky psaném jazyce, mohou být zranitelná i číselná pole a nemá smysl jim unikat.
    • Fragmenty designu webu.
    • Stránky HTML uložené v mezipaměti.

Útok je cross-site scripting (XSS) prováděný prostřednictvím „otráveného“ požadavku. Škody způsobené běžným XSS: mohou ukrást uživatelské soubory cookie , včetně ID relace a dalších citlivých informací uložených na klientovi, provádět příkazy jménem uživatele.

Jako každý XSS může být i SiXSS reflektován (škodlivý skript je uložen v požadavku) a uložen (škodlivý skript je uložen v databázi).

Příklad

Předpokládejme, že server má databázi, která obsahuje tabulku ve tvaru:

VYTVOŘIT DATABÁZI cms ; USE cms ; GRANT SELECT ON cms . * TO 'user_noprivs' @ 'localhost' IDENTIFIKOVANÉ HESLEM ' 4f665d3c1e638813 ' ; CREATE TABLE tabulka obsahu ( id INT PRIMARY KEY AUTO_INCREMENT , obsah TEXT ); INSERT INTO content_table ( content ) VALUES ( 'Moje banka [p] Uživatel: [input type=\"text\" name=\"username\"] Heslo: [input type=\"password\" name=\"pass\ "] [input type=submit value=\"Přihlášení\"] ' );

a existuje soubor PHP, jako je tento:

Moje banka

<? php if ( @ isset ( $_GET [ 'id' ])){ $myconns = @ mysql_connect ( \" 127.0.0.1 \" , \" user_noprivs \" , \" unbr34k4bё3 ! \" ) nebo zemřít ( \" sorry can 'nepřipojit\"); @mysql_select_db(\"cms\") or die(\"omlouvám se , ale nelze vybrat DB \" ); $sql_query = @ mysql_query ( \" vybrat obsah z tabulky obsahu , kde id = \" . $_GET [ 'id' ]) nebo zemřít ( \" Omlouvám se za špatný SQL dotaz \" ); // oops SQL Injection-^ while ( $tmp = @ mysql_fetch_row ( $sql_query )) echo $tmp [ 0 ]; //ozve se výsledek jako HTML kód } else { echo \" Vítejte v bance \" . Přihlášení . \"\" ; } ?>

Jak vidíte, výsledky dotazu na MySQL bude nutné přenést k uživateli. Tuto html stránku si můžeme prohlédnout, ale nic zvláštního na ní neuvidíme. Návštěvou stránky a kliknutím na odkaz obdrží uživatel pozvánku k autorizaci.

Z toho lze usoudit, že:

Problém nastává v případě, kdy nějaký text z databáze jde přímo na HTML stránku. Pokud zkusíme použít klasický SQL-Injection útok, získáme nějaké informace o SQL serveru a nic jiného. Na straně klienta je ale zranitelnost. Pomocí UNION SELECT bude útočník schopen vložit libovolný text.

Záchvat

Chcete-li obejít zahrnuté gpc_magic_quotes, použijte "0xXX" HEX místo textu: mysql] select HEX('[ script]alert("SiXSS");[/script]');

+-------------------------------------------------- ---------------------+ | HEX ( '[script]alert(\"SiXSS\");[/script]' ) | +-------------------------------------------------- ---------------------+ | 3 C7363726970743E616C65727428222536958535322293B3C2F 7363726970743 E | +-------------------------------------------------- --------------------+ 1 řádek v sadě ( 0,00 s )

a vložte toto do požadavku HTTP:

http://www.mybank.com?id=1+union+select+ _ _ 0x3C7363726970743E616C6572742822536958535322293B3C 2 F7363726970743E

Odpověď bude stejná stránka, ale navíc bude tento skript spuštěn na straně klienta.

([ skript ] upozornění ( SiXSS );[ /script])

Toto bude SQL Injection pro Cross Site Scripting (SiXSS)

Příklad převzat z webu SecurityLab

Odkazy

Různé

Tyto útoky jsou klasifikovány v souladu s klasifikací SQL injection a XSS útoků , protože se jedná o kombinaci dvou různých typů útoků.

Poznámky