Clickatell возвращается Master-lame-master Хакер, номер #081, стр. 081-050-1 Интересная история нового взлома Clickatell.com Однажды мне захотелось привести свои данные в порядок. Думаю, многие меня поймут: если не упорядочивать информацию несколько месяцев, то структура накопителей превращается в неизвестно что. Именно такое месиво давно имело место на моем компьютере: в корне диска «Цэ» располагались пять или шесть папок с именами temp1, 111 и т.п. Медленно начав разгребать мусор, я даже не предполагал, что незатейливая уборка может привести к сокрушительному взлому известной корпоративной сети. [утерянный комплект сценариев] Обычно, когда роешься в хламе данных, то находишь давно утерянную информацию. Так вышло и в этот раз: за полчаса уборки я успел обнаружить три mp3-шки, которые я в поте лица искал месяц назад, пару текстовиков с заснифаными паролями, а также несколько увесистых tar.gz-архивов, попусту занимающие место на моих накопителях. Но это были только цветочки. Мне посчастливилось найти папку с названием clickatell, в которой находился архивчик www.tar.gz. В последнем располагались все web-сценарии компании Кликатель. Если ты постоянный читатель журнала, то знаешь, что полгода назад мне удалось с лихвой порутать Клик и отправить на шару пару сотен SMS'ок :). Небольшое лирическое отступление: администраторы Clickatell приняли решительные меры против моего взлома: они заставили всех клиентов сменить свои пароли, впоследствии зашифровав их относительно стойким алгоритмом MD5. Помимо этого, администрация сменила все пассворды на закрытые зоны и забанили мои IP-адреса на центральном брандмауэре :). Единственное, что я успел сделать, это спионерить с WWW-сервера архив, содержащий контент всех admin- и public-сценариев. И вот, спустя долгие месяцы, я нашел этот архив. Внутри находились две папки: public и admin. Помнится, что благодаря архиву я отыскал дырку в скрипте админки, которая позволяла выполнять любые команды. На сегодняшний день по понятным причинам, в админку зайти было проблематично, поэтому было решено испытать удачу в public-части проекта. Я четко помнил, что админский скрипт содержал баг в функции exec(), которой передавались незаэкранированные переменные. Поэтому я осуществил поиск подстроки exec во всех сценариях архива. Результат меня просто ошеломил: exec вызывался в каждом втором сценарии. Однако, посмотрев содержимое файлов, я был разочарован: все переменные проверялись на наличие специальных символов и иных конструкций. Казалось, что программисты подошли к проблеме безопасности с умом: на первый взгляд исходники не содержали ни одного изъяна - код был продуман до мелочей. Но при просмотре очередного скрипта мои доводы быстро рассеялись. Мне посчастливилось обнаружить кусок кода следующего содержания: [кусок бажной программы] <? $auth = new siteAuth(); $auth->checkAuth($login); $user_no = $auth->getUserNo(); $cmd = '/usr/clickatell/compile -v'; if (isset($ota_type)&&$ota_type!=-1) $cmd .= " -t$ota_type"; if (isset($name) && $name != "" &&$ota_type == 1) $port != -1) $cmd .= " -C$port"; if (isset($isp_name) && $isp_name != "") $cmd .= " -I$isp_name"; |