.
13 января 2016

Пример анализа взлома сайта Joomla и устранение причины проникновения com_contenthistory

posted in Joomla, security |

Собственно, может кому интересно будет — небольшой пример из текущего (буду краток).
Гемор: джумла, за безопасностью которой особо никто не следит, потому что джумла!
По знакомству данный гемор лежит на моём серваке, где у меня ночью отрабатывает самописный скриптик по отлову изменений в скриптах, и информирует меня в случае оных.
Вот и проинформировал меня вчера о появлении нового скрипта " /images/stat.php < 92427 "
Излюбленное место хранения бэкдоров и наиболее популярное для бэкдора название :)
Смотрим файло глазами:
<?php
function lbbe5bd6b5b1b371330fc197e85d8faeeda8d31(){}
function lbbb64972a71893038184348194439206f2b86b7b6(){$i0ccdb47=406; return $i0ccdb47/7168;}
function lbbd6f597bdddd3586a4fcf767667458690fc6a4edfdbcd7f5922(){for($e7f7=210;$e7f7<29801;$e7f7++){if($e7f7!=21981) break;}}
function lbbb604ba3d1e8341acd8c462567168f3a53278a589b598dc78(){for($e7f7=153;$e7f7<28845;$e7f7-=34){if($e7f7!=16257) break;}}
function lbbdfea35e7773f3bffdaedb7c52efbb6eef61(){}
function lbbb3f9b0d7ab3f7(){$i0ccdb47=4554; return $i0ccdb47%11316;}
......

видим обфусицированный код (если есть желание посмотреть исходный код — пробуем) исходник бэкдора
запускаем — форма пост запроса (вероятно пароль к бэкдору)
search
<form method=post>search <input type=text name="query"><input type="submit"></form>
Зараза 100% — убиваем её!
Осталось одно НО! — если зараза проникла единожды, проникнет и вторично!
Первое, что делаем — меняем все пароли доступа (т.к. скорее всего они уже у хакера в базе).
Второе, нужно анализировать логи веб-сервера и искать непосредственно дыру: как именно был внедрён бэкдор?
Дату создания и модификацию файла бэкдора подменили (бывает и не меняют — искать в логах гораздо проще).
Далее недолгий анализ, насторожил меня GET запросами вида
"/?option=com_contenthistory&view=history&list[ordering]=&item_id=&type_id=&list[select]=polygon%28%28/*!00000select*/*/*!00000from*/%28/*!00000select*/*/*!00000from*/%28/*!00000select*/concat_ws%280x7e3a,%28/*!00000select*/concat_ws%280x7e3a,0x534b4f54494e4b494e,username,password,0x505343%29/*!00000from*/fot6h_users%20where%20id%20=%20710%29%29as%20mk%29%60%60%29%60%60%29%29"
С какого это перепугу, в запросе иньекции SQL кода ?! явно используя дыру хотят чего то из базы поиметь — админские пароли, куки и т.д. и т.п.
Далее гуглим про дыры в «com_contenthistory» и сразу всё становится на свои места :)
Искать заплатки по данной дыре — дело хозяина джумлы, я же на скорую руку просто затыкаю любые запросы с вхождением com_contenthistory в параметры через .htaccess
RewriteCond %{QUERY_STRING} com_contenthistory
RewriteRule .* - [F]

Яндекс.Метрика