SiXSS

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 18. marts 2019; checks kræver 16 redigeringer .

SiXSS ( engelsk  Sql Injection Сross Site Scripting  - "Cross -site scripting i nærvær af SQL-injektion ") - en type angreb på sårbare interaktive informationssystemer på nettet ; indsprøjtning af ondsindede scripts udført på klientcomputeren på siden udstedt af systemet ved at injicere kode i SQL-injektion. Denne sårbarhed opstår typisk på klientsiden, når udskrivbare felter udledes gennem SQL-injektion.

Beskrivelse

For at et angreb kan ske, skal der være to ting på serveren.

  1. Webstedsudvikleren tillod indsprøjtning af SQL-kode i nogle forespørgsler.
  2. Anmodningen (mere farlig, hvis den er den samme som i punkt 1) returnerer enhver information, der er direkte indlejret i den endelige HTML, for eksempel:
    • Webmasteren ved med sikkerhed, at der ikke er HTML-tegn i noget felt (f.eks. i brugernavnet), og undslipper det ikke.
    • Hvis webstedet er skrevet i et dynamisk skrevet sprog, kan numeriske felter også være sårbare, og det giver ingen mening at undslippe dem.
    • Fragmenter af webstedets design.
    • Cachelagrede HTML-sider.

Angrebet er cross-site scripting (XSS) udført gennem en "forgiftet" anmodning. Skaden fra det er som fra almindelig XSS: den kan stjæle brugercookies, inklusive sessions - id'et og andre følsomme oplysninger, der er gemt på klienten, udføre kommandoer på vegne af brugeren.

Som enhver XSS kan SiXSS afspejles (det ondsindede script er gemt i anmodningen) og lagret (det ondsindede script er gemt i databasen).

Eksempel

Lad os antage, at serveren har en database, der indeholder en tabel med formen:

OPRET DATABASE cms ; BRUG cms ; TILDEL VALG cms . * TIL 'user_noprivs' @ 'localhost' IDENTIFICERET MED PASSWORD '4f665d3c1e638813' ; CREATE TABLE content_table ( id INT PRIMARY KEY AUTO_INCREMENT , content TEXT ); INSERT INTO content_table ( content ) VALUES ( 'Min bank [p] Bruger: [input type=\"tekst\" navn=\"brugernavn\"] Adgangskode: [input type=\"adgangskode\" navn=\"pass\" "] [input type=send værdi=\"Log på\"] ' );

og der er en PHP-fil som denne:

Min bank

<? php if ( @ isset ( $_GET [ 'id' ])){ $myconns = @ mysql_connect ( \" 127.0.0.1 \" , \" user_noprivs \" , \" unbr34k4bё3 ! \" ) eller ( \" undskyld kan 't forbinde\"); @mysql_select_db(\"cms\") eller die(\"undskyld, jeg kan ikke vælge DB \" ); $sql_query = @ mysql_query ( \" vælg indhold fra content_table hvor id = \" . $_GET [ 'id' ]) eller ( \" Beklager forkert SQL - forespørgsel \" ); // ups SQL Injection-^ while ( $tmp = @ mysql_fetch_row ( $sql_query )) echo $tmp [ 0 ]; //ekkoer resultatet som HTML-kode } else { echo \" Welcome to My Bank \" . Log ind . \"\" ; } ?>

Som du kan se, skal resultaterne af forespørgslen til MySQL overføres til brugeren. Vi kan se denne HTML-side, men vi vil ikke se noget særligt på den. Ved at besøge siden og klikke på linket vil brugeren modtage en invitation til godkendelse.

Ud fra dette kan det konkluderes, at:

Problemet opstår i det tilfælde, hvor noget tekst fra databasen går direkte til HTML-siden. Hvis vi forsøger at bruge det klassiske SQL-Injection-angreb, får vi nogle oplysninger om SQL-serveren og intet andet. Men der er en sårbarhed på klientsiden. Ved at bruge UNION SELECT vil en angriber være i stand til at indsætte vilkårlig tekst.

Angreb

For at omgå de inkluderede gpc_magic_quotes, brug "0xXX" HEX i stedet for tekst: mysql] vælg HEX('[ script]alert("SiXSS");[/script]');

+------------------------------------------------ --------------------+ | HEX ( '[script]alert(\"SiXSS\");[/script]' ) | +------------------------------------------------ --------------------+ | 3 C7363726970743E616C65727428222536958535322293B3C2F 7363726970743 E | +------------------------------------------------ --------------------+ 1 række i sæt ( 0,00 sek )

og indsæt dette i HTTP-anmodningen:

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

Svaret vil være den samme side, men derudover vil dette script blive udført på klientsiden.

([ script ] advarsel ( " SiXSS " );[ /script])

Dette vil være SQL Injection for Cross Site Scripting (SiXSS)

Eksempel taget fra SecurityLab- webstedet

Links

Diverse

Disse angreb er klassificeret i overensstemmelse med klassificeringen af ​​SQL-injektion og XSS-angreb , da de er en kombination af to forskellige typer angreb.

Noter