Lis
16

WordPress – oszukiwanie automatycznych skanerów

W folderach motywu WordPressa (wp-content/themes) często natrafimy na plik 404.php. Pozwala nam on utworzyć własną stronę błędu. Kiedy serwer odpowie statusem o numerku 404 (Not Found), zostanie wyświetlona zawartość 404.php.


Stworzyłem prosty szablon, który powinien pojawić się, gdy Użytkownik odwiedzi nieistniejący link: wygląda on tak. Tymczasem w pliku 404.php stworzyłem przekierowanie (301 Redirect), które przeniesie zabłąkanych Odwiedzających prosto do tego szablonu.
Zastanówmy się jednak przez chwilę, czy rzeczywiście zwracany przez serwer status 404 trafia się jedynie tym „zabłąkanym Odwiedzającym”? Okazuje się jednak, że na taki numerek odpowiedzi serwera natrafić może wiele automatycznych skanerów, które próbują wylistować cokolwiek na naszym blog (a najczęściej próbują odgadnąć nazwy naszych wtyczek (wp-content/plugins)). Zamiast bawić się w zmienianie nazwy/lokalizacji tego folderu, przygotujmy na skanery małego pseudo-honeypot’a.

Najczęściej wykorzystywane narzędzia, które chcą „przebadać” naszego bloga to WPscan oraz cms-explorer.
Próba odgadnięcia, jakie wtyczki mamy zainstalowane jest w większości przypadków bardzo łatwa. Potrzebna nam lista wszystkich pluginów, które chcemy sprawdzić. Następnie, będziemy kolejno sprawdzać czy znajdują się one na serwerze. Wystarczy, że odczytamy tylko odpowiedzi serwera. Jeśli odpowiada on kodem 200 bądź 403, wiemy, że wtyczka istnieje. W innym przypadku serwer powinien przywitać nas statusem 404 (bądź, tak jak w przypadku tego bloga: 301).

Enumerację wtyczek można w bardzo łatwy sposób oszukać. Zmodyfikujmy nasz plik 404.php. Jeśli odwołujemy się do jakiegokolwiek elementu w wp-content/plugins, zamiast 404 zwracajmy zawsze 403 (jeśli pytamy o katalog) bądź 200 (jeśli pytamy o plik):

if (strstr($_SERVER['REQUEST_URI'], "wp-content/plugins")) 
{
	if (strstr($_SERVER['REQUEST_URI'], '.'))  @header("HTTP/1.1 200 OK");
	else @header("HTTP/1.1 403 Forbidden");
}

Takie zachowanie pozwoli nam oszukać większość skanerów!

ruby ./wpscan.rb --url www.example.com/wordpress --enumerate p
perl cms-explorer.pl -url http://example.com/wordpress -explore -type wordpress -plugins

Powyższe próby enumeracji pluginów zwrócą dość dziwny wynik – powiedzą, że na blogu znajdują się wszystkie wtyczki, jakie zostały testowane.
Uwaga! Proszę o nie odpalanie automatów dla tego bloga. Firewall może zablokować Twoje IP. Chcesz testować – testuj lokalnie ;>.

Okazuje się, że kilka linijek, dodanych do naszego pliku 404.php potrafi oszukać część skanerów (część – bo analizowanie odpowiedzi serwera to nie jedyny sposób, który pozwala na enumerację wtyczek).

  

Dodaj komentarz

*

Audio-CAPTCHA