Ru-Board.club
← Вернуться в раздел «Ikonboard v.2»

» Баг с Яваскриптом (javascript) во всех версиях IkonBoard

Автор: lynx
Дата сообщения: 14.12.2001 13:30
Max Payne
Из-за одной этой неправильной строчки не может такого быть.
Верни старый файл (надеюсь, сделал бэкап?)
Запусти конфу, если все работает, еще раз аккуратно поменяй строчку.
Автор: DimoN
Дата сообщения: 15.12.2001 03:25

Цитата:
Из-за одной этой неправильной строчки не может такого быть.

может


Цитата:
Верни старый файл (надеюсь, сделал бэкап?)
Запусти конфу, если все работает, еще раз аккуратно поменяй строчку.



Max Payne
Кроме тебя кто нибудь пожаловался? Делай выводы
Автор: Max Payne
Дата сообщения: 15.12.2001 03:55
А что мне делать выводы?
Правил я так как ты сказал, после этого говорю пустая страница стала только открываться.
lynx самом собой что я сделал бэкап и всё вернул обратно.
Автор: pechalny
Дата сообщения: 15.12.2001 10:44

Цитата:
анлимитд документ

скорее untitled

Цитата:
Из-за одной этой неправильной строчки не может такого быть.

А в .lib'ах может.У меня такое было, когда пытался в иконрашн очепятки исправить
Автор: Ausw
Дата сообщения: 05.01.2002 17:50
NEW!

Цитата:
[no]moderator[/no]

у кого дефолтом аутлук - произойдет автозапуск оного. :gigi: весело!

правим и говорим спасибо Pechalnoму за наводку: (а напиво мне :gigi: )

ikon.lib. перед

Цитата:
[no]$post =~ s/\[img\](.+?)\[\/img\]/<img src=\"$1\">/isg;[/no]


Цитата:
[no]$post =~ s/(\[img\])(.*?)(mailto:)(.*?)(\[\/img\])/<font color=red>\[Предупреждение :moderator:ip: $postipaddress\]<\/font>/isg; [/no]

Автор: roma
Дата сообщения: 05.01.2002 20:21
кстати под Оперу сия фишка не пашет, под нетскейп не проверялась...
да, а на руборде уже исправлено, кстати...
Автор: roma
Дата сообщения: 13.05.2004 14:23
UP! господа...


Код: [no]moderator[/no]
Автор: lynx
Дата сообщения: 27.05.2004 01:52
roma

Большое спасибо.


Цитата:
как лечить: также как и javascript: и mailto:


Для тех, кто не понял, лечить так:
в ikon.lib в sub ikoncode
после


Код: my $post = shift;
Автор: Svarga
Дата сообщения: 17.07.2004 07:00

Цитата:
(script:)


Цитата:
(mailto:)


Цитата:
(view-source:)


Короче, финальная версия такая получается вместо отдельных фиксов?


Цитата:
$post =~ s/(\[img\])(.*?)(view-source:|script:|mocha:|mailto:|about:|shell:)(.*?)(\[\/img\])/$2$3$4\[<font color=red>Нехорошая картинка! :moderator:<\/font>\]/isg;


или лучше по отдельности всё?
Автор: lynx
Дата сообщения: 20.07.2004 02:02
Svarga

Цитата:
Короче, финальная версия такая получается вместо отдельных фиксов?


Цитата:
$post =~ s/(\[img\])(.*?)(view-source:|script:|mocha:|mailto:|about:|shell:)(.*?)(\[\/img\])/$2$3$4\[<font color=red>Нехорошая картинка! :moderator:<\/font>\]/isg;


или лучше по отдельности всё?


Вот так финальная версия в текущем дистрибутиве:

ikon.lib


