paź
30

Clickjacking z przeszłości

autor: p____h  //  ::easy::, Security

Myślałem dziś ze znajomym nad ciekawym sposobem zabezpieczenia się przed clickjackingiem. I chociaż kilka zdających egzamin rozwiązań już jest [patrz chociażby ClearClick] szukaliśmy czegoś nowego. Pewnego rodzaju burza mózgów zachęciła mnie do napisania kilku przemyśleń.


Cały szum związany z clickjackingiem wiązał się z CSS’owym z-index i właśnie na nim postanowiliśmy się skupić. Pomysł miał wyglądać mniej-więcej tak: pobieramy podlinkowane arkusze .css i to co znajduje się w atrybutach style poszczególnych tagów (tak, tak, nie zapomnieliśmy, że kod HTML można obfuskować). OK., mamy już konkretne warstwy, teraz wypadałoby zbadać, czy kliknięcie na nie, nie powodują jakiegoś niechcianego zdarzenia (chociażby odsyłanie do obcej domeny). Cała idea wydawałaby się działać bez zarzutów, gdyby nie znalezione przeze mnie „ale”. W dobie CSS’ów zapomnieliśmy o najprostszych metodach clickjackingu. Nie potrzebny żaden z-index, nie potrzebne żadne warstwy – wystarczy czysty HTML!

<label for="clickMe">
<a href="http://google.pl">Jestem sobie wyszukiwarką Google!!!</a>
<button style="display: none" 
onclick="window.open('http://bing.com')" id="clickMe"></button>

A wszystko przez tag label, który definiuje etykietkę danego tekstu. Okazuje się, że po kliknięciu w taki tekst nasza przeglądarka zachowa się identycznie jak po kliknięciu w umieszczony poniżej ukryty button (oczywiście ukryłem go za pomocą CSS’a, co nie zmienia faktu, że pewnie dałoby się „wtopić” go w układ strony tak, aby nie wyglądał zbyt podejrzanie). Mówiąc w skrócie – chcąc uzyskać efekt podobny do potocznie znanego clickjackingu – nie musimy korzystać z z-index.
A teraz pytanko dla tych, którzy lubią posiedzieć trochę w kodzie (x)HTML. Kiedy ostatnio używaliście tagu label? Strzelam, że zapewne bardzo dawno temu – a to oznacza, że gdybyście wpadli na pomysł napisania np. systemu komentarzy z możliwością umieszczania w nim HTML’a, to z dosc dużym prawdopodobieństwem zapomnielibyście umieścić go na liście zakazanych tagów. Wniosek? Ten, o którym już nie raz pisałem/mówiłem – whitelisty zamiast blacklist.

  

2 komentarze to “Clickjacking z przeszłości”

  • W jaki sposób chcesz obfuskować kod HTML?!

  • Obfuskacja JS jest powszechnie znana (patrz chociażby jakikolwiek javascriptowy malware, czy nawet źródło Google [im mniej kodu, tym lepiej od strony optymalizacyjnej]). Zawsze można napisać prosty skrypcik, odpowiedzialny za wyświetlanie tagów (document.write() + jakieś dodatki) i to zaciemnić.

Dodaj komentarz

*

Audio-CAPTCHA