habrahabr

Как я взломал Facebook

  • среда, 17 декабря 2014 г. в 02:11:41
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 за платеж и надеюсь, что смогу сообщить им еще об ошибках в будущем.