Я был обескуражен ответом техподдержки альфабанка, приведенным в посте «Находим SQL инъекцию...», а потому решил посмотреть как обстоят дела на других поддоменах.
Первое что я сделал — это нашел админку на b***.alfabank.ru с помощью того же гугла и незамысловатого «site:alfabank.ru inurl:/admin/»
И что я там увидел?
Скромное меню обещало мне PHPinfo(), настройки параметров сайта, и много чего еще:
- Empty cache
- Function reference
- Hook_elements()
- PHPinfo()
- Rebuild menus
- Reinstall modules
- Session viewer
- Theme registry
- Variable editor
Уже сейчас у меня в руках оказались редактируемые настройки сайта:
Покопавшись немного с тем, что нашел, я заметил упоминание про еще один поддомен (названия поддоменов не привожу здесь по причине, которую вы прочитаете в конце поста).
Опять же, простым гуглением по имени этого поддомена получаем выдачу, в которой сразу обнаруживаем страницу пользователя по фамилии m*****kaya.
Там (о, чудо!) заботливый разработчик вывел нам var_dump объекта, благодаря чему мы видим hash пароля:1d0258c2440a8d19e716292b231e3190.
Что же, поищем его в радужных таблицах? И находим: пароль manager. Не слишком изощрённо, на мой взгляд, но по крайней мере не «love/secret/sex/god». Успешно логинимся: nm*****kaya@alfabank.ru:manager.
Теперь мы обладаем правами зарегистрированного участника, сотрудника банка, и админа сайта, что немаловажно. Помимо того, что мы имеем доступ ко всем юзерам данного ресурса, доступный нам функционал расширился.
Разумеется, я мгновенно был заинтригован интерфейсом выполнения произвольных комманд php (кстати, кто-то может мне объяснить, зачем вообще он нужен на данном ресурсе?), где получил практически неограниченные возможности для исследования (ведь все это было проделано исключительно в научно-познавательных целях, вы же понимаете, да?):
echo shell_exec('uname -a');
echo shell_exec('grep -r "password" /usr/ > /var/tmp/tst.log');
echo shell_exec('find / -type d -perm 07700');
echo shell_exec('cat /etc/passwd');
echo shell_exec('ifconfig');
echo shell_exec('ps auxww');
echo shell_exec('cat /usr/local/etc/apache22/Includes/phpmyadmin.conf');
echo shell_exec('which wget');
и прочее в таком духе.
Помимо всего прочего, выяснилось, что права на доступ для пользователя www выставлены архилиберально. И правда, чего париться над /files/ если можно поставить 0777.
Дальше стало скучно, и я отписал о найденной уязвимости в службу поддержки, к которой, отметим справедливости ради, у меня получилось достучаться с первого раза.
Доброго времени суток, уважаемые сотрудники "Альфа-Банк"!
Уведомляю вас о том, что мною найдена серьезная уязвимость на одном
из ваших серверов, причем, на этот раз, на сервере отнюдь не
десятилетней давности.Уязвимость вполне серьезная: она позволяет злоумышленнику выполнить
произвольную комманду shell на вашем сервере, дает админский доступ
к вашим [перечисление ресурсов], и много-много других "вкусностей". Видимо
за нее вам следует сказать спасибо товарищу [site-coder]@ gmail.com.Некоторые подробности:
...
login: [login]
pass: managerну и далее php shell_exec('PROFIT').
С уважением, Александр.
Выводы в стиле капитана:
- Даже тестовые и devel сервера следует холить и лелеять, защищая их от посторонних глаз.
- Не следует предоставлять доступ к админке сайта людям, которые ставят словарные пароли, и при этом обладают чрезмерными правами доступа.
- Не следует давать возможность контент-менеджерам, тестерам, и прочим выполнять произвольные команды на сервере.
- Забывать закрывать страницы от поисковых роботов это плохо, плохо, плохо!
- Ну и, разумеется, не следует грубить и подкалывать тех, кто сообщает вам о найденных уязвимостях.
Через два дня мне пришел ответ:
Александр, здравствуйте.
Большое спасибо за указание на ошибку! Безусловно, отдельное спасибо и огромное выражение нашей признательности за то, что не стали ее использовать, а поставили нас в известность.
В данный момент мы все исправили и прикрыли указанное Вами безобразие.
Этот сайт, безусловно, не десятилетней давности, более того, он пока не запущен – занимаемся его разработкой буквально в свободное от работы время. Конечно же, перед запуском «в бой» мы бы тщательно все проверили и протестировали. Хотя это и не оправдывает того факта, что мы недостаточно серьезно отнеслись к защите разрабатываемого продукта. В связи с тем, что речь идет о проектах, которые находятся в разработке и пока не анонсировались общественности, были бы крайне признательны, если бы Вы не публиковали ссылки на них до момента запуска.
Еще раз благодарю Вас за информацию!
PS Судя по Вашему комментарию «десятилетней», Вы читали запись на Хабре. Очень жаль, что автор той записи не привел описание всех своих действий и всю переписку целиком, а только последнее письмо. В таком виде, конечно же, получается несколько иная интерпретация нашего отношения к помощи от пользователей наших сайтов. Жаль, что данную запись не видят все те прекрасные люди, которые ежедневно нам пишут об ошибках и неточностях на наших основных сайтах, которые помогают нам быть лучше, и которым мы очень признательны за оказываемую помощь.
Так как меня попросили не публиковать ссылки на ресурсы, то я выпилил их и особо красочные скриншоты из своего поста.
Очень хотелось бы обратить внимание читателя 090h на последний абзац и почитать его комментарии к этому письму.
На текущий момент уязвимость, как вы понимаете, закрыта.
Спасибо за внимание.
Автор: alexglue