http://habrahabr.ru/post/245961/
Хорошо, хорошо. Я не совсем «взломал Facebook». Я добился выполнение команды уровня операционной системы на одном из серверов Facebook.
Рассказ, как я это сделал.
В прошлом сентябре я оказался в постели со страшным гриппом. Просто валятся в постели было скучно и начал копаться программе
Поиска уязвимостей Facebook (Bug Bounty Facebook). Я и раньше участвовал в подобных программах, но никогда в программе Facebook.
Кстати, это совсем не сложный хак, но он сработал.
Начал с
nmap, просканировал порты и ограничился доменами принадлежащих Facebook. Обнаружил несколько сервисов на разных IP-адресах. Также я посмотрел на поглощения, которые сделал Facebook. Провел подобное сканирование стандартных портов обнаруженных сервисов.
На одном из IP-адресов приобретенном Facebook оказался
Jenkins, работающий на стандартном порту. Открыв его в моем браузере, к сожалению, получил окно логина базовой аутентификации (Basic Authentication). Полагаю, это место, где большинство других охотников за уязвимостями и собственная команда безопасности Facebook заканчивают тестирование.
Решил сделать
nmap полное сканирование портов. Результаты показали, другой сервис
Jenkins работающею на менее стандартном порту. Получив к нему доступ, меня не ожидала аутентификация. Бинго!
Для тех из вас, кто не знают,
Jenkins — сервер непрерывной интеграции (CI, Continuous Integration). После проверки подлинности позволяет запускать Groovy-код через Jenkins Script Console.
С помощью Groovy-кода и Jenkins Script Console я мог выполнять команды на сервере под пользователем
jenkins.
Пример Groovy-кода для запуска команды
whoami:
def command = """whoami"""
def proc = command.execute()
proc.waitFor()
println "stdout: ${proc.in.text}"
Сообщил об этой проблеме Facebook, и они исправил это очень быстро. Я получил
$7500 через их программу поиска уязвимостей. На платеж потребовалось несколько месяцев и много писем туда и обратно. Но конечном счете я его получил.
Что в итоге? Не забывайте основ. Я нашел довольно рискованную ошибку в одном из приобретений Facebook, просто лежа в кровати, только с помощью
nmap.
Я хотел бы сказать спасибо Facebook за платеж и надеюсь, что смогу сообщить им еще об ошибках в будущем.