
Une bibliothèque pour détecter les secrets connus dans de nombreux frameworks web
mkdir -p ~/ctools/ cd ~/ctools/ git clone https://github.com/irsdl/crapsecrets/ cd ~/ctools/crapsecrets pip3 install -r requirements.txt export PYTHONPATH=$(pwd):$PYTHONPATH python3 ./crapsecrets/examples/cli.py -u http://update.microsoft.com/ -r python3 ./crapsecrets/examples/cli.py -u http://update.microsoft.com/ -mrd 5 python3 ./crapsecrets/examples/cli.py -mrd 5 -avsk -fvsp -u http://update.microsoft.com/ python3 ./crapsecrets/examples/cli.py -mrd 5 -avsk -fvsp -mkf ./local/aspnet_machinekeys_local.txt -u http://192.168.6.22:8080/ python3 ./crapsecrets/examples/cli.py -mrd 5 -avsk -fvsp -mkf ./local/aspnet_machinekeys_local.txt -mkf ./crapsecrets/resources/aspnet_machinekeys.txt -u http://192.168.6.22:8080/a1/b/c1/
## Conseils pour Viewstate
- Exécutez la commande avec `-mrd 5` pour permettre l'analyse des longues réponses de redirection.
- Utilisez `--allviewstatekeys` ou `-avsk` afin d'essayer toutes les combinaisons de clés comme clés de validation et de chiffrement.
- Utilisez `--findviewstatepage` ou `-fvsp` afin d'essayer un ensemble de pages par défaut lorsque .aspx est absent de l'URL.
## Changements génériques :
- Utilise httpx au lieu de requests (changements principalement effectués par IA avec des tests minimaux, ils peuvent donc être incorrects).
- Ajoute de la profondeur à la redirection (l'argument `--max-redirect-depth` pour les redirections manuelles).
- Prend en charge des en-têtes supplémentaires.
- Le délai d'expiration de la requête peut être défini à l'aide de l'argument `--timeout` ou `-t`.
## Changements Viewstate :
- Contient quelques changements logiques.
- Affiche une possibilité pour AES et 3DES pour la clé de validation dans les viewstates .NET 4.0 chiffrés.
- Supprime les valeurs cookieless du chemin.
- Supprime les paramètres après .aspx.
- Supprime les caractères de barre oblique et de barre oblique inverse multiples.
- Améliore la logique .NET4.5 pour utiliser les noms d'application dans les sous-répertoires.
- Détecte lorsque « MAC is not enabled ».
- Gère la redirection longue lorsqu'il y a une réponse (c'est lorsque -r pour suivre la redirection n'est PAS utilisé).
- Gère la redirection vers une autre page ASPX (c'est lorsque -r pour suivre la redirection est utilisé).
- Gère le cas où Server.Transfer est utilisé au lieu d'une redirection (le générateur est différent de la cible).
- Détecte lorsque MaxPageStateFieldLength est utilisé et que nous avons __VIEWSTATEFIELDCOUNT.
- Prend en charge quelques ViewStateUserKey prédéfinis en plus de vérifier les cookies asp.net_sessionid et __antixsrftoken dans la réponse.
- Détecte correctement les clés de déchiffrement pour 3DES dans ASPNET4.5.
- Ajout d'une option pour vérifier toutes les chaînes de aspnet_machinekeys.txt une fois comme clé de validation et une fois comme clé de déchiffrement. Lorsque nous utilisons le drapeau `--allviewstatekeys`, l'outil tente de trouver toutes les clés de chiffrement potentielles et essaie chacune d'elles dans un ordre aléatoire pour déchiffrer les données. Comme de nombreuses clés sont testées, il y a un risque de tomber sur une clé invalide lors d'une exécution unique. Cependant, l'outil listera toutes les clés possibles qu'il détecte. En exécutant l'outil deux fois, vous augmentez considérablement la probabilité de trouver une clé de chiffrement valide, car voir la même clé apparaître dans les deux exécutions est une garantie quasi certaine à 100 % qu'elle est correcte.
- Utilisation d'un tableau de pages par défaut lorsque .aspx n'est pas inclus dans l'URL donnée : `["default.aspx", "index.aspx", "main.aspx", "home.aspx" , "start.aspx", "welcome.aspx", "default2.aspx"]` - Cela augmente considérablement le temps de test mais peut potentiellement conduire à davantage de résultats.
- Il peut utiliser `-mkf` ou `--machinekeyfile` comme fichier de ressources pour les machinekeys afin que nous puissions utiliser une version locale si elle contient des clés sensibles.
- Il utilise une version personnalisée de la bibliothèque python viewstate pour prendre en charge davantage d'objets lors de l'analyse du viewstate.
- Ajout de l'argument `-evsd` ou `--enable-viewstate-decryption` pour vérifier la clé de déchiffrement même lorsque la clé de validation n'a pas été trouvée. Cela peut être utile lorsque la clé de validation est légèrement différente de celle d'origine dans la liste.
- Calcule le `__VIEWSTATEGENERATOR` en identifiant son code de hachage. Il tente également de trouver le chemin réel et le chemin de l'application dès le début si `__VIEWSTATEGENERATOR` et l'URL ont été fournis. Cela peut potentiellement améliorer les performances, en particulier lorsqu'une page ASPX par défaut identifiable est absente de l'URL.
- Les utilisateurs peuvent spécifier le nombre de threads à utiliser avec l'option `-nt` ou `--num-threads` (uniquement applicable pour le module viewstate). La valeur par défaut est 1, ce qui est étonnamment plus rapide que 10 dans la plupart des cas !
- Il devrait prendre en charge les fichiers sans extension, mais nous devrons corriger les erreurs au fur et à mesure qu'elles sont signalées.
- Il prend en charge IsolateApps (utile pour .NET40 legacy). C'est le cas lorsque nous avons « ,IsolateApps » après les clés de validation ou de déchiffrement.
- Il réduit le nombre de chemins d'application en le testant activement sur la base de https://soroush.me/blog/2019/07/iis-application-vs-folder-detection-during-blackbox-testing/. Il peut être désactivé avec `-dap` ou `--disable-active-path-check`.
- Vérifie la présence de __VIEWSTATE_KEY dans le corps de la réponse et l'utilise également comme viewstatekey.
- Ajoute l'adresse IP publique à la clé de viewstate en fonction de l'ID de session ou du jeton anti-XSRF.
- Il utilise __EVENTVALIDATION lorsque __VIEWSTATE est absent.
- Il utilise les valeurs de ressources chiffrées de `/WebResource.axd?d=` ou `/ScriptResource.axd?d=` dans un nouveau module appelé « aspnet_resource.py ». Il prend également en charge la fonctionnalité IsolateApps là aussi. Cela est utile lorsque __VIEWSTATE et __EVENTVALIDATION sont absents.