
Uma biblioteca para detetar segredos conhecidos em vários 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/
## Dicas para Viewstate
- Execute o comando usando `-mrd 5` para permitir a análise de respostas de redirecionamento longas.
- Use `--allviewstatekeys` ou `-avsk` para tentar todas as combinações de chaves como chaves de validação e criptografia.
- Use `--findviewstatepage` ou `-fvsp` para tentar um conjunto de páginas padrão quando .aspx estiver ausente na URL.
## Alterações Genéricas:
- Usa httpx em vez de requests (alterações feitas principalmente por IA com testes mínimos, portanto podem estar incorretas).
- Adiciona profundidade ao redirecionamento (o argumento `--max-redirect-depth` para redirecionamentos manuais).
- Suporta cabeçalhos adicionais.
- O tempo limite da solicitação pode ser definido usando o argumento `--timeout` ou `-t`.
## Alterações no Viewstate:
- Contém algumas alterações lógicas.
- Mostra uma possibilidade para AES e 3DES para a chave de validação em viewstates .NET 4.0 criptografados.
- Remove valores cookieless do caminho.
- Remove parâmetros após .aspx.
- Remove múltiplos caracteres de barra e barra invertida.
- Melhora a lógica do .NET4.5 para usar nomes de aplicativos em subdiretórios.
- Detecta quando "MAC is not enabled".
- Lida com redirecionamento longo quando há uma resposta (isto é quando `-r` para seguir redirecionamento NÃO é usado).
- Lida com redirecionamento para outra página ASPX (isto é quando `-r` para seguir redirecionamento é usado).
- Lida quando Server.Transfer é usado em vez de um redirecionamento (o gerador é diferente do alvo).
- Detecta quando MaxPageStateFieldLength é usado e temos __VIEWSTATEFIELDCOUNT.
- Suporta alguns ViewStateUserKey predefinidos, além de verificar os cookies asp.net_sessionid e __antixsrftoken na resposta.
- Detecta chaves de descriptografia para 3DES em ASPNET4.5 corretamente.
- Adiciona uma opção para verificar todas as strings em aspnet_machinekeys.txt uma vez como chave de validação e uma vez como chave de descriptografia. Quando usamos o sinalizador `--allviewstatekeys`, a ferramenta tenta encontrar todas as chaves de criptografia potenciais e tenta cada uma em ordem aleatória para descriptografar os dados. Como muitas chaves são testadas, há uma chance de atingir uma chave inválida em qualquer execução individual. No entanto, a ferramenta listará todas as chaves possíveis que detectar. Ao executar a ferramenta duas vezes, você aumenta significativamente a probabilidade de encontrar uma chave de criptografia válida, pois ver a mesma chave aparecer em ambas as execuções é quase 100% de garantia de que ela está correta.
- Usa uma matriz de páginas padrão quando .aspx não está incluído na URL fornecida: `["default.aspx", "index.aspx", "main.aspx", "home.aspx" , "start.aspx", "welcome.aspx", "default2.aspx"]` - Isso aumenta significativamente o tempo de teste, mas pode potencialmente levar a mais descobertas.
- Pode usar `-mkf` ou `--machinekeyfile` como arquivo de recurso para machinekeys, para que possamos usar uma versão local se ela contiver chaves sensíveis.
- Está usando uma versão personalizada da biblioteca python viewstate para suportar mais objetos ao analisar viewstate.
- Adicionou o argumento `-evsd` ou `--enable-viewstate-decryption` para verificar a chave de descriptografia mesmo quando a chave de validação não foi encontrada. Isso pode ser útil quando a chave de validação é ligeiramente diferente da original na lista.
- Calcula o `__VIEWSTATEGENERATOR` identificando seu código hash. Também tenta encontrar o caminho real e o caminho do aplicativo antecipadamente se `__VIEWSTATEGENERATOR` e a URL forem fornecidos. Isso pode potencialmente aumentar o desempenho, especialmente quando uma página ASPX padrão identificável está ausente na URL.
- Os usuários podem especificar o número de threads a serem usados com a opção `-nt` ou `--num-threads` (aplicável apenas ao módulo viewstate). O padrão é 1, que é surpreendentemente mais rápido que 10 na maioria dos casos!
- Deve suportar arquivos sem extensões, mas precisaremos corrigir erros conforme forem relatados.
- Suporta IsolateApps (útil para .NET40 legado). Isso ocorre quando temos ",IsolateApps" após as chaves de validação ou descriptografia.
- Reduz o número de apppaths testando ativamente com base em https://soroush.me/blog/2019/07/iis-application-vs-folder-detection-during-blackbox-testing/. Pode ser desabilitado com `-dap` ou `--disable-active-path-check`.
- Verifica __VIEWSTATE_KEY no corpo da resposta e o usa também como viewstatekey.
- Adiciona endereço IP público à chave de viewstate com base no ID da sessão ou no token anti-XSRF.
- Usa __EVENTVALIDATION quando __VIEWSTATE está ausente.
- Usa os valores de recursos criptografados de `/WebResource.axd?d=` ou `/ScriptResource.axd?d=` em um novo módulo chamado "aspnet_resource.py". Também suporta o recurso IsolateApps lá. Isso é útil quando __VIEWSTATE e __EVENTVALIDATION estão ausentes.