Перейти к контенту

Уязвимости форумов Invision Power Board


Рекомендуемые сообщения

Вот новый косяк нарыли (© Micro) (здесь не проходит, хотя и не понятно почему, в HTML коде тоже, что и с форумов, где проходит

[IMG=http://[EMAIL]`=`ds@ds.com[/EMAIL].jpg] ` style=background:url(javascript:alert(document.cookie))

 

Лечится изменением парсера емайлов.

 

У кого стоит замена ` на ' можно не волноваться. хотя можно и поправить тоже...заодно и некорректные (по синтаксису) мылы не пройдут

 

в post_parser.php меняем это:

 	 $txt = preg_replace( "#\[email\](\S+?)\[/email\]#i"                                                                , "<a href='mailto:\\1'>\\1</a>", $txt );
	 $txt = preg_replace( "#\[email\s*=\s*\&quot\;([\.\w\-]+\@[\.\w\-]+\.[\.\w\-]+)\s*\&quot\;\s*\](.*?)\[\/email\]#i"  , "<a href='mailto:\\1'>\\2</a>", $txt );
	 $txt = preg_replace( "#\[email\s*=\s*([\.\w\-]+\@[\.\w\-]+\.[\w\-]+)\s*\](.*?)\[\/email\]#i"                       , "<a href='mailto:\\1'>\\2</a>", $txt );

на это:

 	 $txt = preg_replace( "#\[email\]\s*([0-9a-z]([-_.]?[0-9a-z])*@([a-z0-9\-]+\.)+([a-z0-9\-]{2}|net|com|gov|mil|org|edu|int|xxx))\s*\[/email\]#i"                                 , "<a href='mailto:\\1'>\\1</a>", $txt );
	 $txt = preg_replace( "#\[email\s*=\s*\&quot\;\s*([0-9a-z]([-_.]?[0-9a-z])*@([a-z0-9\-]+\.)+([a-z0-9\-]{2}|net|com|gov|mil|org|edu|int|xxx))\s*\&quot\;\s*\](.*?)\[\/email\]#i" , "<a href='mailto:\\1'>\\5</a>", $txt );
	 $txt = preg_replace( "#\[email\s*=\s*([0-9a-z]([-_.]?[0-9a-z])*@([a-z0-9\-]+\.)+([a-z0-9\-]{2}|net|com|gov|mil|org|edu|int|xxx))\s*\](.*?)\[\/email\]#i"                       , "<a href='mailto:\\1'>\\5</a>", $txt );

Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 1,2k
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

Загружено фотографий

гм ... спасибо. пойду на младших двойках погоняю.[1117886407:1117886589]версии на локалке 2.0.0 и т.д по возрастающей, не срабатывает
Ссылка на комментарий
Поделиться на других сайтах

а чё должно произойти!? я у себя на 1.3.1 ввёдл как сообщение - никаких окошек не выскакивало

просто в посте типа незагруженная картина и дальше текст:

`=`ds@ds.com.jpg' border='0' alt='user posted image' /> ` style=background:url(java script:alert(document.cookie))

 

и всё

это нормально получается же?

Ссылка на комментарий
Поделиться на других сайтах

--------

а чё должно произойти!?

-------

Должно появиться прямоугольное окно.

Испытывай в ие, в других браузерах алерты могут быть заблокированы.

Ссылка на комментарий
Поделиться на других сайтах

Господа.

В 1.3.1 финал тоже появляется окошко

я пофиксил

сенкс

 

теперь ничего не появляется, просто в посте

 

тут типа неотображённая картинка и дальше текст: ` style=background:url(java script:alert(document.cookie))

 

 

з.ы: а скажите плз что можно с этой дырой форуму сделать!? и как? (как можете плз в пм написать, что бы публично все не знали ) :D

Ссылка на комментарий
Поделиться на других сайтах

а скажите плз что можно с этой дырой форуму сделать!? и как?

 

Из кук берется

Твой хешь если отправить на снифф то мона получить его и попробывать расшифровать если получиться мы идем в админку заливаем шелл и дефим сайт © Micro
Ссылка на комментарий
Поделиться на других сайтах

[IMG=http://[EMAIL]`=`ds@ds.com[/EMAIL].jpg] ` style=background:url(javascript:alert(document.cookie))

 

Лечится изменением парсера емайлов.

 

в post_parser.php меняем это:

$txt = preg_replace( "#\[email\](\S+?)\[/email\]#i"                                                                , "<a href='mailto:\\1'>\\1</a>", $txt );

на

 	 $txt = preg_replace( "#\[email\]([\.\w\-]+\@[\.\w\-]+\.[\.\w\-]+)\[/email\]#i"                                                                , "<a href='mailto:\\1'>\\1</a>", $txt );

Ссылка на комментарий
Поделиться на других сайтах

GiV, по первых в 1.3 не один регэксп, а три, а во вторых - Уязвимости форумов Invision Power Board - убиваем 2х зайцев, закрываем возможность подсунуть сниф и возможность вводить ссылки на некорректные мылы :D
Ссылка на комментарий
Поделиться на других сайтах

Vic'er, остальные 2-а регэкспа являются безопасными, проблема только в первом потому как идет класс символов \S что означает любой символ, кроме пробельного (обращаем внимание на слово символ, это и буква и цифра и ` и т.д.)

Выражения для регэкспа которые используются в остальных условиях проверки являются безопасными дефакто, потому как там используется класс символов \w - буквы и цифры и все!

 

По поводу правильности... Ну ваш регэксп не пропустит мылы скажем name.sname@domain.info, хотя он валиден... Так же как и мыла с доменами 3-го уровня - name.sname@subdomain.domain.ru, а ведь такие (pp.ru, com.ru, net.ru) существуют, не правда ли? А расширять регэксп в условиях выбора на все домены которые есть... В общем это не самый оптимальный вариант, который отсекает еще и часть валидных мыл.

Ссылка на комментарий
Поделиться на других сайтах

Ну ваш регэксп не пропустит мылы скажем name.sname@domain.info, хотя он валиден
:D У епт... возможно... хотя я и не слышал о мылах на info
А расширять регэксп в условиях выбора на все домены которые есть
А трех буквенных доменов не так и много - они все и перечислены, добавлен даже XXX :)

 

энивей - заплатка сделана и бог с ним. ))

