Witam.
Wczoraj odkryłem poważną lukę w znanych systemach CMS, gdy myślałem nad zabezpieczeniem mojego - XVweb (premiera wakacje) . Jak luka wygląda? Już tłumaczę.
Luka pozwala na usuwanie postów (na niektórych CMS nawet usuwanie artykułów oraz nadawanie uprawnień administratora).
Weźmy do przykładu forum phpBB.
Administrator tego forum, po zalogowaniu ma funkcje jak edycja, usuwanie postów, banowanie itp.
Zajmijmy się jednak usuwaniem.
Jak admin chce usunąć po prostu klika na

, który prowadzi na adres:
http://serwer/phpbb3/posting.php?mode=delete&f=42&p=52 (obrazek na dole)

No i na tym opiera się luka! Link jest stały - zmieniają się tylko parametry. Aby usunąć dany post, zalogowany admin musi wejść tylko na ten link - to wszytko. Rozwińmy zmienne GET przekazywane do posting.php:
$_GET['mode'] - tutaj skrypt dostaje, co ma robić (w tym przypadku coś usunąć)
$_GET['f'] - jest to ID jakiś ID (chyba id tematu postu).
$_GET['p'] - jest to ID postu, który należy usunąć. Też go łatwo pobrać (obrazek 1)

Aby usunąć dany post musimy pobrać jego ID.
Jak na obrazku obok, najeżdżamy kursorem na temat postu. W FireFoxie powinien wyświetlić się link (zaznaczone na rysunku). No i w tym adresie URL są wszystkie na potrzebne parametry.
Link z obrazka:
http://serwer/phpBB3/viewtopic.php?f=2&t=1&p=2#p1
Jak wspomniałem potrzebujemy parametru p i f. To więc wyciągamy z tego linku je - f=2 i p=2
I tworzymy link który usuwa post:
http://serwer/phpbb3/posting.php?mode=delete&f=2&p=2
OK. Jak już mamy gotowy link, to musimy zwabić administratora aby na niego wszedł. Raczej nie wyślemy mu go w wiadomości, by na niego kliknął - zbyt głupie. Mamy lepsze rozwiązanie. Utwórz na forum post (najlepiej o treści wulgarnej, gdzie na pewno admin wejdzie na niego, by go usunąć) i wstawmy tam:
[img]http://serwer/phpbb3/posting.php?mode=delete&f=2&p=2[/img]
Co to nam da? Jak administrator wejdzie na posta, to odrazu wejdzie też na ten link.
//
Jak chcesz kopiować ten tekst nie mam nic przeciwko, ale wspomnij o mnie - Bordeux
Atak znany:
http://pl.wikipedia.org/wiki/Cross-site_request_forgery