czwartek, 24 lipca 2008

Python, biblioteka urllib(2) i dodatkowe aspekty bezpieczeństwa aplikacji webowych

urllib (2) jest biblioteką Pythona do pobierania plików poprzez adres url,
dodatkowo umożliwia manipulację całego zapytania, pozwala na tworzenie własnego nagłówka zapytania cz manipulację ciasteczek, a nawet wysyłanie POST content'u.

Przyjrzyjmy sie prostej funkcji:

zobacz

zmienne user_agent i user_agent2 zawierają zmienną naszego agenta czyli tak jak zazwyczaj przedstawia się przeglądarka internetowa.

Za zmienną user_agent możemy podstawić dowolnego stringa w tym taki xml'owe (html'owe) a nawet kod dowolnego języka najlepiej skryptowego.

Jeżeli nieuważny webmaster posiada na swoim serwerze system do przeglądania statystyk, który wyświetla wszystkie informacje o użytkownikach, którzy przeglądali strony może nieświadomie uruchomić JavaScript, który podrzucimy mu w zmiennej user_agent. Oczywiście ten alert() w przykładzie jest bardzo subtelny, równie dobrze można by tam dorzucić jakiś XSS.



kolejna zmienna zawiera ciasteczka w naszym przypadku PHPSESSID.
Różna może być reakcja skryptu na serwerze w przypadku, gdy zmienna sesji posiada niedozwolone znaki. Polecam to sprawdzić.

funkcja save_it(url, filename, proxy, port) zapisuje zawartość strony zawartej pod adresem url do pliku filename, a jeśli zmienna proxy jest różna od None to połączenie odbywa się przez serwer proxy na podanym porcie.

Na koniec dorzucam jeszcze skrypt do wysyłania POST contentu:

zobacz

Brak komentarzy: