Hackowaliśmy GitHub przez miesiąc
Wstęp
Po dłuższej przerwie wracamy z nowym wpisem. Chociaż zazwyczaj nie uczestniczymy w programach bug bounty ze względu na inne zobowiązania, podjęliśmy wyzwanie hakowania GitHub przez miesiąc i cieszymy się, że możemy podzielić się naszymi odkryciami. Wszystko zaczęło się, gdy Shivam Singh (pan Rajput Hacker) skontaktował się ze mną w listopadzie i zachęcił do spróbowania bug bounty. Postanowiliśmy skupić się na npmjs.com, filii GitHub. Pomimo tego, że GitHub to duża korporacja, a program bug bounty był publicznie dostępny w HackerOne, uznaliśmy, że warto spróbować.
Rekonesans
Nasze poszukiwania luk w npmjs.com, Th3Pr0xyB0y (Vansh Devgan) i pan Rajput Hacker (Shivam Singh) rozpoczęli od przeprowadzenia operacji zwiadowczej. Wykorzystaliśmy nasz wewnętrzny produkt, X (część pakietu CyberXplore), aby zebrać jak najwięcej informacji, w tym adresy IP, otwarte porty, zrzuty ekranu i punkty końcowe. Dzięki mocy przetwarzania w chmurze proces rozpoznania był szybki i wydajny.
Jednak po przejrzeniu zebranych informacji stwierdziliśmy, że możliwości ataku na cel, npmjs.com i npmjs.org, są ograniczone. Nasz wewnętrzny produkt, X , sprawił, że proces rekonesansu był dziecinnie prosty i z przyjemnością ogłaszamy, że prywatna wersja beta będzie wkrótce dostępna dla ogółu społeczeństwa .
Koncentrując się na logice biznesowej
Pan Rajput Hacker i ja postanowiliśmy skupić się wyłącznie na błędach logiki biznesowej w aplikacji. Zanim rozpoczęliśmy nasze poszukiwania, upewniliśmy się, że całkowicie zrozumieliśmy aplikację. Wiązało się to z minimalnym wykorzystaniem pakietu Burp Suite i skupieniem się na zrozumieniu podstawowych funkcji i procesów aplikacji. Naszym celem było znalezienie wszelkich słabych punktów w logice biznesowej, które potencjalnie mogłyby zostać wykorzystane. Ograniczając nasz zestaw narzędzi i skupiając się na zrozumieniu aplikacji, chcieliśmy odkryć wszelkie unikalne lub przeoczone luki w zabezpieczeniach. Ponieważ npmjs.com była relatywnie małą aplikacją, zrozumienie i zrobienie notatek zajęło nam mniej niż dwie godziny.
Wykryte luki w zabezpieczeniach
Mimo że wspomnieliśmy o 9 zgłaszanych lukach w zabezpieczeniach, dzisiaj napiszemy tutaj o 3 z nich, które podano poniżej:
- Obejście weryfikacji logowania na npmjs.com
- Wstępne przejęcie konta na npmjs.com
- Problem z kontrolą dostępu na Education.github.com
Opis -
Przeglądając część uwierzytelniającą npmjs.com i typowe funkcje, takie jak aktualizacja adresu e-mail i funkcje aktualizacji profilu, odkryliśmy dziwne zachowanie aplikacji, które przykuło naszą uwagę, czyli format linku weryfikacyjnego e-mail, linku do resetowania hasła i linku wysłanego aby zaktualizować adres e-mail.
Link został sformatowany jak https://npmjs.com/verify/{some_random_token_here} dla wszystkich funkcji, takich jak resetowanie hasła, link weryfikacyjny e-mail lub dowolny link XYZ na tej stronie w dowolnym celu. Następnie zaobserwowaliśmy, że za każdym razem, gdy logujesz się do aplikacji, wysyła ona kod weryfikacyjny na zarejestrowany adres e-mail i musisz go wprowadzić w ramach funkcji weryfikacji logowania (rodzaj kodu 2FA/MFA na e-mailu), aby pomyślnie zalogować się na konto . następnie próbowaliśmy ominąć tę funkcję i udało nam się ją ominąć, ponieważ całkowicie wykorzystaliśmy aplikację w ciągu ostatnich 2 godzin, znaliśmy każdą funkcjonalność, więc mogliśmy się powiązać i uzyskać obejście, przeczytaj poniższe kroki, aby odtworzyć, aby zobaczyć, jak my zrobiłem to.
Podczas naszego badania procesu uwierzytelniania i typowych funkcji npmjs.com, takich jak aktualizacja adresów e-mail i profili, odkryliśmy szczególne zachowanie w formacie linków weryfikacyjnych e-mail, wklejanie Hacked GitHub przez miesiąc: Here's What We Foundsword reset links, oraz łącza wysyłane w celu aktualizacji adresów e-mail. Linki te zostały sformatowane jako https://npmjs.com/verify/{random_token} i były używane do wszystkich funkcji, w tym do resetowania hasła, weryfikacji adresu e-mail i innych.
Zauważyliśmy również, że za każdym razem, gdy użytkownik logował się do aplikacji, na zarejestrowany adres e-mail wysyłany był kod weryfikacyjny. Ten kod weryfikacyjny był wymagany do zakończenia procesu logowania, działając jako forma uwierzytelniania dwuskładnikowego. Druga rzecz, którą zauważyliśmy Podczas aktualizacji adresu e-mail na npmjs proces aktualizacji przebiegałby bez konieczności potwierdzenia hasła. Wiadomość e-mail zostanie wysłana zarówno na stary, jak i nowy adres e-mail. Wiadomość e-mail wysłana na stary adres informowałaby odbiorcę, że jeśli zmiana nie została dokonana przez niego, może kliknąć link (https://npmjs.com/verify/{some_random_token_here}), aby cofnąć zmianę i przywrócić stary adres obecny. E-mail wysłany na nowy adres będzie zawierał link do weryfikacji nowego e-maila i powiązania go z kontem, które właśnie zostało zaktualizowane.
Napotkaliśmy zaskakujący problem podczas próby zalogowania się na konto po aktualizacji adresu e-mail na stronie profilu. Pomimo braku potwierdzenia lub kliknięcia w jakikolwiek link w starym lub nowym e-mailu, system wyświetlił komunikat informujący, że kod weryfikacyjny został wysłany na nowy, niezweryfikowany adres. Wydawało się to sugerować, że nie będziemy mogli się zalogować. Jednak po bliższym przyjrzeniu się odkryliśmy wiadomość e-mail wysłaną na nasz stary adres z prośbą o cofnięcie zmiany w celu uniknięcia blokady konta. Po kliknięciu podanego linku ( https://npmjs.com/verify/{random_token}), aby przywrócić wiadomość e-mail, zostaliśmy przekierowani na stronę logowania. Ku naszemu zaskoczeniu, kiedy wprowadziliśmy nasze dane uwierzytelniające, system nie poprosił o kod weryfikacyjny, a zamiast tego pozwolił nam się zalogować i cofnąć zmianę adresu e-mail.
Jednak po dokładniejszym zbadaniu udało nam się pomyślnie obejść tę funkcję. Nasze dogłębne zrozumienie aplikacji, zdobyte po spędzeniu dwóch godzin na zapoznaniu się z jej funkcjami, pozwoliło nam powiązać różne funkcjonalności i znaleźć obejście. Kroki, aby odtworzyć obejście, można znaleźć poniżej.
Kliknij tutaj lub odwiedźhttps://blog.cyberxplore.com/we-hacked-github-for-a-month-heres-what-we-found/Aby przeczytać cały blog opublikowany na blogu CyberXplore .
Nie zapomnij śledzić naszych badaczy bezpieczeństwa —
Dzięki, wszyscy za przeczytanie, nie zapomnijcie zostawić lajka, jeśli wam się spodoba.
Podążaj za nami -
Twitter → @ MrRajputHacker @ Th3Pr0xyB0y
Instagram → @ MrRajputHacker @ vanshdevgan
Linkedin → MrRajputHacker @ th3pr0xyb0y
Średni → @ mrrajputhacker @ th3pr0xyb0y

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































