Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » IkonBoard и другие форумы » Ikonboard v.2 » Баг с Яваскриптом (javascript) во всех версиях IkonBoard

Модерирует : Antuan

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4

Открыть новую тему     Написать ответ в эту тему

Potap



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
При заходе в этот топик вы заметили всплывающее окно? Подскажите как можно сделать, чтобы нельзя было такое делать? Представьте если в каждом топике будет по такому окну да и еще не по одному. Это же так раздражать будет.
[CLASSIFIED]
 
 Решение на 14.02.2005 г. Для закрытия уязвимости сделайте следующее:
 
в файле ikon.lib
 
sub ikoncode  делаем изменения. Подпрограмма, после изменения, должна выглядеть так:

Код:
 
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>//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/\[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/\[u\]/<u>/isg;
    $post =~ s/\[br\]/<br>/isg;
    $post =~ s/\[\/u\]/<\/u>/isg;
    $post =~ s/\[img\](.+?)\[\/img\]/<img src=\"$1\">/isg;
     
#Опять фиксим яву by batva
$post =~ s/(\[size=)(\d+)\](.+?)(\[\/size\])/<font size=\"$2\">$3<\/font>/isg;    
$post =~ s/(\[font=)([A-Z a-z-]+)\](.+?)(\[\/font\])/<font face=\"$2\">$3<\/font>/isg;
$post =~ s/(\[color=)([A-Za-z]+|[#\dA-F]+)\](.+?)(\[\/color])/<font color=\"$2\">$3<\/font>/isg;  
#end фиксим яву  
     
    $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
     
     

 
Фиксятся две XSS-дырки (.http://www.securitylab.ru/46410.html):
Вариант 1:
В misc.cgi
после
Код:
elsif ($action eq "icq") {

ставим:
Код:
$UIN=&cleaninput($UIN);

после
Код:
elsif ($action eq "aim") {

ставим:
Код:
$aimname=&cleaninput($aimname);

Вариант 2:
находим в misc.cgi эту строчку:

Код:
elsif ($action eq "icq") {

добавляем после неё
Код:
if($UIN!~m!^\d+$!){
print header ();
&error('&Неправильный UIN ICQ');
}
else{

+ ставим закрыівающую фигурную скобку чуть ниже тут:

Код:
 
    ~;}
 
} # end elsif icq
 

 
Далее по AIM то же самое:
находим
Код:
elsif ($action eq "aim") {

добавляем после него
 
Код:
if($aimname!~m!^[\-A-Z a-z\d_]+$!){
print header ();
&error('&Неправильное имя AIM');
}
else{

и ниже закрываем скобку тут:

Код:
    ~;}
 
 
} # end aim


Первый вариант проводит стандартную замену "опасных" символов, второй — проверяет валидность номера ICQ и имени пользователя AIM'а.
 

+ сейчас при регистрации в поля ICQ и AOL можно вписать что угодно. Если нужна проверка их валидности, можно сделать следующее:
в register.cgi:
находим:

Код:
if($emailaddress !~ /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/) { print header('text/html; charset=windows-1251'); &error("$ibtxt{'1858'}&$ibtxt{'0906'}"); }

ниже добавляем:  

Код:
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!");    
}  

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!");  
}  

   
 
 
 
 
 
 
 

Всего записей: 285 | Зарегистр. 06-07-2001 | Отправлено: 12:03 03-11-2001 | Исправлено: trew, 21:27 14-02-2005
Return0

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

Та же уязвимость имеется при использовании AIM'а, так что и после
Код:
elsif ($action eq "aim") {
стОит добавить аналогичную очистку переменной $aimname:
Код:
$aimname=&cleaninput($aimname);

Всего записей: 40 | Зарегистр. 17-04-2003 | Отправлено: 12:22 20-07-2004 | Исправлено: Return0, 12:30 20-07-2004
trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
lynx  
 У меня  в ikon.lib после my $post = shift;  идет много этих $post , код который выше  поставить перед всеми или   что-то заменить ?
 
 

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 14:21 20-07-2004
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
trew

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

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

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

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

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 21:59 20-07-2004
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lynx

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

я не спрашивал какая она ...
я предлагал: по-моему, однократный поиск/замена по немного более сложному шаблону эффективнее нескольких поисков/замен по немного более простым шаблонам...
 
Или вообще можно просто проверять наличие http или ftp в начале ссылки, а если нету их — то искать двоеточие: в локальных ссылках, напр. [img]mailpng.cgi?user=lynx[/img] двоеточия быть не может. В итоге: всё, что не начинается с ftp или http и содержит двоеточие отсеиваем...
 
Что скажешь?
 
 
lynx

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

А почему фикс на AIM не упомянула?
 
Добавлено
ага...
 

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

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


 
Полная версия, стало быть:
 
Фиксятся две XSS-дырки (.http://www.securitylab.ru/46410.html):

Вариант 1:

Цитата:
В misc.cgi
после
Код:
elsif ($action eq "icq") {
ставим:
Код:
$UIN=&cleaninput($UIN);

после
Код:
elsif ($action eq "aim") {
ставим:
Код:
$aimname=&cleaninput($aimname);

Вариант 2:

Цитата:
находим в misc.cgi эту строчку:

Цитата:
elsif ($action eq "icq") {

добавляем после неё
Цитата:
if($UIN!~m!^\d+$!){
print header ();
&error('&Неправильный UIN ICQ');
}
else{
+ ставим закрыівающую фигурную скобку чуть ниже тут:
Цитата:
 
    ~;}
 
} # end elsif icq
 

 
Далее по AIM то же самое:
находим
Цитата:
elsif ($action eq "aim") {

добавляем после него
Цитата:
 
if($aimname!~m!^[\-A-Z a-z\d_]+$!){
print header ();
&error('&Неправильное имя AIM');
}
else{

и ниже закрываем скобку тут:

Цитата:
    ~;}
 
 
} # end aim


Первый вариант проводит стандартную замену "опасных" символов, второй — проверяет валидность номера ICQ и имени пользователя AIM'а.
 

+ сейчас при регистрации в поля ICQ и AOL можно вписать что угодно. Если нужна проверка их валидности, можно сделать следующее:
Цитата:
в register.cgi:
находим:

Цитата:
    if($emailaddress !~ /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/) { print header('text/html; charset=windows-1251'); &error("$ibtxt{'1858'}&$ibtxt{'0906'}"); }  
ниже добавляем:
Цитата:
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!");  
}

 


----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 22:59 20-07-2004 | Исправлено: Svarga, 23:45 20-07-2004
trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
lynx
Svarga
 Прошу прощения,   а можно поднять готовое в верхний пост, чтоб повысить восприятие всего этого  

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 00:00 21-07-2004
Return0

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lynx

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

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

Код:
elsif ($action eq "aim") {

Всего записей: 40 | Зарегистр. 17-04-2003 | Отправлено: 07:50 21-07-2004 | Исправлено: Return0, 07:51 21-07-2004
shishkov



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
 
 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!");  
}
 

Хм, чего то не так. А именно, если их вообще нет, ну не указал человек?
C мейлом то  все понятно, он как счастье, которое "... не может не есть"
А здесь надо проверить еще вот так  
 

Код:
 
 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!");  
}
 

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

Всего записей: 44 | Зарегистр. 15-06-2002 | Отправлено: 17:49 21-07-2004
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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


Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 02:24 22-07-2004 | Исправлено: lynx, 02:27 22-07-2004
trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
lynx  Спасибо!
 
 

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

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 03:21 22-07-2004
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
trew

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

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

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 05:15 22-07-2004
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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 — одно и то же...

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 09:40 22-07-2004
trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
lynx Класс! Огромное спасибо!
 
Svarga
 

Цитата:
AOL и AIM — одно и то же...
тем более... Чем проще - тем надежнее.

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 13:08 22-07-2004
shishkov



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

Просто если ничего не указать - с неисправленным кодом выдается ошибка и регистрации не происходит. Поэтому надо видимо исправить.  

Всего записей: 44 | Зарегистр. 15-06-2002 | Отправлено: 15:49 22-07-2004
Gram



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

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

----------
Intellect Board | Miranda Gram Pack

Всего записей: 388 | Зарегистр. 22-01-2004 | Отправлено: 12:23 26-07-2004
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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!");
}


----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 00:30 09-08-2004
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Внимание!

 
 
Обнаружена новая возможность вставить код 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;
 

 
Красным выделены строки, обрабатывающие коды size, font и color. Их нужно удалить, а вместо них написать следующее:
 

Код:
 
#Опять фиксим яву by batva
$post =~ s/(\[size=)(\d+)\](.+?)(\[\/size\])/<font size=\"$2\">$3<\/font>/isg;    
$post =~ s/(\[font=)([A-Z a-z]+)\](.+?)(\[\/font\])/<font face=\"$2\">$3<\/font>/isg;    
$post =~ s/(\[color=)([A-Za-z]+|[#\dA-F]+)\](.+?)(\[\/color])/<font color=\"$2\">$3<\/font>/isg;  
#end фиксим яву  
[/color]
 
Итого, вся подпрограмма будет иметь такой вид:
 
[code]
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/\[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/\[u\]/<u>/isg;
    $post =~ s/\[br\]/<br>/isg;
    $post =~ s/\[\/u\]/<\/u>/isg;
    $post =~ s/\[img\](.+?)\[\/img\]/<img src=\"$1\">/isg;
     
#Опять фиксим яву by batva
$post =~ s/(\[size=)(\d+)\](.+?)(\[\/size\])/<font size=\"$2\">$3<\/font>/isg;    
$post =~ s/(\[font=)([A-Z a-z]+)\](.+?)(\[\/font\])/<font face=\"$2\">$3<\/font>/isg;    
$post =~ s/(\[color=)([A-Za-z]+|[#\dA-F]+)\](.+?)(\[\/color])/<font color=\"$2\">$3<\/font>/isg;  
#end фиксим яву  
     
    $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
     
     

     
     
     
Большое списибо batva за обнаружение уязвимости и ее фикс.

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 20:11 18-08-2004
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Небольшая поправка.
 
Строка:
 

Код:
$post =~ s/(\[font=)([A-Z a-z]+)\](.+?)(\[\/font\])/<font face=\"$2\">$3<\/font>/isg;    

 
должна иметь вид:
 

Код:
$post =~ s/(\[font=)([A-Z a-z-]+)\](.+?)(\[\/font\])/<font face=\"$2\">$3<\/font>/isg;    

 
 
(с) batva

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 18:23 31-08-2004
FROMFAF

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не там уязвимости ищите.
На самом деле у ИБ2 на этот счёт есть пара огромных дыр, одну из которых очень легко использовать, вторую использовать чуть труднее. Причём они есть без исключения во всех версиях движка, и никогда не проходили в багтраках. Ищите и обрящите (уязвимости совершенно очевидные).
А по поводу последней дырки (хотя не уверен, что её можно таковой считать) - она также есть в хаке дополнительных кодов, там где glow, hflip и пр.

Всего записей: 11 | Зарегистр. 07-01-2005 | Отправлено: 13:41 07-01-2005
Gram



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FROMFAF, это конечно все хорошо что ты говоришь про уязвимость, но хотелось бы получить не просто упоминания об уязвимости, но и указания этих дырок. А то ты в соседней ветке про "общественно полезные действия" говорил...

----------
Intellect Board | Miranda Gram Pack

Всего записей: 388 | Зарегистр. 22-01-2004 | Отправлено: 16:39 07-01-2005
FROMFAF

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для общественности полезнее, чтобы описаний дырок равно как и описаний фиксов (из них можно понять, где сама дырка) не было.
Что началось, когда выложили фикс бага с javascript, я ещё помню...
Не хочу брать на себя ответственность за такое же.

Всего записей: 11 | Зарегистр. 07-01-2005 | Отправлено: 17:39 07-01-2005
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4

Компьютерный форум Ru.Board » IkonBoard и другие форумы » Ikonboard v.2 » Баг с Яваскриптом (javascript) во всех версиях IkonBoard


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru