Борьба со жлобским ISP Александр Любимов aka Sashiks Хакер, номер #081, стр. 081-060-4 Так как работать с файлами я не имел возможности, я начал искать, куда бы можно было вставить свой php-код. Кроме того, редактировать я мог не все разделы из центра администрирования, что было довольно странно (к примеру, если я пытался изменить внешний вид главной страницы, то изменения попросту не сохранялись – как будто я был непривилегированым пользователем). Все эти обстоятельства заставили меня искать нестандартный выход из ситуации. Но я продолжил поиски для внедрения в сайт произвольного php-кода. Я выяснил, что данные можно было вставлять либо в тело новости, либо в текст статьи. Причем и там и там, тэги «<» и «>» фильтровались. Нужно было действовать другим путем. Давай на секунду приостановимся и еще раз уясним, как все обстояло. Во-первых, на машине было 3 CMS, причем к двум из них я имел доступ (они были «пустышками», то есть рабочие сайты на них не крутились, был только основной шаблон. Третья CMS как раз работала в качестве сайта ISP, но залогиниться под админом туда было нельзя, потому что самой формочки для аутентификации просто-напросто не было. Решено было попробовать исследовать систему управления сайтом в папке «/4». Туда я тоже залогинился под «admin» и опять прошелся по разделам — снова та же ситуация, что и в прошлой CMS. Но точно я знал, что разгадка крылась где-то рядом, но не мог понять, где именно. И вновь что-то заставило меня вернуться на главный провайдерский сайт. И тут к моему удивлению под меню с линками на форум, чат и гостевую появилась ссылка на администраторский интерфейс! Давай разберемся почему это произошло. Смотри, когда я логинюсь под админом в папке "/5" или "/4" начинается новая админская сессия. Как ты знаешь, обычно сессия длится до закрытия браузера и действует она в пределах всего домена, который это сессию открыл. А это значит, что если бы я залогинился в одной CMS, то автоматически логинюсь под тем же юзером на других. В обычном состоянии линк на панель администрирования недоступен, но как только ты заходишь под администратором, ссылка появляется. Я был на сто процентов уверен что именно в этой CMS'ке файловый менджер работает нормально и без косяков. Но картина оказалась не самой утешающей — та же ошибка об отсутствии файла. Перейдя в пункт «Внешний вид» (там содержится инфа о том, как будет отображаться главная страница), я увидел формочки с подписями «баннер» и «счетчик» (там хранился их html-коды), причем в поле «счетчик» php-теги не фильтровались, там напрямую подключался сценарий счетчика! То есть, другими словами, я мог вставить в это окошко свой кусок кода и он должен был выполниться. Я скопировал текст счетчика в блокнот, а на его место всунул нехитрый скрипт <?php system("id"); ?>. Сохранив изменения, я обновил главную страницу (счетчик находился на ней), но результата выполнения команды видно не было. Я был уже в одном шаге от успеха, но мне осталось разобраться, почему не происходило сохранение изменений. Методом исключительно научного тыка я попал в раздел «управление пользователями» и увидел несколько учетных записей. Человек пять из них были простые юзеры, и лишь один обладал правами админа сайта — это был тот самый mayurev :). Я просмотрел инфу о его учетной записи: тут было очень много полезных данных, в том числе и форма для изменения пароля. То есть, грубо говоря, я мог внаглую поменять пароль mayurev'у, залогиниться под ним и сделать с сайтом все что угодно, начиная от красивого дефейса, заканчивая выполнением системных команд через формочку для кода счетчика и полным дестроем сайта. Причем никаких ограничений у этого пользователя, в отличии от юзера admin, не было. Впрочем, было одно «но»: если я поменяю пароль, то сто пудово спалюсь. К счастью, CMS у нас была, как ты помнишь, не одна, а целых три (в папках "/3", "/4", "/5"). Возможно mayurev создал несколько учетных записей в одной из этих (в качестве теста). Так и случилось — в CMS "/4" был создан точно такой же пользователь mayurev с неограниченными правами. Все! Выход найден. Меняем маюреву пароль и заходим под ним в раздел «внешний вид», где в форму счетчика вписываем <?php system("uname -a; w ; ls -la /"); ?>. Сохраняем изменения и топаем на главную страницу — ура! Системная команда выполнилась и показала версию ОС (к слову, это был линукс с неандертальским ядром 2.2.24). Теперь самое время начать свое вторжение к центру машины. |