Wir haben GitHub einen Monat lang gehackt
Einführung
Nach einer langen Pause sind wir mit einem neuen Artikel zurück. Obwohl wir aufgrund anderer Verpflichtungen normalerweise nicht an Bug-Bounty-Programmen teilnehmen, haben wir uns einen Monat lang der Herausforderung gestellt, GitHub zu hacken, und freuen uns, unsere Erkenntnisse zu teilen. Alles begann, als Shivam Singh (Mr. Rajput Hacker) im November Kontakt zu mir aufnahm und mich ermutigte, Bug Bounty auszuprobieren. Wir haben uns entschieden, uns auf npmjs.com zu konzentrieren, eine Tochtergesellschaft von GitHub. Trotz der Tatsache, dass GitHub ein großes Unternehmen ist und das Bug-Bounty-Programm auf HackerOne öffentlich war, waren wir der Meinung, dass es einen Versuch wert war.
Aufklärung
Bei unserem Bestreben, Schwachstellen in npmjs.com zu finden, führten Th3Pr0xyB0y (Vansh Devgan) und Herr Rajput Hacker (Shivam Singh) zunächst eine Aufklärungsoperation durch. Wir nutzten unser hauseigenes Produkt X (Teil der CyberXplore-Suite), um so viele Informationen wie möglich zu sammeln, darunter IP-Adressen, offene Ports, Screenshots und Endpunkte. Dank der Leistungsfähigkeit von Cloud Computing war der Aufklärungsprozess schnell und effizient.
Bei der Durchsicht der gesammelten Informationen stellten wir jedoch fest, dass die Angriffsmöglichkeiten auf die Ziele npmjs.com und npmjs.org begrenzt waren. Unser hauseigenes Produkt X hat den Aufklärungsprozess zum Kinderspiel gemacht und wir freuen uns, Ihnen mitteilen zu können, dass die private Beta bald für die breite Öffentlichkeit verfügbar sein wird .
Fokussierung auf Geschäftslogik
Herr Rajput Hacker und ich haben beschlossen, uns ausschließlich auf Fehler in der Geschäftslogik in der Anwendung zu konzentrieren. Bevor wir mit der Suche begannen, stellten wir sicher, dass wir die Anwendung vollständig verstanden hatten. Dies erforderte eine minimale Nutzung der Burp Suite und einen Fokus auf das Verständnis der Kernfunktionen und Prozesse der Anwendung. Unser Ziel war es, etwaige Schwachstellen in der Geschäftslogik zu finden, die potenziell ausgenutzt werden könnten. Indem wir unser Toolset einschränkten und uns auf das Verständnis der Anwendung konzentrierten, wollten wir alle einzigartigen oder übersehenen Schwachstellen aufdecken. Da es sich bei npmjs.com um eine relativ kleine Anwendung handelte, dauerte es weniger als zwei Stunden, bis wir alles verstanden und Notizen gemacht hatten.
Schwachstellen entdeckt
Obwohl wir neun gemeldete Sicherheitslücken erwähnt haben, werden wir heute hier über drei davon schreiben, die im Folgenden aufgeführt sind:
- Umgehung der Anmeldebestätigung auf npmjs.com
- Vorab-Kontoübernahme auf npmjs.com
- Problem mit der Zugriffskontrolle auf education.github.com
Beschreibung -
Als wir den Authentifizierungsteil von npmjs.com und allgemeine Funktionen wie die Aktualisierung der E-Mail-Adresse und Profilaktualisierungsfunktionen durchgingen, stellten wir ein seltsames Verhalten bei einer Anwendung fest, die uns auffiel: das Format eines E-Mail-Bestätigungslinks, eines Passwort-Reset-Links und eines gesendeten Links um die E-Mail-Adresse zu aktualisieren.
Der Link wurde für alle Funktionen wie https://npmjs.com/verify/{some_random_token_here} formatiert, sei es das Zurücksetzen des Passworts, der Link zur E-Mail-Verifizierung oder ein beliebiger XYZ-Link auf dieser Website für beliebige Zwecke. Als nächstes haben wir festgestellt, dass jedes Mal, wenn Sie sich bei der Anwendung anmelden, ein Bestätigungscode an Ihre registrierte E-Mail-Adresse gesendet wird. Sie müssen diesen als Teil der Anmeldebestätigungsfunktion eingeben (eine Art 2FA/MFA-Code in der E-Mail), um sich erfolgreich beim Konto anzumelden . Wir haben dann versucht, diese Funktionalität zu umgehen, und haben sie erfolgreich umgangen, da wir in den letzten zwei Stunden eine Anwendung vollständig verwendet haben. Wir kannten jede Funktionalität, sodass wir sie nachvollziehen konnten und die Umgehung erhalten haben. Lesen Sie die folgenden Schritte, um zu reproduzieren, um zu sehen, wie wir erledigt.
Bei unserer Untersuchung des Authentifizierungsprozesses und allgemeiner Funktionen von npmjs.com, wie z. B. der Aktualisierung von E-Mail-Adressen und Profilen, haben wir ein eigenartiges Verhalten im Format von E-Mail-Verifizierungslinks entdeckt. und Links, die zur Aktualisierung von E-Mail-Adressen gesendet werden. Diese Links hatten das Format https://npmjs.com/verify/{random_token} und wurden für alle Funktionen verwendet, einschließlich Passwortzurücksetzung, E-Mail-Verifizierung und andere.
Wir haben außerdem festgestellt, dass jedes Mal, wenn sich ein Benutzer bei der Anwendung anmeldete, ein Bestätigungscode an die registrierte E-Mail-Adresse gesendet wurde. Dieser Bestätigungscode wurde zum Abschluss des Anmeldevorgangs benötigt und fungierte als eine Form der Zwei-Faktor-Authentifizierung. Das Zweite, was uns auffiel: Beim Aktualisieren einer E-Mail-Adresse auf npmjs erfolgte der Aktualisierungsvorgang, ohne dass eine Passwortbestätigung erforderlich war. Eine E-Mail wird sowohl an die alte als auch an die neue E-Mail-Adresse gesendet. Die an die alte Adresse gesendete E-Mail würde den Empfänger darüber informieren, dass er, wenn die Änderung nicht von ihm vorgenommen wurde, auf einen Link (https://npmjs.com/verify/{some_random_token_here}) klicken kann, um die Änderung rückgängig zu machen und seine alte Adresse vorzunehmen der aktuelle. Die an die neue Adresse gesendete E-Mail würde einen Link enthalten, um die neue E-Mail zu überprüfen und sie mit dem gerade aktualisierten Konto zu verknüpfen.
Beim Versuch, uns bei einem Konto anzumelden, nachdem wir die E-Mail-Adresse auf der Profilseite aktualisiert hatten, ist ein überraschendes Problem aufgetreten. Obwohl weder in der alten noch in der neuen E-Mail irgendwelche Links bestätigt oder angeklickt wurden, zeigte das System eine Meldung an, dass ein Bestätigungscode an die neue, nicht bestätigte Adresse gesendet wurde. Dies schien darauf hinzudeuten, dass wir uns nicht anmelden konnten. Bei näherer Betrachtung entdeckten wir jedoch eine E-Mail an unsere alte Adresse, in der wir aufgefordert wurden, die Änderung rückgängig zu machen, um eine Kontosperrung zu vermeiden. Klicken Sie auf den bereitgestellten Link ( https://npmjs.com/verify/{random_token}), um die E-Mail zurückzusetzen, wurden wir zur Anmeldeseite weitergeleitet. Zu unserer Überraschung fragte das System bei der Eingabe unserer Anmeldedaten nicht nach dem Bestätigungscode, sondern erlaubte uns stattdessen, uns anzumelden und die E-Mail-Änderung rückgängig zu machen.
Nach weiteren Untersuchungen konnten wir diese Funktionalität jedoch erfolgreich umgehen. Unser tiefes Verständnis der Anwendung, das wir durch zweistündiges Kennenlernen ihrer Funktionen gewonnen haben, ermöglichte es uns, verschiedene Funktionalitäten in Beziehung zu setzen und den Bypass zu finden. Die Schritte zum Reproduzieren des Bypasses finden Sie unten.
Klicken Sie hier oder besuchen Siehttps://blog.cyberxplore.com/we-hacked-github-for-a-month-heres-what-we-found/Um den vollständigen vollständigen Blog zu lesen, der im CyberXplore-Blog veröffentlicht wurde .
Vergessen Sie nicht, unseren Sicherheitsforschern zu folgen –
Vielen Dank an alle fürs Lesen. Vergessen Sie nicht, eine Klatsche zu hinterlassen, wenn es Ihnen gefällt.
Folgen Sie uns -
Twitter → @ MrRajputHacker @ Th3Pr0xyB0y
Instagram → @ MrRajputHacker @ vanshdevgan
Linkedin → MrRajputHacker @ th3pr0xyb0y
Mittel → @ mrrajputhacker @ th3pr0xyb0y

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































