(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5LHNRP9'); thecodest, höfundur hjá The Codest - Síða 10 af 13

Árásarsenari

  1. Árásandinn finnur XSS-veikleika á vefsíðu sem fórnarlambið notar, t.d. vefsíðu banka.
  2. Þolandi er nú innskráður á þessa síðu
  3. Árásandinn sendir fórnarlambinu tilbúna vefslóð.
  4. Brotaþoli smellir á vefslóðina.
  5. Á fórnarlambsins banki vefsíða, JavaScript kóði byrjar að framkvæma til að stöðva notandans gögn eða framkvæma millifærslu fyrir hans hönd á reikning árásaraðilans

Það er vert að taka fram að aðgerðir sem framkvæmdar eru fyrir hönd fórnarlambsins geta verið ósýnilegar fórnarlambinu, þar sem þær geta átt sér stað í bakgrunni með því að nota bankans forritaskil, eða árásaraðilinn getur framkvæmt þær síðar með gögnum sem þarf til auðkenningar, tokenum, kökum o.s.frv.

XSS-gerðir

1. Endurvarpað XSS

Þetta er dæmi þar sem HTML/JavaScript kóði sem er í hvaða breytu sem er (t.d. GET, POST eða cookie) birtist í svari.

Síða með textareit til að leita að einhverju sem setur breytuna ?leit=foo í loka hluta vefslóðarinnar þegar API-ið er fyrirspurt. Eftir að hafa slegið inn hvaða orðasamband sem er, ef það finnst ekki, er skilað skilaboðum í HTML, t.d.

<div>Engar niðurstöður fundust fyrir <b>fóó</b></div>

Við getum reynt að setja inn vefslóðina. ?search=..

2.DOM XSS

Þetta er þegar framkvæmd hennar er gerð möguleg með notkun hættulegra fallanna í JavaScript, svo sem meta eða innri HTML. “Live dæmið” hér að neðan sýnir DOM XSS-árás byggða á innri HTML falli.

3. Geymdur XSS

Þetta er dæmi um þegar illgjarn kóði er skrifaður á þjónahliðinni. Til dæmis gætum við sent athugasemd með illgjarnan kóða við bloggfærslu sem er hlaðin upp á þjóninn. Verkefni hans er til dæmis að bíða eftir samþykki stjórnanda og stela síðan lotugögnum hans o.s.frv.

Inndælingaraðferðir

1. Í merkis efni

`onerror=alert('XSS')`í

<img src onerror="alert('XSS')" />

2. Í efni eiginleikans

" onmouseover=alert('XSS') í

<div class="" onmouseover="alert('XSS')""></div>

  1. Í efni eiginleikans án gæsalappa

x onclick=alert('XSS')í

<div class="x" onclick="alert('XSS')"></div>

  1. Í tengillef-eiginleiki

javascript:alert('XSS') í

<a href="javascript:alert('XSS')"></a>

  1. Í strengnum inni í JavaScript kóða

";alert('XSS')// í

<script>let username="";alert('XSS')//";</script>
  1. Í eiginleikanum með JavaScript-atburðinum

');alert('XSS')// hvar og #39; er eintökulóð, inn í

<div onclick="change('&#39;);alert('XSS')//')">Jón</div>

  1. Í tengill Eiginleiki innan JavaScript-samskiptaprótókollsins

);alert(1)// hvar %27 er eintökulóð, inn í

<a href="javascript:change('%27);alert(1)//')">smelltu</a>


Lífs dæmi

Varnaraðferðir

  1. Gagna kóðun með innbyggðum fallum sem finnast í mörgum forritunarmál.
  2. Að nota sniðmátakerfi með sjálfvirkri kóðun. Flestir vinsælir rammasetningar sem nota slík kerfi vernda okkur frá XSS-sprautu (Django, Sniðmát, Vue, React o.s.frv.
  3. Ekki nota fall eins og meta eða Starfsemi með ótraustum notendagögnum.
  4. Ekki nota fall og eiginleika sem úthluta HTML-kóða beint í DOM-trésþætti, t.d., innefni HTML, ytriHTML, Settu inn HTML-ið milli merkjanna., Skrifa í skjalið.. Í staðinn geturðu notað fall sem úthluta textanum beint í þessa þætti, svo sem Texti innihalds eða innri texti.
  5. Vertu varkár þegar þú vísar notandanum á vefslóð sem hann hefur stjórn á. Áhætta á innsprautu. staðsetning = 'javascript('XSS')'.
  6. Sía HTML með bókasöfnum eins og DOMhreinsa.
  7. Vertu varkár við að hlaða upp .html eða .svg skrár. Þú getur búið til sérstakt lén sem þjónar hlaðnum skrám.
  8. Notaðu Innihaldsöryggisstefna vélbúnaður.
  9. Skoðaðu XSS-varnarsíur sem eru innbyggðar í vinsælustu vafrana.

    Ef þér finnst þessi grein áhugaverð, fylgdu Lukasz á Github: https://github.com/twistezo

Lesa meira:

Stefnur við gagnaleit í NextJS

Rails API og CORS. Smá meðvitund

Af hverju ættir þú (líklega) að nota TypeScript?

is_ISIcelandic