
Przeglądając zakamarki internetu trafiłem na stronę pewnej gminy Strona jest podatna również na ataki typu XSS, aczkolwiek tutaj skupimy się na ciekawym rodzaju ataku SQL Injection.
Moduł pobierania obrazków na podstawie identyfikatora z bazy SQL nie posiada wystarczającego filtrowania – co w efekcie pozwala na wykorzystanie podatności. Domyślne zapytanie do serwera brzmi:
http://www.strona-gminy-hidden.pl/index.php?mode=images&action=showImage&imageId=109&locId=1
Jak widać skrypt działa poprawnie, pokazuje nam się zdjęcie drzewka.
Niestety, autor kodu nie przygotował odpowiedniej filtracji danych wejściowych i poprzez modyfikację zapytania metodą GET możemy dostać się do bazy.
Przykład zapytania pobierającego informację o pierwszej w kolejności dodawania tabeli w bazie:
http://www.strona-gminy-hidden.pl/index.php?mode=images&action=showImage&imageId=109+AND+1=2+UNION+SELECT+table_name+FROM+information_schema.tables+LIMIT+0,1--&locId=1
Uwaga: Wykonanie powyższego zapytania powoduje naruszenie polskiego prawa.
„Art. 267. § 1. Kto bez uprawnienia uzyskuje dostęp do informacji dla niego nieprzeznaczonej, otwierając zamknięte pismo, podłączając się do sieci telekomunikacyjnej lub przełamując albo omijając elektroniczne, magnetyczne, informatyczne lub inne szczególne jej zabezpieczenie, podlega grzywnie, karze ograniczenia wolności albo pozbawienia wolności do lat 2.”
Skrypt zwróci nam stronę z ikonką niedziałającego obrazka, jednak gdy zajrzeć dalej – np. pobierając wyświetloną zawartość na dysk i edytując ją w dowolnym edytorze tekstowym ujrzymy nazwę tabeli.