Michał Środek

Mój osobisty blog

Witaj na srodek.info

Jest to blog poświęcony nowoczelnym technologiom ułatwiającym tworzenie aplikacji internetowych. Znajdziesz tutaj porady na temat CSS3, JavaScript, designu, web-usability, standardów W3C.

Cześć! Nazywam się Michał Środek. Z zawodu programista php, z zamiłowania gitarzysta oraz fanatyk GNU/Linuksa(openSUSE® w laptopie). W branży aplikacji internetowych od 9 lat. Prywatnie bez dzieci i kota.

Pracuję wciąż nad własnym elastycznym i wydajnym frameworkiem MVC, kilkoma portalami internetowymi oraz mniejszymi bibliotekami php. Czekam na wasze opinie, zgłoszenia błędów oraz pomysły na dalszy rozwój.

Ta część strony jest w trakcie budowy a moje prace tymczasowo niedostępne.

W przypadku pytań, ofert pracy oraz ciekawych pomysłów proszę się ze mną kontaktować. Możesz mnie znaleźć i wysłać PW na php.pl(SHiP), jamendo.com(michalsrodek), goldenLine.pl, facebook.com lub nk.pl

12 Luty 2010

ClickJacking

Filed under: Bezpieczeństwo,JavaScript — Tagi: , , — Michał Środek @ 3:04

Przez ostat­nich kilka tygo­dni zaczą­łem inte­re­so­wać się hac­kin­giem bez­pie­czeń­stwem stron inter­ne­to­wych. Posta­no­wi­łem więc napi­sać co nieco na temat zabez­pie­cza­nia stron przed takimi ata­kami jak np. SQL Injec­tion, XSS. Pokażę rów­niez metody pod­glą­da­nia kodu źródło­wego, lub uru­cha­mia­nia wła­snego kodu php na stro­nach o sła­bych zabez­pie­cze­niach lub złej kon­fi­gu­ra­cji ser­wera. Dzi­siaj nato­miast w luźny spo­sób opi­szę co to ClickJacking.

Roz­pocz­nijmy od małej gry, którą napi­sa­łem przy uży­ciu jQu­ery na potrzeby tego arty­kułu. Polega ona na bar­dzo szyb­kim kli­ka­niu w poja­wia­jący się czer­wony pro­sto­kąt. Dasz radę? Zagraj!

Clic­kJac­king polega na — tłu­ma­cząc dosłow­nie — „pory­wa­niu klik­nięć“. Zasada jest pro­sta. Nie­wi­dzialna ramka jest ukry­wana pod stroną za pomocą css(a dokład­niej z-index). Czeka ona w tle, aż poten­cjalna ofiara zechce klik­nąć w pewne pole na ekra­nie. Wtedy war­stwa ramki prze­cho­dzi nad war­stwę gry. Użyt­kow­nik myśląc, że klika w praw­dziwy ele­ment w rze­czy­wi­sto­ści uru­cha­mia mecha­nizm z ramki. Brzmi nie­po­zor­nie? Atak taki wyko­rzy­sty­wany jest na wiele spo­so­bów. Można np. umie­ścić w ramcę stronę facebook.com oraz odpo­wied­nio spre­cy­zo­wać pola w które należy klik­nąć. Dzięki temu użyt­kow­nik zmieni swoje usta­wie­nia doty­czące pry­wat­no­ści umoż­li­wia­jąc kra­dzież swo­ich danych oso­bo­wych i moż­li­wość prze­glą­da­nia zdjęć. Wbrew pozo­rom są setki nie­za­bez­pie­czo­nych stron inter­ne­to­wych. Jedną z nich była kie­dyś witryna kon­fi­gu­ra­cyjna wtyczki flash. Odpo­wied­nio spre­cy­zo­wana strona pozwa­lała na zmianę usta­wieć wtyczki tak aby moż­liwy był dostęp do kamery internetowej(sic!). Dzięki temu hake­rzy mogli nawet pod­glą­dać swoje ofiary. Na szczę­ście Adobe wpro­wa­dziło zabez­pie­cze­nia, które unie­moż­li­wiają prze­pro­wa­dze­nie takiego ataku.

Jak się chronić?

Zwy­kli użyt­kow­nicy mogą zain­sta­lo­wać wtyczkę NoScript, która chroni przed tym ata­kiem. W przy­padku twór­ców stron inter­ne­to­wych sprawa jest pro­sta. Nie wolno pozwa­lać uru­cha­miać naszej strony w ramce(tym bar­dziej, że ramki to już prze­sta­rzała tech­no­lo­gia). Robi tak GMail, nasza-klasa, o2 i inni.
Kod(tzw. Fra­me­kil­ler) jest bar­dzo prosty:

<script type="text/javascript">
    if (top!=self){
        top.location.href=self.location.href;
    }
</script>

W przy­padku uru­cho­mie­nia strony w ramce strona nad­rzędna zosta­nie prze­kie­ro­wana na stronę w ramce.

Dodaj arty­kuł do:

  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Gwar
  • Reddit
  • Technorati
  • Twitter
  • Wykop

Komentarzy: 3 »

  1. oO… Tego się nie spo­dzie­wa­łem … Poczy­ta­łem i posta­no­wi­łem prze­te­sto­wać … Fak­tycz­nie… Można spre­pa­ro­wać wiele stron. Ja posta­no­wi­łem stwo­rzyć ‚nowy’ adres zmiany hasła … użyt­kow­nik poda­wał stare hasło i nowe… lecz zamiast nowego, do for­mu­la­rza tra­fiało moje. Nie pomy­śla­łem nawet o tym…

    Komentarz by Hs2 — 12 lutego 2010, 21:32

  2. Doda­nie w głów­nym pliku zała­twia wszystko?

    Komentarz by H4eX — 7 lipca 2010, 22:42

  3. Dodaj w pliku, który ma być „odporny na ramki“.

    Komentarz by Michał Środek — 7 lipca 2010, 22:45

Kanał RSS z komentarzami do tego wpisu. TrackBack URL

Dodaj komentarz