Nous avons piraté GitHub pendant un mois
Introduction
Après une longue pause, nous sommes de retour avec un nouvel article. Bien que nous ne participions généralement pas aux programmes de primes de bogues en raison d'autres engagements, nous avons relevé le défi de pirater GitHub pendant un mois et sommes ravis de partager nos découvertes. Tout a commencé lorsque Shivam Singh (M. Rajput Hacker) m'a contacté en novembre et m'a encouragé à essayer la prime aux bogues. Nous avons décidé de nous concentrer sur npmjs.com, une filiale de GitHub. Malgré le fait que GitHub est une grande entreprise et que le programme de primes aux bogues était public sur HackerOne, nous avons estimé que cela en valait la peine.
Reconnaissance
Dans notre recherche de vulnérabilités dans npmjs.com, Th3Pr0xyB0y (Vansh Devgan) et M. Rajput Hacker (Shivam Singh) ont commencé par mener une opération de reconnaissance. Nous avons utilisé notre produit interne, X (qui fait partie de la suite CyberXplore), pour recueillir autant d'informations que possible, y compris les adresses IP, les ports ouverts, les captures d'écran et les terminaux. Grâce à la puissance du cloud computing, le processus de reconnaissance a été rapide et efficace.
Cependant, après avoir examiné les informations recueillies, nous avons constaté que les possibilités d'attaque contre la cible, npmjs.com et npmjs.org, étaient limitées. Notre produit maison, X , a facilité le processus de reconnaissance, et nous sommes ravis d'annoncer que la version bêta privée sera bientôt disponible pour le grand public .
Se concentrer sur la logique métier
M. Rajput Hacker et moi avons décidé de nous concentrer uniquement sur les bogues de logique métier dans l'application. Avant de commencer notre recherche, nous nous sommes assurés de bien comprendre l'application. Cela impliquait une utilisation minimale de Burp Suite et une concentration sur la compréhension des fonctionnalités et des processus de base de l'application. Notre objectif était de trouver les faiblesses de la logique métier qui pourraient potentiellement être exploitées. En limitant notre ensemble d'outils et en nous concentrant sur la compréhension de l'application, nous avons cherché à découvrir toutes les vulnérabilités uniques ou négligées. Comme npmjs.com était une application relativement petite, notre compréhension et nos notes nous ont pris moins de deux heures.
Vulnérabilités découvertes
Même si nous avons mentionné environ 9 vulnérabilités signalées, nous allons en écrire environ 3 ici aujourd'hui, qui sont indiquées ci-dessous :
- Contournement de la vérification de connexion sur npmjs.com
- Pre-Account Takeover sur npmjs.com
- Problème de contrôle d'accès sur education.github.com
Description -
En parcourant la partie authentification de npmjs.com et les fonctionnalités courantes telles que la mise à jour de l'adresse e-mail et les fonctionnalités de mise à jour du profil, nous avons découvert un comportement étrange concernant une application qui a attiré notre attention, à savoir le format du lien de vérification de l'e-mail, le lien de réinitialisation du mot de passe et le lien envoyé. pour mettre à jour l'adresse e-mail.
Le lien a été formaté comme https://npmjs.com/verify/{some_random_token_here} pour toutes les fonctionnalités, que ce soit la réinitialisation du mot de passe, le lien de vérification par e-mail ou tout lien XYZ sur ce site à quelque fin que ce soit. Ensuite, nous avons observé que chaque fois que vous vous connectez à l'application, elle envoie un code de vérification à votre adresse e-mail enregistrée et vous devez le saisir dans le cadre de la fonction de vérification de connexion (type de code 2FA/MFA sur l'e-mail) pour vous connecter avec succès au compte. . nous avons ensuite essayé de contourner cette fonctionnalité et avons réussi à la contourner car nous avons complètement utilisé une application au cours des 2 dernières heures, nous connaissions chaque fonctionnalité, nous avons donc pu relier et obtenir le contournement en lisant les étapes ci-dessous à reproduire pour voir comment nous l'a fait.
Lors de notre examen du processus d'authentification et des fonctionnalités courantes de npmjs.com, telles que la mise à jour des adresses e-mail et des profils, nous avons découvert un comportement particulier dans le format des liens de vérification des e-mails, coller Hacked GitHub for a Month : Here's What We Foundsword reset links, et des liens envoyés pour mettre à jour les adresses e-mail. Ces liens ont été formatés en tant que https://npmjs.com/verify/{random_token} et ont été utilisés pour toutes les fonctionnalités, y compris la réinitialisation du mot de passe, la vérification des e-mails et autres.
Nous avons également remarqué qu'à chaque fois qu'un utilisateur se connectait à l'application, un code de vérification était envoyé à l'adresse e-mail enregistrée. Ce code de vérification était nécessaire pour terminer le processus de connexion, agissant comme une forme d'authentification à deux facteurs. Deuxième chose que nous avons remarquée Lors de la mise à jour d'une adresse e-mail sur npmjs, le processus de mise à jour se produisait sans nécessiter de confirmation de mot de passe. Un e-mail sera envoyé à la fois à l'ancienne et à la nouvelle adresse e-mail. L'e-mail envoyé à l'ancienne adresse informerait le destinataire que si le changement n'a pas été effectué par lui, il peut cliquer sur un lien (https://npmjs.com/verify/{some_random_token_here}) pour annuler le changement et rendre son ancienne adresse l'actuel. L'e-mail envoyé à la nouvelle adresse contiendrait un lien pour vérifier le nouvel e-mail et le lier au compte qui vient d'être mis à jour.
Nous avons rencontré un problème surprenant en essayant de nous connecter à un compte après avoir mis à jour l'adresse e-mail dans la page de profil. Bien qu'il n'ait confirmé ou cliqué sur aucun lien dans l'ancien ou le nouveau courrier électronique, le système a affiché un message indiquant qu'un code de vérification avait été envoyé à la nouvelle adresse non vérifiée. Cela semblait suggérer que nous ne serions pas en mesure de nous connecter. Cependant, après une inspection plus approfondie, nous avons découvert un e-mail envoyé à notre ancienne adresse, nous demandant d'annuler le changement afin d'éviter le verrouillage du compte. En cliquant sur le lien fourni ( https://npmjs.com/verify/{random_token}) pour renvoyer l'e-mail, nous avons été dirigés vers la page de connexion. À notre grande surprise, lorsque nous avons entré nos informations d'identification, le système n'a pas demandé le code de vérification et nous a plutôt permis de nous connecter et d'annuler le changement d'e-mail.
Cependant, après une enquête plus approfondie, nous avons réussi à contourner cette fonctionnalité. Notre compréhension approfondie de l'application, acquise en passant deux heures à nous familiariser avec ses fonctionnalités, nous a permis de relier différentes fonctionnalités et de trouver le contournement. Les étapes pour reproduire le bypass se trouvent ci-dessous.
Cliquez ici ou visitezhttps://blog.cyberxplore.com/we-hacked-github-for-a-month-heres-what-we-found/Pour lire le blog complet complet publié sur le blog CyberXplore .
N'oubliez pas de suivre nos chercheurs en sécurité -
Merci, tout le monde pour la lecture, n'oubliez pas de laisser un clap si vous l'aimez.
Suivez-nous -
Twitter → @ MrRajputHacker @ Th3Pr0xyB0y
Instagram → @ MrRajputHacker @ vanshdevgan
Linkedin → MrRajputHacker @ th3pr0xyb0y
Moyen → @ mrrajputhacker @ th3pr0xyb0y
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































