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

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


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

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

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

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

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

А зачем эту тему во флем переместили? Мда...

Все вопросы, пожалуйста, не в самой теме задавайте, а лично или через "Отзывы"...

 

А вообще перенесли, потому что эта тема обсуждение, а не вопрос по проблеме. Так ее увидет большее количество людей, не заходящие вообще в форумы с проблемами пользователей (общие вопросы)...

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

Vanish

Oska

убрать этот бб код, вот самое правильное решение! а вообще смотри как парсятся url, font, color, size тэги

 

А для менее опытных в программировании пользователей форума будет ли официальное решение этой проблемы от Вашей команды?

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

Я лично обезопасил себя так...

строка 226 файла post_parser.php в папке сорс либ

PHP Code:

// Start off with the easy stuff

            $txt = str_replace( "`", '"', $txt );

            $txt = str_replace( "'", '"', $txt );

            $txt = str_replace( '""', '"', $txt );

            $txt = str_replace( '"[', '[', $txt );

            $txt = str_replace( ']"', ']', $txt );

            $txt = str_replace( 'cookie', 'соокiе', $txt );

            $txt = str_replace( 'javascript', 'jаvаsсriрt', $txt );

            $txt = str_replace( 'document', 'dосuмeпt', $txt );

            $txt = str_replace( 'background', 'баcкgrоund', $txt );

как мне кажется, меня частично спасет и от будущих глюков.

(на официальное решение, этот метод не претендует)

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

Я лично обезопасил себя так...

 

строка 226 файла post_parser.php в папке сорс либ

PHP Code:

// Start off with the easy stuff

            $txt = str_replace( "`", '"', $txt );

            $txt = str_replace( "'", '"', $txt );

            $txt = str_replace( '""', '"', $txt );

            $txt = str_replace( '"[', '[', $txt );

            $txt = str_replace( ']"', ']', $txt );

            $txt = str_replace( 'cookie', 'соокiе', $txt );

            $txt = str_replace( 'javascript', 'jаvаsсriрt', $txt );

            $txt = str_replace( 'document', 'dосuмeпt', $txt );

            $txt = str_replace( 'background', 'баcкgrоund', $txt ); 

 

ИМХО это как раз пример того, как делать НЕ нужно ))

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

Во-первых потому что такой код ни от чего не защищает вообще,

Если он ничего не защищает, запости мне пример эксплойта который пробивает это...

(если уж сказал что ничего не защищает, не будь голословным)

 

Насчет портит сообщения... У меня форум не для джава-программистов, так что ничего не портит. :D

А насчет вариантов как надо делать... Я уверен ты не сможешь предусмотреть все возможные варианты...

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

Если он ничего не защищает, запости мне пример эксплойта который пробивает это...

(если уж сказал что ничего не защищает, не будь голословным)

Хорошо, разберем все по отдельности:

$txt = str_replace( "`", '"', $txt ); - ну это понятно, хотя что ` что " - разницы особой нет (я бы даже сказал что это на руку взломщикам, потому что кавычка обычно преобразовывается в &quote; а в данном случае - подарок судьбы - она не закодирована :D

$txt = str_replace( "'", '"', $txt ); -то же самое

$txt = str_replace( '""', '"', $txt ); - эти махинации мне не понятны, зачем они нужны ?

$txt = str_replace( '"[', '[', $txt ); - еще более бессымсленно ... Зачем это нужно? Если под этим понимается защит от фрагментов типа e=` ` так до и после квадратных кавычек на самом деле может стоять все что угодно... Например такая конструкция тоже работает e=`sssss ddddd` ....

$txt = str_replace( ']"', ']', $txt ); - аналогично

$txt = str_replace( 'cookie', 'соокiе', $txt ); - см. ниже

$txt = str_replace( 'javascript', 'jаvаsсriрt', $txt ); - гыыыыы...о существовании таких скриптовых языков как vbscript, например, Вы конечно не знаете? И о существовании функции expression() вероятно тоже... А кроме того вы наверно не догадываетесь, что слово javascript можно написать как минимум 1024 способами. Например jaVaScrIpT

$txt = str_replace( 'document', 'dосuмeпt', $txt ); - см выше

$txt = str_replace( 'background', 'баcкgrоund', $txt ); - аналогично

 

А кроме того вставте в блокнот такую строку

<span stYLe="BaCkgrouNd:expRessIon(alert(';)'))">

Сохраните с расширением HTML и откройте в браузере :) Надеюсь это убедит Вас что перекодировки которыми вы "защитили" свой форум практически бесполезны.

Я уверен ты не сможешь предусмотреть все возможные варианты...

А зря ;)

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

А кроме того вставте в блокнот такую строку

поясни мне причём тут блокнот?

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

Algol

А пример эксплойта запостить??? :D

стр_реплейс помоему нечувствителен к регистру jaVaScrIpT

<span stYLe="BaCkgrouNd:expRessIon(alert(';)'))">

Сохраните с расширением HTML и откройте в браузере Надеюсь это убедит Вас что перекодировки которыми вы "защитили" свой форум практически бесполезны.

1. вариант

реплейс и других возможных комбинаций

2. варант

отказ, форума от сообщения которое пытаются запостить.

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

Иправление этого эсплойта было.

Вообще-то оно делалось черезе теги color и size. А в span оно попадо при парсинге в post_parser.php

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

1. вариант

реплейс и других возможных комбинаций

2. варант

отказ, форума от сообщения которое пытаются запостить.

Я бы вам посоветовал копать в том направлении, в котором копает Terabyte. Нужно фиксить сам баг а не извращаться с перекодировками.

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

Algol советчик, если знаешь то скажи. Интриговать тут и поражать своими знаниями не надо. Пальцы гнуть тут все умеют.
Ссылка на комментарий
Поделиться на других сайтах

Terabyte самое правильное решение похерить эти теги...

ну в общем

$txt = preg_replace( "#\[align\s*=\s*(left|right|center)\s*\](.*?)\[\/align\]#is", "<div align=\"\\1\">\\2</div>", $txt );
$txt = preg_replace( "#\[video\](\S+?)\[/video\]#is", "<embed width=\"400\" height=\"300\" src=\"\\1\" type=\"application/x-shockwave-video\">", $txt );
$txt = preg_replace( "#\[sound\](\S+?)\[/sound\]#is", "<param name=\"BACKGROUNDCOLOR\" <br /><embed src=\"\\1\" align=\"baseline\" border=\"0\" width=\"275\" height=\"40\" type=\"audio/x-pn-realaudio-plugin\" console=\"Clip1\" controls=\"ControlPanel\" autostart=\"true\">", $txt );
$txt = preg_replace( "#\[web\](\S+?)\[/web\]#is", "<IFRAME WIDTH=550 HEIGHT=400 SRC=\"\\1\"></IFRAME>", $txt );

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

Algol

Фиксить баги - Ваше дело, не мое

Фиксить баги - дело каждого админа форума, которьій думает про безопасность своего ресурса. :D Ну а если тьі простой пользовател, то те ето не должно волновать. ;)

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

Sanjak он эту дырку нашел. И решение очевидно тоже знал, хотя я могу ошибаться.

 

По поводу

Фиксить баги - Ваше дело, не мое
я не в состоянии отлавливать и фиксить баги всех модификаций, которые пишет и ставит народ. Так что мы не в ответ за ошибки в скриптах третьих лиц.

 

Чистый IPB таких дырок не имеет.

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


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

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

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