Так же как и мыла с доменами 3-го уровня - name.sname@subdomain.domain.ru, а ведь такие (pp.ru, com.ru, net.ru) существуют, не правда ли?

([a-z0-9\-]{2}|net|com|gov|mil|org|edu|int|xxx))

 

Идет проверка чтобы в конце был либо двухсимвольный (региональный) домен, либо общепринятый трехбуквенный - так что все путем ;)

Ссылка на комментарий
Поделиться на других сайтах

энивей - заплатка зделана и бог с ним. ))

особенно если учесть, что тэгом email пользуется менее 1% пользователей, то такая заплатка имеет шанс на существование, хотя с точки зрения корректной работы с различными email адресами является притянутой за уши...

Ссылка на комментарий
Поделиться на других сайтах

а вообще - решение не претендовало на универсальность, просто у каждого программера свой регексп на валидность мыл :D

 

хотя можно притянуть и онлайн проверку мыл за уши ;)

Ссылка на комментарий
Поделиться на других сайтах

Идет проверка чтобы в конце был либо двухсимвольный (региональный) домен, либо общепринятый трехбуквенный - так что все путем :D

да все верно.

Только

([a-z0-9\-]{2}

'\-' уберите =) А то получатся домены из зоны r-, -u, u- и т.д.

Ссылка на комментарий
Поделиться на других сайтах

\-' уберите =) А то получатся домены из зоны r-, -u, u- и т.д.

 

Сенкс, я уже и не помню, почему у меня дефиз туда затесался, возможно где и есть зона .-r - теперь буду юзать

([a-z0-9]{2}|net|com|gov|mil|org|edu|int|xxx|info)

Ссылка на комментарий
Поделиться на других сайтах

та мало ли :D Вы же тут с GIV'ом обсуждали ....

 

вообщем всё ок. ;) Сенкс

Ссылка на комментарий
Поделиться на других сайтах

Вы же тут с GIV'ом обсуждали ....
Обсуждение больше техническое было... по реализации и вообще... :D

 

Добавлено

 

Новую XSS дырочку нарылили на нашем форуме (с)Micro ;)

 

зы Мне тут могут сказать, что обратную кавычку нужно запретить вообще или преобразовавать в обычную - так скажу вам, что это в корне не верно. тк нужно именно предупреждать пользователя о том, что в некоторых (не всех конечно) местах вставлять ее не стоит.

 

[URL=[img=http://`=`ds@ds.jpg]][/URL]` style=background:url(javascript:alert(documencookie))

 

Лечится изменением парсера картинок.

 

в post_parser.php после этого:

	/**************************************************/
// regex_check_image: Checks, and builds the <img>
// html.
/**************************************************/

function regex_check_image($url="") {
 global $ibforums;

 if (!$url) return;

 $url = trim($url);

 $default = "[img=".$url."]";

 ++$this->image_count;

добавляем

  if (strpos(urldecode($url), "`") !== false)
 {
	 $this->error = 'no_dynamic';
	 return $default;
 }

Ссылка на комментарий
Поделиться на других сайтах

Случайно пробегал по форуму израильской поддержки, там неделю назад вышел пак обновлений безопасности для 2.0.0. Может кто из гуру глянет вполглаза, вдруг чего упустили? Там хоть и на иврите, но вроде все понятно; если что, с переводом пары фраз помогу.
Ссылка на комментарий
Поделиться на других сайтах

Новую XSS дырочку нарылили на нашем форуме (с)Micro

Та сколько можно!? :D))

Ссылка на комментарий
Поделиться на других сайтах


×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.