NFsec Logo

Podstawy bezpieczeństwa PHP – Wyjawienie wersji

13/07/2010 w Ataki Internetowe, Bezpieczeństwo Brak komentarzy.  (artykuł nr 270, ilość słów: 335)

P

HP w swojej ofercie posiada jedną opcję oraz dwie funkcje, które stanowią potencjalne zagrożenie w postaci wyjawienia wersji używanego interpretera języka PHP. Ich wyłączenie pozwala na osiągnięcie niższej widoczności serwera dla ataków opierających się na prostych technikach rozpoznawczych, które pozwalają na wykrycie poziomów zagrożeń badanych celów.

Wspomnianą opcją jest expose_php. Standardowo aktywowana pozwala na użycie zjawiska Easter Eggs, które pozwalają na bliższą identyfikację wersji PHP. Na przykład fraza użyta na dowolnym pliku php:

www.strona.pl/index.php?=PHPE9568F36-D428-11d2-A769-00AA001ACF42

Zwraca odpowiedni obraz graficzny, który świadczy o odpowiedniej wersji:

  • Programista PHP z paluszkami chlebowymi w postaci zębów – 4.0.0 – 4.2.3.
  • Jamnik długowłosy na tle zielonej trawy – 4.3.0 – 4.3.10.
  • Czarny, szkocki terrier na białym tle – 4.3.11 – 4.4.6 oraz 5.0.4 – 5.1.2.
  • Królik – 5.0.0 – 5.0.3.
  • Pokolorowane, lekko zniekształcone logo PHP – 5.1.3 – 5.2.13.
  • Niebieski, pluszowy słoń z logiem PHP – 5.3.0.

Innymi możliwymi kombinacjami są:

www.strona.pl/index.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
www.strona.pl/index.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42
www.strona.pl/index.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000

Pierwsza fraza zwraca oryginalne logo PHP, druga logo Zend oraz trzecia listę pod postacią zespołu produkcyjnego PHP. Wyłączenie opcji expose_php, usuwa również z nagłówka HTTP wpis “X-Powered-By” informujący o używanej wersji PHP. Warto również zastanowić się nad wyłączeniem funkcji phpinfo();, która wyświetla dużą ilości informacji na temat aktualnego stanu PHP. Obejmuje to informacje opcji kompilacji PHP i rozszerzeń, wersji PHP (phpversion();), informacji serwera i środowiska (jeśli skompilowano jako moduł), środowiska PHP, informacje o wersji systemu operacyjnego, ścieżek, głównych i lokalnych wartości opcji konfiguracyjnych, nagłówków HTTP, i Licencji PHP. Wyłączenie wyżej wspomnianych komponentów możemy dokonać poprzez plik konfiguracyjny php.ini:

expose_php = Off
disable_functions = phpinfo

Niestety wyłączenie funkcji phpversion(); powoduje błędy lub brak możliwości pracy popularnych systemów CMS, takich jak WordPress czy Joomla, które za pomocą tej funkcji sprawdzają, czy oferowana na serwerze wersja PHP jest zgodna z ich wymaganiami. Jeśli nasza aplikacja nie wykorzystuje tej funkcji, a serwer nie posiada użytkowników korzystających z przytoczonych rozwiązań CMS (ze względu na bogatą gamę tego typu oprogramowania należy sprawdzić zachowanie innych produktów) można ją bezpiecznie wyłączyć poprzez dodanie jej do disable_functions.

Więcej informacji: Zero PHP, Funkcja phpinfo

Kategorie K a t e g o r i e : Ataki Internetowe, Bezpieczeństwo

Tagi T a g i : , , , , ,

Komentowanie tego wpisu jest zablokowane.