Код:
sub ikoncode {

my $post = shift;

###not java###
$post =~ s/(\[img\])(.*?)(script:)(.*?)(\[\/img\])/$2$3$4\[<font color=red>Недопустимое действие! :moderator:<\/font>\]/isg;
###not java end###
###not view-source &mailto###
$post =~ s/(\[img\])(.*?)(view-source:)(.*?)(\[\/img\])/$2$3$4\[<font color=red>Недопустимое действие! :moderator:<\/font>\]/isg;
$post =~ s/(\[img\])(.*?)(mailto:)(.*?)(\[\/img\])/\[<font color=red>Недопустимое действие! :moderator:<\/font>]/isg;

###not view-source end###
Автор: Return0
Дата сообщения: 20.07.2004 11:22

Цитата:
Уязвимость позволяет создавать алерты (всплывающие окна javascript) при использовании пейджера ICQ.

Та же уязвимость имеется при использовании AIM'а, так что и после
Код: elsif ($action eq "aim") {
Автор: trew
Дата сообщения: 20.07.2004 13:21
lynx
У меня в ikon.lib после my $post = shift; идет много этих $post , код который выше поставить перед всеми или что-то заменить ?


Автор: lynx
Дата сообщения: 20.07.2004 20:59
trew

Цитата:
У меня в ikon.lib после my $post = shift; идет много этих $post , код который выше поставить перед всеми или что-то заменить ?


Ну, я же написала после чего ставить то. Выше всего.Return0


Цитата:
Та же уязвимость имеется при использовании AIM'а, так что и после
Код:
elsif ($action eq "aim") {


А разве есть эта подпрограмма в дистрибутиве, что в архиве?
Автор: Svarga
Дата сообщения: 20.07.2004 21:59
lynx

Цитата:
Вот так финальная версия в текущем дистрибутиве:

я не спрашивал какая она ...
я предлагал: по-моему, однократный поиск/замена по немного более сложному шаблону эффективнее нескольких поисков/замен по немного более простым шаблонам...

Или вообще можно просто проверять наличие http или ftp в начале ссылки, а если нету их — то искать двоеточие: в локальных ссылках, напр. [no] [/no] двоеточия быть не может. В итоге: всё, что не начинается с ftp или http и содержит двоеточие отсеиваем...

Что скажешь?


lynx

Цитата:
Фикс.

А почему фикс на AIM не упомянула?

Добавлено
ага...


Цитата:
А разве есть эта подпрограмма в дистрибутиве, что в архиве?

В том, который у меня, к примеру, — есть.



Полная версия, стало быть:

Фиксятся две XSS-дырки (.http://www.securitylab.ru/46410.html):

Вариант 1:

Цитата:
В misc.cgi
после
Код: elsif ($action eq "icq") {
ставим:
Код: $UIN=&cleaninput($UIN);
Автор: trew
Дата сообщения: 20.07.2004 23:00
lynx
Svarga
Прошу прощения, а можно поднять готовое в верхний пост, чтоб повысить восприятие всего этого
Автор: Return0
Дата сообщения: 21.07.2004 06:50
lynx

Цитата:
А разве есть эта подпрограмма в дистрибутиве, что в архиве?

Только что скачал IB219rus_fixed3.zip. Вот строка 374 файла misc.cgi:

Код: elsif ($action eq "aim") {
Автор: shishkov
Дата сообщения: 21.07.2004 16:49

Код:
if($aolname!~m!^[\-A-Z a-z\d_]+$!){
print header('text/html; charset=windows-1251');
&error("&Неверное имя пользователя AIM!");
}

if($icqnumber!~m!^\d+$!){
print header('text/html; charset=windows-1251');
&error("&Неверный ICQ UIN!");
}
Автор: lynx
Дата сообщения: 22.07.2004 01:24
trew

Цитата:
Прошу прощения, а можно поднять готовое в верхний пост, чтоб повысить восприятие всего этого



В первый пост - не знаю, стоит ли.

Смотри, как должна выглядить подпрограмма после всех фиксов:


Код:
sub ikoncode {

my $post = shift;

###not java### by DimoN
$post =~ s/(\[img\])(.*?)(script:)(.*?)(\[\/img\])/$2$3$4\[<font color=red>Недопустимое действие! :moderator:<\/font>\]/isg;
###not java end###
###not view-source &mailto###
$post =~ s/(\[img\])(.*?)(view-source:)(.*?)(\[\/img\])/$2$3$4\[<font color=red>Недопустимое действие! :moderator:<\/font>\]/isg;
$post =~ s/(\[img\])(.*?)(mailto:)(.*?)(\[\/img\])/\[<font color=red>Недопустимое действие! :moderator:<\/font>]/isg;

###not view-source end###
$post =~ s/\<p>/<br><br>/isg;
$post =~ s|\[\[|\{\{|g;
$post =~ s|\]\]|\}\}|g;
$post =~ s|\n\[|\[|g;
$post =~ s|\]\n|\]|g;
$post =~ s|<br>| <br>|g;
$post =~ s|\[hr\]\n|\<hr width=40\% align=left>|g;
$post =~ s|\[hr\]|\<hr width=40\% align=left>|g;

##таблица
$post =~ s/\[table\]\[tr\]/\[table\]/isg;
while ($post =~ s{\[table\]([\S\s].+?[\S\s])\[/table\]}
{my $Tmp = $1;
$Tmp =~ s/\<br>/ /g;
$Tmp =~ s/\[tr\]/ <\/td><\/tr><tr class=lgf><td>/g;
$Tmp =~ s/\[tab\]/ <\/td><td>/g;
$Tmp = qq|<table cellpadding=\"3\" cellspacing=\"0\" bgcolor=\"#FFFFFF\" width=\"75%\" border=\"1\" bordercolor=\"#EEEEEE\"><tr class=lgf><td>$Tmp<\/td><\/tr><\/table>|;
}exisog) {}
## end таблица


$post =~ s/\[q\]\s*(.*?)\s*\[\/q\]/<blockquote class=n2><span class=s>Цитата:<\/span><hr noshade size=1>$1<hr noshade size=1><\/blockquote>/isg;
$post =~ s/\[quote\]\s*(.*?)\s*\[\/quote\]/<blockquote class=n2><span class=s>Цитата:<\/span><hr noshade size=1>$1<hr noshade size=1><\/blockquote>/isg;
#$post =~ s/\[quote\](.*)\[quote\](.*)\[\/quote](.*)\[\/quote\]/<blockquote><hr><font size=\"1\" face=\"verdana, helvetica\">$1<\/font><blockquote><hr><font size=\"1\" face=\"verdana, helvetica\">$2<\/font><hr><\/blockquote><font size=\"1\" face=\"verdana, helvetica\">$3<\/font><hr><\/blockquote>/isg;
#$post =~ s/\[quote\]\s*(.*?)\s*\[\/quote\]/<font face=arial size=1><blockquote><hr noshade size=1>$1<hr noshade size=1><\/blockquote><\/font>/isg;
$post =~ s/\[url\](\S+?)\[\/url\]/<a href=\"$1\"\ target=\"_blank\">$1<\/a>/isg;
$post =~ s/\[url=http:\/\/(\S+?)\]/<a href=\"http:\/\/$1\"\ target=\"_blank\">/isg;
$post =~ s/\[url=(\S+?)\]/<a href=\"http:\/\/$1\"\ target=\"_blank\">/isg;
$post =~ s/\[\/url\]/<\/a>/isg;

$post =~ s/(^|\s|\<br\>)(http:\/\/\S+)/$1<a href="$2" target=_blank>$2<\/a> /isg;
$post =~ s/(^|\s|\<br\>)(https:\/\/\S+)/$1<a href="$2" target=_blank>$2<\/a> /isg;
$post =~ s/(^|\s|\<br\>)(ftp:\/\/\S+)/$1<a href="$2" target=_blank>$2<\/a> /isg;
$post =~ s/(^|\s|\<br\>)(www\.\S+)/$1<a href="http:\/\/$2" target=_blank>$2<\/a> /isg;


# Добавляем новые коды [c] и [s]

$post =~ s/\[c\](.*?)\[\/c\]/<center>$1<\/center>/isg;
$post =~ s/\[s\](.*?)\[\/s\]/<span class=s>$1<\/span>/isg;

$post =~ s/\[b\]/<b>/isg;
$post =~ s/\[\/b\]/<\/b>/isg;
$post =~ s/\[i\]/<i>/isg;
$post =~ s/\[\/i\]/<\/i>/isg;
$post =~ s/\[size=\s*(.*?)\s*\]\s*(.*?)\s*\[\/size\]/<font size=\"$1\">$2<\/font>/isg;
$post =~ s/\[font=\s*(.*?)\s*\]\s*(.*?)\s*\[\/font\]/<font face=\"$1\">$2<\/font>/isg;
$post =~ s/\[u\]/<u>/isg;
$post =~ s/\[br\]/<br>/isg;
$post =~ s/\[\/u\]/<\/u>/isg;
$post =~ s/\[img\](.+?)\[\/img\]/<img src=\"$1\">/isg;
$post =~ s/\[color=(\S+?)\]/<font color=\"$1\">/isg;
$post =~ s/\[\/color\]/<\/font>/isg;
$post =~ s/\\http:\/\/(\S+)/<a href=\"http:\/\/$1\"\ target=\"_blank\">http:\/\/$1<\/a>/isg;
$post =~ s/(\[list\])(.+?)(\[\/list\])/<UL>$2<\/UL>/isg;
$post =~ s/(\[list=)(A|1)(\])(.+?)(\[\/list\])/<OL TYPE=$2>$4<\/OL>/isg;
$post =~ s/(\[\*\])/<LI>/isg;
$post =~ s/\[code\](.+?)\[\/code\]/<blockquote><font size=\"1\" face=\"Courier New\">Код:<\/font><hr><font face=\"Courier New\" size=\"2\"><pre>$1<\/pre><\/font><hr><\/blockquote>/isg;
$post =~ s/\[code\](.+?)\[\/code\]/<blockquote><font size=\"1\" face=\"Courier New\">Код:<\/font><hr><font face=\"Courier New\"><pre>$1<\/pre><\/font><hr><\/blockquote>/isg;

#Выключаем автоподсветку мыла DimoN
#$post =~ s/(\S+?)\@(\S+)/<a href=\"mailto:$1\@$2\"\>$1\@$2<\/a>/ig;
$post =~ s/\[email=(\S+?)\]/<a href=\"mailto:$1\">/isg;
$post =~ s/\[\/email\]/<\/a>/isg;
$post =~ s/(\[FLASH SIZE=1\])(.+?)(\[\/FLASH\])/<OBJECT WIDTH=80 HEIGHT=60><PARAM NAME=movie VALUE="$2"><PARAM NAME=quality VALUE=high><PARAM NAME=scale VALUE=exactfit><PARAM NAME=menu VALUE=false><PARAM NAME=bgcolor VALUE=$BGColor><EMBED src="$2" quality=high menu=false scale=exactfit WIDTH=80 HEIGHT=60 swLiveConnect=true TYPE="application\/x-shockwave-flash"><\/EMBED><\/OBJECT>/isg;
$post =~ s/(\[FLASH SIZE=2\])(.+?)(\[\/FLASH\])/<OBJECT WIDTH=160 HEIGHT=120><PARAM NAME=movie VALUE="$2"><PARAM NAME=quality VALUE=high><PARAM NAME=scale VALUE=exactfit><PARAM NAME=menu VALUE=false><PARAM NAME=bgcolor VALUE=$BGColor><EMBED src="$2" quality=high menu=false scale=exactfit WIDTH=160 HEIGHT=120 swLiveConnect=true TYPE="application\/x-shockwave-flash"><\/EMBED><\/OBJECT>/isg;
$post =~ s/(\[FLASH SIZE=3\])(.+?)(\[\/FLASH\])/<OBJECT WIDTH=320 HEIGHT=240><PARAM NAME=movie VALUE="$2"><PARAM NAME=quality VALUE=high><PARAM NAME=scale VALUE=exactfit><PARAM NAME=menu VALUE=false><PARAM NAME=bgcolor VALUE=$BGColor><EMBED src="$2" quality=high menu=false scale=exactfit WIDTH=320 HEIGHT=240 swLiveConnect=true TYPE="application\/x-shockwave-flash"><\/EMBED><\/OBJECT>/isg;
$post =~ s/(\[FLASH=)(\S+?)(\,)(.+?)(\])(.+?)(\[\/FLASH\])/ <embed src="$6" menu=false scale=exactfit HEIGHT="$4" WIDTH="$2" quality="high"><\/embed> /isg;
$post =~ s/(\[center\])(.+?)(\[\/center\])/<center>$2<\/center>/isg;
$post =~ s/(\[sound\])(\S+?)(\.mid|\.midi|\.wav)(\[\/sound\])/<EMBED SRC="$2$3" AUTOSTART=FALSE LOOP=FALSE WIDTH=100><\/EMBED> /isg;
$post =~ s|\{\{|\[|g;
$post =~ s|\}\}|\]|g;

return $post;

} # end routine
Автор: trew
Дата сообщения: 22.07.2004 02:21
lynx Спасибо!



Цитата:
ICQ и AOL, AIM
Может их вообще вырезать, да и проблем меньше будет... ?
Еще ICQ я понимаю , хотя можно его и через ПМ получить, а вот все это остальное - я и не видел ни у кого заполненым...
Автор: lynx
Дата сообщения: 22.07.2004 04:15
trew

Цитата:
Может их вообще вырезать, да и проблем меньше будет... ?
Еще ICQ я понимаю , хотя можно его и через ПМ получить, а вот все это остальное - я и не видел ни у кого заполненым...


Я вот тут расписала, как это делать:

Избавляемся от пейджера ICQ и других функций misc.cgi

В IBlite это будет убрано.
Автор: Svarga
Дата сообщения: 22.07.2004 08:40
shishkov

Цитата:

if($aolname and $aolname!~m!^[\-A-Z a-z\d_]+$!){
print header('text/html; charset=windows-1251');
&error("&Неверное имя пользователя AIM!");
}
if($icqnumber and $icqnumber!~m!^\d+$!){
print header('text/html; charset=windows-1251');
&error("&Неверный ICQ UIN!");
}


Как считаете?

Так правильнее...
хотя если ничего при регистрации не указано — ссылка на пейджерные страницы пользователя будет отсутствовать и её только вручную можно будет сконструировать

trew

Цитата:
ICQ и AOL, AIM

AOL и AIM — одно и то же...
Автор: trew
Дата сообщения: 22.07.2004 12:08
lynx Класс! Огромное спасибо!

Svarga


Цитата:
AOL и AIM — одно и то же...
тем более... Чем проще - тем надежнее.
Автор: shishkov
Дата сообщения: 22.07.2004 14:49

Цитата:
хотя если ничего при регистрации не указано — ссылка на пейджерные страницы пользователя будет отсутствовать и её только вручную можно будет сконструировать

Просто если ничего не указать - с неисправленным кодом выдается ошибка и регистрации не происходит. Поэтому надо видимо исправить.
Автор: Gram
Дата сообщения: 26.07.2004 11:23

Цитата:
сейчас при регистрации в поля ICQ и AOL можно вписать что угодно

Ну тогда уж и при обновлении профиля (в profile.cgi) надо такую же проверку вставлять
Автор: Svarga
Дата сообщения: 08.08.2004 23:30
Gram

Цитата:
Ну тогда уж и при обновлении профиля (в profile.cgi) надо такую же проверку вставлять

profile.cgi
после строки:
Цитата:
$inuseravatar = $query -> param('useravatar');

сие:
Цитата:
if($newaolname && $newaolname!~m!^[\-A-Z a-z\d_]+$!){
print header('text/html; charset=windows-1251');
&error("&Неверное имя пользователя AIM!");
}

if($newicqnumber && $newicqnumber!~m!^\d+$!){
print header('text/html; charset=windows-1251');
&error("&Неверный ICQ UIN!");
}
Автор: lynx
Дата сообщения: 18.08.2004 19:11
Внимание!



Обнаружена новая возможность вставить код javascriipt, используя коды форума. Сделать это можно, используя коды size, font и color.

Для закрытия уявзвимости сделайте следующее.

в файле ikon.lib

sub ikoncode


Код:
$post =~ s/\[size=\s*(.*?)\s*\]\s*(.*?)\s*\[\/size\]/<font size=\"$1\">$2<\/font>/isg;
$post =~ s/\[font=\s*(.*?)\s*\]\s*(.*?)\s*\[\/font\]/<font face=\"$1\">$2<\/font>/isg;

$post =~ s/\[u\]/<u>/isg;
$post =~ s/\[br\]/<br>/isg;
$post =~ s/\[\/u\]/<\/u>/isg;
$post =~ s/\[img\](.+?)\[\/img\]/<img src=\"$1\">/isg;
$post =~ s/\[color=(\S+?)\]/<font color=\"$1\">/isg;
Автор: lynx
Дата сообщения: 31.08.2004 17:23
Небольшая поправка.

Строка:


Код: $post =~ s/(\[font=)([A-Z a-z]+)\](.+?)(\[\/font\])/<font face=\"$2\">$3<\/font>/isg;
Автор: FROMFAF
Дата сообщения: 07.01.2005 12:41
Не там уязвимости ищите.
На самом деле у ИБ2 на этот счёт есть пара огромных дыр, одну из которых очень легко использовать, вторую использовать чуть труднее. Причём они есть без исключения во всех версиях движка, и никогда не проходили в багтраках. Ищите и обрящите (уязвимости совершенно очевидные).
А по поводу последней дырки (хотя не уверен, что её можно таковой считать) - она также есть в хаке дополнительных кодов, там где glow, hflip и пр.
Автор: Gram
Дата сообщения: 07.01.2005 15:39
FROMFAF, это конечно все хорошо что ты говоришь про уязвимость, но хотелось бы получить не просто упоминания об уязвимости, но и указания этих дырок. А то ты в соседней ветке про "общественно полезные действия" говорил...
Автор: FROMFAF
Дата сообщения: 07.01.2005 16:39
Для общественности полезнее, чтобы описаний дырок равно как и описаний фиксов (из них можно понять, где сама дырка) не было.
Что началось, когда выложили фикс бага с javascript, я ещё помню...
Не хочу брать на себя ответственность за такое же.

Страницы: 123

Предыдущая тема: Где изменить коды смайликов


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.