Uważaj na swój indeks
Nie, nie apeluję do studentów aby uważali na swoje oceny (choć to też jest ważne) ani na duchownych, by uważali aby im ktoś Indeksu Ksiąg Zakazanych nie gwizdnął. Nie, rzecz jasna odnoszę się do Internetu.
Prawdopodobnie najpopularniejszy serwer internetowy na świecie, Apache, jak i zresztą jego konkurenci, ma to do siebie, że pozwala pokazywać listę plików obecnych w danym katalogu serwera, gdy nie jest dostępny dokument określany w ustawieniu DirectoryIndex - najczęściej index.html, index.htm czy default.htm, czyli dokument domyślnie pokazywany gdy przeglądarka zażyczy sobie pokazania, co w danym katalogu “siedzi”. Taki podgląd plików w katalogu jest bardzo fajną opcją, często bardzo przydatną, jednak oczywiście - może sprawić nam kłopoty. Zdarzyło się już pewnie nie raz, że komputerowi entuzjaści dostawali dostęp do kodu lub ważnych plików konfiguracyjnych źle napisanego serwisu - przykładowo słyszałem o sytuacji, gdy ścieżka /admin/admin.php prowadziła do jakiegoś panelu administracyjnego, podczas gdy samo /admin/ - oczywiście do indeksu katalogu, w którym też znajdowały się pliki konfiguracyjne z rozszerzeniem .inc, zawierające np. hasło dostępu do bazy danych. A zła konfiguracja serwera (względnie niedomyślność programisty nie wiedzącego o takim zagrożeniu) spowodowała, że pliki .inc traktowane są jako czysty tekst i można je bezproblemowo odczytać - także nieupoważnionym osobom (by się przed tym, najłatwiej, zabezpieczyć ja nie stosuję plików tekstowych konfiguracyjnych włączanych gdzieś indziej do skryptu, a nadaję im rozszerzenie .php, by przed wyświetleniem potraktował je interpreter tego języka co spowoduje, że treść skryptu nie zostanie ujawniona).
Powiecie, że sytuacja wydumana. Dobrze, zgodzę się, może to tylko jednostkowy przypadek. Jednak teraz coś bliżej życia - niektórzy używają swoich serwerów internetowych po to, by ze znajomymi dzielić się plikami - na przykład muzyką. Nic nie stoi na przeszkodzie, nawet prawo pozwala na dzielenie się z rodziną w ramach użytku osobistego, a w założeniu nasz katalog jest ukryty i nikt o nim nie wie. Jednak jeden nieopatrzny link spowoduje, że wyszukiwarka internetowa, np. Google będzie mogła znaleźć taki katalog. I go zindeksować. Co za tym idzie? A, zrobiłem eksperyment szukając pewnego utworu muzycznego w Google. Szybkie zapytanie:
[wykonawca] [tytuł] intitle:index of
Spowodowało, że znalazłem odpowiedni album i odpowiedni utwór w postaci pliku OGG. Jak się przed tym uchronić? Oczywiście, robots.txt. Albo wyłączając automatyczne indeksy. O ile niekiedy faktycznie mogą być one użyteczne, o tyle często mogą być oczywiście również niebezpieczne. Wyłączenie tworzenia automatycznych indeksów plików w serwerze Apache odbywa się dyrektywą Options z parametrem -Indexes, którą możemy użyć albo w httpd.conf, bądź też często jest możliwe w pliku .htaccess. Wyłączenie tej opcji w serwerze Microsoftu, IIS jest również nietrudne, przykładowo w IIS 7.0 wystarczy tylko wejść w opcjach danego katalogu (lub aplikacji) do sekcji Directory Browsing i kliknąć Disable (w IIS 6.0 także w zarządzaniu danym katalogiem znajdziemy odpowiednią opcję). Istnieje też bardzo prosta, nie wymagająca grzebania w konfiguracji metoda - stworzenie jakiegokolwiek, choćby pustego, pliku index.html, który będzie serwer wysyłał do klienta zamiast tworzonej listy plików.
Oczywiście nie namawiam do paranoidalnego wyłączenia natychmiast wszystkich swoich indeksów - radzę jednak przemyśleć czy pokazywanie plików na pewno nie jest zagrożeniem dla aplikacji.
Jednak jeszcze wspomnę o jednej sprawie - w celach naukowych postanowiłem wpisać w wyszukiwarce, czy uda mi się znaleźć pliki konfiguracyjne jakiś serwisów w podobny sposób jak muzykę. I jedna ze stron, które mi się by, jako potencjalnemu włamywaczowi spodobała, okazała się być tzw. honeypot (ang. garnek miodu), czyli właśnie przynętą na włamywaczy, takich, którzy plików konfiguracyjnych szukali. Gratuluję pomysłu! :-)
Liczba komentarzy: 4
»Wątek RSS dla komentarzy tego wpisu · Adres trackback
czerwiec 28, 2007 godzina 23:21
stare.
pozatym podajeszcz szczątkowe informacje odnośnie apacza, przez co część wpisu zakrawa o bzdurę.
.htaccess jest jednym z plików konfiguracyjnych apacza. w zależności od umiejętności i fantazji administratora używanie niektórych opcji może być wzbronione w owym pliku.
Osobiśnie polecam po prostu wyłączyć mod_autoindex, co świadomie robi większość operatorów hostingowych m.in. ze względu na opisywany powyżej problem.
całość instruktażu odnonie google krążyła jakiś czas temu (kilka dni temu) w sieci.
ogólnie: nie postarałeś się za mocno, ale dobrze że o tym wspominasz :)
czerwiec 29, 2007 godzina 10:06
Napisałem:
W domyśle chodziło o “jeżeli administrator nie wyłączył (a często tak nie jest) to można indeksowanie wyłączyć w w .htaccess”. To chyba nie jest bzdura?
W mojej opinii wyłączenie całego mod_autoindex nie jest dobre - używam indeksowania w moim katalogu na serwerze, gdzie znajduje się dużo różnych rzeczy i mogę mieć szybki dostęp do pliku, gdy nie pamiętam jego dokładnej nazwy (tak też znalazłem screen z W2k3, do którego aktualnie nie mam dostępu) - znacznie lepsze jest wyłączenie globalne indeksowania w httpd.conf i zezwolenie na nadpisanie tej wartości w .htaccess.
Nie wiem czy instruktaż krążył, nie widziałem - po prostu tą opcję znam z pomocy Google chyba ;-)
czerwiec 29, 2007 godzina 10:25
Podobna i praktycznie taka sama metoda została zaprezentowana w serwisie hacking.pl. Link do strony Jak efektywnie szukać w Google
czerwiec 29, 2007 godzina 11:01
Uważaj na swój indeks…
Prawdopodobnie najpopularniejszy serwer internetowy na świecie, Apache, jak i zresztą jego konkurenci, ma to do siebie, że pozwala pokazywać listę plików obecnych w danym katalogu serwera, gdy nie jest dostępny dokument określany w ustawieniu D…