SiXSS

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 18. maaliskuuta 2019 tarkistetusta versiosta . tarkastukset vaativat 16 muokkausta .

SiXSS ( englanniksi  Sql Injection Сross Site Scripting  - "Cross -site scripting in läsnä SQL-injektio ") - eräänlainen hyökkäys haavoittuvia interaktiivisia tietojärjestelmiä verkossa ; asiakastietokoneella suoritettujen haitallisten komentosarjojen lisääminen järjestelmän julkaisemalle sivulle lisäämällä koodia SQL-injektioon. Tyypillisesti tämä haavoittuvuus ilmenee asiakaspuolella, kun tulostettavat kentät päätellään SQL-injektion avulla.

Kuvaus

Jotta hyökkäys tapahtuisi, palvelimella on oltava kaksi asiaa.

  1. Sivuston kehittäjä salli SQL-koodin lisäämisen joihinkin kyselyihin.
  2. Pyyntö (vaarallisempi, jos sama kuin kohdassa 1) palauttaa kaikki tiedot, jotka on upotettu suoraan lopulliseen HTML-koodiin, esimerkiksi:
    • Verkkovastaava tietää varmasti, että missään kentässä (esimerkiksi käyttäjätunnuksessa) ei ole HTML-merkkejä, eikä vältä sitä.
    • Jos sivusto on kirjoitettu dynaamisesti kirjoitetulla kielellä, myös numeeriset kentät voivat olla haavoittuvia, eikä niitä ole järkevää jättää pois.
    • Fragmentteja sivuston suunnittelusta.
    • Välimuistissa olevat HTML-sivut.

Hyökkäys on sivustojen välistä komentosarjaa (XSS), joka tehdään "myrkytyspyynnön" kautta. Sen aiheuttama vahinko on kuin tavallisesta XSS:stä: se voi varastaa käyttäjän evästeitä , mukaan lukien istuntotunnuksen ja muut asiakkaalle tallennetut arkaluontoiset tiedot, suorittaa komentoja käyttäjän puolesta.

Kuten mikä tahansa XSS, SiXSS voidaan heijastaa (haitallinen komentosarja on tallennettu pyyntöön) ja tallentaa (haitallinen komentosarja on tallennettu tietokantaan).

Esimerkki

Oletetaan, että palvelimella on tietokanta, joka sisältää muotoa olevan taulukon:

LUO TIETOKANTA cms ; KÄYTÄ cms ; GRANT SELECT ON cms . * ' user_noprivs ' @ 'localhost': lle TUNNISTETTU SALASANALLA ' 4f665d3c1e638813 ' ; CREATE TABLE content_table ( id INT PRIMARY KEY AUTO_INCREMENT , content TEXT ); INSERT INTO content_table ( sisältö ) ARVOT ( 'Oma pankki [p] Käyttäjä: [syöttötyyppi=\"teksti\" nimi=\"käyttäjänimi\"] Salasana: [syöttötyyppi=\"salasana\" nimi=\"salasana\" "] [input type=submit value=\"Kirjaudu sisään\"] ' );

ja siellä on tällainen PHP-tiedosto:

Oma pankki

<? php if ( @ isset ( $ _GET [ 'id' ])){ $myconns = @ mysql_connect ( \" 127.0.0.1 \" , \" user_noprivs \" , \" unbr34k4bё3 ! \" ) tai kuolla ( \" anteeksi voi 't connect\"); @mysql_select_db(\"cms\") or die(\"Valitettavasti en voi valita DB: tä \" ); $sql_query = @ mysql_query ( \" valitse sisältö sisältötaulukosta jossa id = \ " . $_GET [ ' id' ]) tai kuole ( \" Anteeksi väärä SQL - kysely \" ); // oho SQL Injection-^ while ( $tmp = @ mysql_fetch_row ( $sql_query )) echo $tmp [ 0 ]; //toistaa tuloksen HTML-koodina } else { echo \ " Tervetuloa pankkiini \ " . Kirjaudu sisään . \"\" ; } ?>

Kuten näet, MySQL-kyselyn tulokset on välitettävä käyttäjälle. Voimme katsella tätä html-sivua, mutta emme näe siinä mitään erikoista. Vierailemalla sivulla ja napsauttamalla linkkiä käyttäjä saa valtuutuskutsun.

Tästä voidaan päätellä, että:

Ongelma ilmenee siinä tapauksessa, että osa tietokannan tekstistä menee suoraan HTML-sivulle. Jos yritämme käyttää klassista SQL-injektiohyökkäystä, saamme tietoa SQL-palvelimesta eikä mitään muuta. Mutta asiakaspuolella on haavoittuvuus. UNION SELECT -valinnan avulla hyökkääjä voi syöttää mielivaltaista tekstiä.

Hyökkäys

Ohitaksesi mukana olevat gpc_magic_quotes, käytä "0xXX" HEX:ää tekstin sijaan: mysql] select HEX('[ script]alert("SiXSS");[/script]');

+-------------------------------------------------- ---------------------+ | HEX ( '[script]alert(\"SiXSS\");[/script]' ) | +-------------------------------------------------- ---------------------+ | 3 C7363726970743E616C65727428222536958535322293B3C2F 7363726970743 E | +-------------------------------------------------- -------------------- + 1 rivi sarjassa ( 0.00 s )

ja liitä tämä HTTP-pyyntöön:

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

Vastaus on sama sivu, mutta lisäksi tämä skripti suoritetaan asiakaspuolella.

([ script ] hälytys ( " SiXSS " );[ /script])

Tämä on SQL Injection for Cross Site Scripting (SiXSS)

Esimerkki otettu SecurityLabin verkkosivuilta

Linkit

Muut

Nämä hyökkäykset luokitellaan SQL-injektio- ja XSS-hyökkäysten luokituksen mukaan , koska ne ovat kahden erilaisen hyökkäyksen yhdistelmä.

Muistiinpanot