Мы взломали GitHub на месяц
Введение
После долгого перерыва мы возвращаемся с новым обзором. Хотя мы обычно не участвуем в программах вознаграждения за ошибки из-за других обязательств, мы взяли на себя задачу взломать GitHub в течение месяца и рады поделиться своими выводами. Все началось с того, что Шивам Сингх (г-н Раджпут Хакер) связался со мной в ноябре и предложил попробовать баг-баунти. Мы решили сосредоточиться на npmjs.com, дочерней компании GitHub. Несмотря на то, что GitHub является крупной корпорацией, а программа вознаграждения за обнаружение ошибок была общедоступной на HackerOne, мы чувствовали, что стоит попробовать.
Разведка
В поисках уязвимостей в npmjs.com Th3Pr0xyB0y (Ванш Девган) и г-н Раджпут Хакер (Шивам Сингх) начали с разведывательной операции. Мы использовали наш собственный продукт X (часть пакета CyberXplore) для сбора как можно большего количества информации, включая IP-адреса, открытые порты, снимки экрана и конечные точки. Благодаря мощности облачных вычислений процесс разведки был быстрым и эффективным.
Однако, изучив собранную информацию, мы обнаружили, что возможности атаки на цель, npmjs.com и npmjs.org, были ограничены. Наш собственный продукт X упростил процесс разведки, и мы рады сообщить, что закрытая бета-версия скоро будет доступна для широкой публики .
Сосредоточение внимания на бизнес-логике
Мистер Раджпут Хакер и я решили сосредоточиться исключительно на ошибках бизнес-логики в приложении. Прежде чем мы начали наш поиск, мы убедились, что полностью поняли приложение. Это включало минимальное использование Burp Suite и сосредоточение внимания на понимании основных функций и процессов приложения. Нашей целью было найти слабые места в бизнес-логике, которые потенциально могли быть использованы. Ограничив наш набор инструментов и сосредоточившись на понимании приложения, мы стремились выявить любые уникальные или упущенные из виду уязвимости. Поскольку npmjs.com было относительно небольшим приложением, наше понимание и заметки заняли у нас менее двух часов.
Обнаружены уязвимости
Несмотря на то, что мы упомянули о 9 обнаруженных уязвимостях, сегодня мы напишем о 3 из них, которые приведены ниже:
- Обход проверки входа на npmjs.com
- Предварительное поглощение аккаунта на npmjs.com
- Проблема с контролем доступа на сайте education.github.com
Описание -
Проходя часть аутентификации npmjs.com и общие функции, такие как обновление адреса электронной почты и функции обновления профиля, мы обнаружили странное поведение приложения, которое привлекло наше внимание, которое представляло собой формат ссылки для проверки электронной почты, ссылки для сброса пароля и отправленной ссылки. обновить адрес электронной почты.
Ссылка была отформатирована как https://npmjs.com/verify/{some_random_token_here} для всех функций, будь то сброс пароля, ссылка для подтверждения электронной почты или любая ссылка XYZ на этом сайте для любых целей. Затем мы наблюдали, что каждый раз, когда вы входите в приложение, оно отправляет код подтверждения на ваш зарегистрированный адрес электронной почты, и вы должны ввести его как часть функции проверки входа (вид кода 2FA / MFA в электронной почте), чтобы успешно войти в учетную запись. . затем мы попытались обойти эту функцию и успешно обошли ее, поскольку мы полностью использовали приложение за последние 2 часа, мы знали каждую функцию, поэтому мы смогли связать и получили обход, прочитайте следующие шаги, чтобы воспроизвести, чтобы увидеть, как мы сделал это.
Во время нашего изучения процесса аутентификации и общих функций npmjs.com, таких как обновление адресов электронной почты и профилей, мы обнаружили своеобразное поведение в формате ссылок для подтверждения электронной почты, и ссылки, отправленные для обновления адресов электронной почты. Эти ссылки были отформатированы как https://npmjs.com/verify/{random_token} и использовались для всех функций, включая сброс пароля, проверку электронной почты и другие.
Мы также заметили, что каждый раз, когда пользователь заходил в приложение, на зарегистрированный адрес электронной почты отправлялся проверочный код. Этот проверочный код был необходим для завершения процесса входа в систему, действуя как форма двухфакторной аутентификации. Второе, что мы заметили. При обновлении адреса электронной почты на npmjs процесс обновления происходил без запроса подтверждения пароля. Электронное письмо будет отправлено как на старый, так и на новый адрес электронной почты. Электронное письмо, отправленное на старый адрес, будет информировать получателя о том, что если изменение не было внесено им, он может щелкнуть ссылку (https://npmjs.com/verify/{some_random_token_here}), чтобы отменить изменение и сделать свой старый адрес текущий. Электронное письмо, отправленное на новый адрес, будет содержать ссылку для подтверждения нового электронного письма и привязки его к только что обновленной учетной записи.
Мы столкнулись с неожиданной проблемой при попытке войти в учетную запись после обновления адреса электронной почты на странице профиля. Несмотря на то, что ни в старом, ни в новом письме не были подтверждены или нажаты какие-либо ссылки, система отобразила сообщение о том, что код подтверждения был отправлен на новый неподтвержденный адрес. Это, казалось, предполагало, что мы не сможем войти в систему. Однако при ближайшем рассмотрении мы обнаружили электронное письмо, отправленное на наш старый адрес, с просьбой отменить изменение, чтобы избежать блокировки учетной записи. При нажатии на предоставленную ссылку ( https://npmjs.com/verify/{random_token}), чтобы вернуть письмо, нас перенаправили на страницу входа. К нашему удивлению, когда мы ввели свои учетные данные, система не запросила код подтверждения и вместо этого позволила нам войти в систему и отменить изменение электронной почты.
Однако после дальнейшего расследования нам удалось успешно обойти эту функцию. Наше глубокое понимание приложения, полученное за два часа ознакомления с его функциями, позволило нам связать различные функции и найти обходной путь. Шаги для воспроизведения обхода можно найти ниже.
Нажмите здесь или посетитеhttps://blog.cyberxplore.com/we-hacked-github-for-a-month-heres-what-we-found/Чтобы прочитать полный полный блог, размещенный в блоге CyberXplore .
Не забывайте подписываться на наших исследователей безопасности —
Спасибо всем за чтение, не забудьте поставить аплодисменты, если вам это нравится.
Подписывайтесь на нас -
Твиттер → @ MrRajputHacker @ Th3Pr0xyB0y
Instagram → @ MrRajputHacker @ vanshdevgan
LinkedIn → MrRajputHacker @ th3pr0xyb0y
Medium → @ mrrajputhacker @ th3pr0xyb0y

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































