
Una biblioteca para detectar secretos conocidos en muchos 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/
## Consejos para Viewstate
- Ejecute el comando usando `-mrd 5` para permitir el análisis de respuestas de redirección largas.
- Use `--allviewstatekeys` o `-avsk` para probar todas las combinaciones de claves como claves de validación y cifrado.
- Use `--findviewstatepage` o `-fvsp` para probar un conjunto de páginas predeterminadas cuando falta .aspx en la URL.
## Cambios genéricos:
- Usa httpx en lugar de requests (cambios realizados principalmente por IA con pruebas mínimas, por lo que podrían ser incorrectos).
- Añade profundidad a la redirección (el argumento `--max-redirect-depth` para redirecciones manuales).
- Admite cabeceras adicionales.
- El tiempo de espera de la solicitud se puede configurar usando el argumento `--timeout` o `-t`.
## Cambios en Viewstate:
- Contiene algunos cambios lógicos.
- Muestra una posibilidad para AES y 3DES para la clave de validación en viewstates cifrados de .NET 4.0.
- Elimina los valores sin cookies de la ruta.
- Elimina los parámetros después de .aspx.
- Elimina múltiples caracteres de barra y barra invertida.
- Mejora la lógica de .NET4.5 para usar nombres de aplicación en subdirectorios.
- Detecta cuando "MAC is not enabled".
- Maneja redirecciones largas cuando hay una respuesta (esto es cuando NO se usa `-r` para seguir la redirección).
- Maneja la redirección a otra página ASPX (esto es cuando se usa `-r` para seguir la redirección).
- Maneja cuando se usa Server.Transfer en lugar de una redirección (el generador es diferente al objetivo).
- Detecta cuando se usa MaxPageStateFieldLength y tenemos __VIEWSTATEFIELDCOUNT.
- Admite algunos ViewStateUserKey predefinidos además de comprobar las cookies asp.net_sessionid y __antixsrftoken en la respuesta.
- Detecta correctamente las claves de descifrado para 3DES en ASPNET4.5.
- Añade una opción para comprobar todas las cadenas en aspnet_machinekeys.txt una vez como clave de validación y otra como clave de descifrado. Cuando usamos el indicador `--allviewstatekeys`, la herramienta intenta encontrar todas las posibles claves de cifrado y prueba cada una en orden aleatorio para descifrar los datos. Debido a que se prueban tantas claves, existe la posibilidad de encontrar una clave no válida en una sola ejecución. Sin embargo, la herramienta listará todas las claves posibles que detecte. Al ejecutar la herramienta dos veces, aumenta significativamente la probabilidad de encontrar una clave de cifrado válida, ya que ver la misma clave en ambas ejecuciones es casi una garantía del 100% de que es correcta.
- Usa una matriz de páginas predeterminadas cuando .aspx no está incluido en la URL dada: `["default.aspx", "index.aspx", "main.aspx", "home.aspx" , "start.aspx", "welcome.aspx", "default2.aspx"]` - Esto aumenta significativamente el tiempo de prueba, pero puede llevar a más hallazgos.
- Puede usar `-mkf` o `--machinekeyfile` como archivo de recursos para machinekeys, de modo que podamos usar una versión local si contiene claves sensibles.
- Usa una versión personalizada de la librería python viewstate para admitir más objetos al analizar el viewstate.
- Añade el argumento `-evsd` o `--enable-viewstate-decryption` para comprobar la clave de descifrado incluso cuando no se ha encontrado la clave de validación. Esto puede ser útil cuando la clave de validación es ligeramente diferente de la original en la lista.
- Calcula el `__VIEWSTATEGENERATOR` identificando su código hash. También intenta encontrar la ruta real y la ruta de la aplicación temprano si se han proporcionado `__VIEWSTATEGENERATOR` y la URL. Esto puede aumentar potencialmente el rendimiento, especialmente cuando falta una página ASPX predeterminada identificable en la URL.
- Los usuarios pueden especificar el número de hilos a usar con la opción `-nt` o `--num-threads` (solo aplicable al módulo de viewstate). El valor predeterminado es 1, que sorprendentemente es más rápido que 10 en la mayoría de los casos.
- Debería admitir archivos sin extensiones, pero necesitaremos corregir los errores a medida que se reporten.
- Admite IsolateApps (útil para .NET40 legacy). Esto ocurre cuando tenemos ",IsolateApps" después de las claves de validación o descifrado.
- Reduce el número de apppaths probándolos activamente según https://soroush.me/blog/2019/07/iis-application-vs-folder-detection-during-blackbox-testing/. Se puede deshabilitar con `-dap` o `--disable-active-path-check`.
- Comprueba __VIEWSTATE_KEY en el cuerpo de la respuesta y lo usa también como viewstatekey.
- Añade la dirección IP pública a la clave de viewstate basada en el ID de sesión o en el token anti-XSRF.
- Usa __EVENTVALIDATION cuando falta __VIEWSTATE.
- Usa los valores de recursos cifrados de `/WebResource.axd?d=` o `/ScriptResource.axd?d=` bajo un nuevo módulo llamado "aspnet_resource.py". También admite la función IsolateApps allí. Esto es útil cuando faltan __VIEWSTATE y __EVENTVALIDATION.