Захват сайтов, использующих форум Invision Power Board
Автор: Algol
В статье описывается захват сайта, использующего форум Invision Power Board.
Внимание: статья написана в ознакомительных целях. Не пытайтесь использовать данную статью в целях взлома сайтов, это уголовно наказуемо.
Целью наших действий будет загрузка на удаленный сайт PHP-скрипта, дающего доступ к файловой системе сервера (т.н. backdoor).
Метод взлома Захват сайта осуществляется в два этапа. Первый - получение логина и пароля администратора форума. Второй - загрузка на сайт специального php-скрипта, позволяющего оперировать файлами сервера. В статьях на нашем сайте уже писалось про XSS уязвимости форумов IPB (ссылка), и демонстрировался механизм получения прав модератора форума. Уязвимости позволяют нам, также, получить хеш-код пароля администратора. Если хеш в наших руках, можем двигаться дальше.
Для администраторов, форум IPB использует двойную защиту: сначала нужно зайти на сайт под логином/паролем администратора, а затем для входа в админку требуется снова ввести логин/пароль для получения администраторской сессии. Таким образом, одного только хеш-кода пароля мало для доступа к админке форума. Хеш код нужно расшифорвать. Для расшифровки хеша можно воспользоваться, например, програмкой MD5Inside.
После расшифровки хеша, мы получаем доступ к панели управления форумом. Наша цель- залить на сайт файл с расширением php. Это может оказаться непросто, поскольку админка IPB предусматривает изменения только HTML-шаблонов, но не PHP скриптов. Однако, такая возможность все таки существует. Один из способов загрузки произвольных PHP скриптов на сайт, осуществляется через меню Manage emoticons. Внизу мы видим форму для отправки смайликов на сервер. Защиты на тип файлов для смайликов, в IPB не предусмотрено, поэтому без труда можно залить файл произвольного типа.
Если загрузка удалась, то к файлу будет доступ по адресу http://someSiteForum/html/emoticons/myFile.php, и взлом можно считать законченным. Однако, возможна такая ситуация, что запись в папку emoticons запрещена. В таком случае воспользуемся обходным маневром, и запишем файл в ту папку, которая открыта на запись. А такая папка всегда существует в IPB, и называется uploads. Эта папка используется для хранения аватаров пользователей и для хранения присоединенных к постингам файлов. Понятное дело, что эта папка всегда открыта для записи. Для загрузки файла в папку uploads используем все ту же форму для загрузки смайликов. Несмотря на то, что эта форма предназначена дла загрузки файлов только в папку html/emoticons, это органичение можно обойти, подделав HTTP запрос.
Исходный запрос для загрузки файла выглядит следующим образом:
<% echo("Hello from injected PHP script") %> -----------------------------7d43942c405bc--
Обратим внимание на фрагмент запроса filename="c:/myFile.php". Этот фрагмент автоматически посылается браузером, и содержит полное локальное имя отсылаемого файла. При приеме запроса, сервер отбрасывает локальную часть пути и сохраняет файл под именем myFile.php в папке html/emoticons. Но если в качестве имени файла передать например такой filename="../myFile.php", то сервер не отбрасывает путь, поскольку он не является локальным, и загружает файл в папку, по указанному пути, относительно папки html/emoticons. Таким образом, послав модифицированный запрос, мы сможем загрузить произвольный файл в произвольную папку сервера. Для загрузки скрипта в папку uploads, использовался такой запрос:
<% echo("Hello from injected PHP script") %> -----------------------------7d43942c405bc--
Для отсылки модифицированного запроса, использовалась программа InetCrack. После загрузки на сервер PHP-скрипта типа remview.php(удаленный файловый web-менеджер), который будет доступен по адресу http://someSiteForum/uploads/remview.php, мы получаем полный контроль над сайтом.
Все даты в формате GMT
3 час. Хитов сегодня: 13
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет