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

Криптографическая атака на SMF
  #1  
Старый 15.08.2008, 23:54
Аватар для n-000
n-000
Участник форума
Регистрация: 25.10.2006
Сообщений: 108
Провел на форуме:
495411

Репутация: 91
Отправить сообщение для n-000 с помощью ICQ
По умолчанию Криптографическая атака на SMF

Наверное не один из нас сталкивался с траблами когда его веб шелл (залитый неимоверними усилиями) на какой либо ресурс, в данном случае это форум SMF находил и удалял злой дятька АдМиН ?
Размышляя на эту тему хотел бы боделиться некоторыми соображениями, для которых необходимо иметь веб шелл на этом ресурсе ...
Сампле машин форум имеет некоторые фишки, как и большое кол во движков (не только форумы), такие как ретрив пароля ... так вот имея доступ к БД, я как то раз зделал ретрив пасса админу и подсмотрел табличку в базе под названием validation_code, формирование этого кода в смф происходит таким образом :

PHP код:
$password substr(preg_replace('/\W/'''md5(rand())), 010);

    
// Set the password in the database.
    
db_query("
        UPDATE 
{$db_prefix}members
        SET validation_code = '" 
md5($password) . "'
        WHERE 
$searchField = '$_POST[user]'
        LIMIT 1"
__FILE____LINE__);

    require_once(
$sourcedir '/Subs-Post.php');

    
sendmail($row['emailAddress'], $txt['reminder_subject'],
        
sprintf($txt['sendtopic_dear'], $row['realName']) . "\n\n" .
        
"$txt[reminder_mail]:\n\n" .
        
"$scripturl?action=reminder;sa=setpassword;u=$row[ID_MEMBER];code=$password\n\n" .
        
"$txt[512]$user_info[ip]\n\n" .
        
$txt[35] . ': ' $row['memberName'] . "\n\n" .
        
$txt[130]); 

Так вот, весь смысл в том, что при ретриве генерица произвольное число, шифруется MD5 и обрезается до 10 символов ...
Хочу заметить , что эта лабуда сначало пишется в базу в столбец validation_code потом ещё раз шифруется и обрезается, только после этого отправляется на почту юзера !

На первый взгляд дело дрянь ! Но когда во время моих глумленей удалили ВСЕ мои шелы (скорее всего сервер просто почистили, переустановили скрипты и бекапом вернули базу) мне так не показалось, имея на руках эти 10 символов, начал усиленно думать ...
Я понял, что шелы не вернуть, а вот validation_code наверняка остался при бекапе и зная 10 символов из целого хэша можно попробывать расшифровать и сменить пасс админу. Параметры для брута были известны, это маленькие латинские и цифры, но 10 символов, как понимаете не одна ноч расшифровки ...
Но как то я случайно вбил все маленкие символы и о чудо -) пасворд про нашол коллизию под эти 10 символов - Благо эта тузла умеет понимать не полные хэши ))
Результат получился не особо впечатляющим (2nq3&l7) всё портил символ &, при переходе по ссылке на ретрив пасса (http://site.ru/forum/index.php?action=reminder;sa=setpassword;u=1;code= 2nq3&l7) этот символ как бы передавал ещё один параметр скрипту ретрива, тоесть всё что до него проходило, а после отсекалось !
Зная validation_code в СМФ можно без труда изменить пасс любому юзеру, чей код известен. И тут я решил - а что если подделать HTTP пакет и через POST запрос передать переменную code вместе с этим мать его & !
Воспользовавшись локальным прокси сервером Odysseus я так и зделал -)
Для не просвящёных одисей - это такая тузла которая при отправке каких либо данных в инет даёт вам возможность отредактировать их перед отправкой.
Ну и конечно я радовался как первокласник новому году, когда мне сказали что пасс админа успешно поменян и предложили зайти на форум -))
Через некоторое время мой хитрозамаскированный шелл снова удалили, скорее всего админ опять зделал бакуп базы и всё переустановил, но ещё при этом апгрейдил форум -) наивно , но он до сих пор не вкурил что дело не в уязвимости скрипта, а бэкдор до сих пор храниться в его базе -)
Вот таким вот образом я обеспечил себе дверь, через которую можно зайти не один раз, даже при полной чистки сервака, был бы бэкап -) ... удачи вам !
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Обзор уязвимостей Simple Machines Forum] FeraS Форумы 48 17.06.2010 16:25
streSS teSt Firewall'ов Elekt Защита ОС: вирусы, антивирусы, файрволы. 22 27.03.2009 19:43



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


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




ANTICHAT.XYZ