
Kit d'attaque pour la gestion de code source
Source Code Management Attack Toolkit - SCMKit est une boîte à outils qui peut être utilisée pour attaquer les systèmes SCM. SCMKit permet à l'utilisateur de spécifier le système SCM et le module d'attaque à utiliser, ainsi que des identifiants valides (nom d'utilisateur/mot de passe ou clé API) pour le système SCM correspondant. Actuellement, les systèmes SCM pris en charge par SCMKit sont GitHub Enterprise, GitLab Enterprise et Bitbucket Server. Les modules d'attaque pris en charge incluent la reconnaissance, l'élévation de privilèges et la persistance. SCMKit a été conçu de manière modulaire afin que de nouveaux modules et systèmes SCM puissent être ajoutés à l'avenir par la communauté de la sécurité informatique.
Les bibliothèques tierces suivantes sont utilisées dans ce projet.
| Bibliothèque | URL | Licence |
|---|---|---|
| Octokit | https://github.com/octokit/octokit.net | Licence MIT |
| Fody | https://github.com/Fody/Fody | Licence MIT |
| GitLabApiClient | https://github.com/nmklotas/GitLabApiClient | Licence MIT |
| Newtonsoft.Json | https://github.com/JamesNK/Newtonsoft.Json | Licence MIT |
Suivez les étapes ci-dessous pour configurer Visual Studio et compiler le projet vous-même. Cela nécessite une bibliothèque .NET qui peut être installée à partir du gestionnaire de paquets NuGet.
https://api.nuget.org/v3/index.jsonInstall-Package Costura.Fody -Version 3.3.3Install-Package OctokitInstall-Package GitLabApiClientInstall-Package Newtonsoft.JsonLe tableau ci-dessous indique les systèmes pris en charge pour chaque module
| Scénario d'attaque | Module | Nécessite Admin ? | GitHub Enterprise | GitLab Enterprise | Bitbucket Server |
|---|---|---|---|---|---|
| Reconnaissance | listrepo | Non | X | X | X |
| Reconnaissance | searchrepo | Non | X | X | X |
| Reconnaissance | searchcode | Non | X | X | X |
| Reconnaissance | searchfile | Non | X | X | X |
| Reconnaissance | listsnippet | Non | X | ||
| Reconnaissance | listrunner | Non | X | ||
| Reconnaissance | listgist | Non | X | ||
| Reconnaissance | listorg | Non | X | ||
| Reconnaissance | privs | Non | X | X | |
| Reconnaissance | protection | Non | X | ||
| Persistance | listsshkey | Non | X | X | X |
| Persistance | removesshkey | Non | X | X | X |
| Persistance | createsshkey | Non | X | X | X |
| Persistance | listpat | Non | X | X | |
| Persistance | removepat | Non | X | X | |
| Persistance | createpat | Oui (GitLab Enterprise uniquement) | X | X | |
| Élévation de privilèges | addadmin | Oui | X | X | X |
| Élévation de privilèges | removeadmin | Oui | X | X | X |
| Reconnaissance | adminstats | Oui | X |
Découvrir les dépôts utilisés dans un système SCM particulier
Fournissez le module listrepo, ainsi que les informations d'authentification pertinentes et l'URL. Cela affichera le nom du dépôt et son URL.
Cela listera tous les dépôts qu'un utilisateur peut voir.
SCMKit.exe -s github -m listrepo -c userName:password -u https://github.something.local
SCMKit.exe -s github -m listrepo -c apiKey -u https://github.something.local
Cela listera tous les dépôts qu'un utilisateur peut voir.
SCMKit.exe -s gitlab -m listrepo -c userName:password -u https://gitlab.something.local
SCMKit.exe -s gitlab -m listrepo -c apiKey -u https://gitlab.something.local
Cela listera tous les dépôts qu'un utilisateur peut voir.