tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
ECB
(ECB) Electronic Code Book - esquema de criptografia simétrica que substitui cada bloco do texto claro pelo bloco de texto cifrado. É o esquema de criptografia mais simples. A ideia principal é dividir o texto claro em blocos de N bits (depende do tamanho do bloco de dados de entrada, algoritmo de criptografia) e então criptografar (descriptografar) cada bloco do texto claro usando a única chave.
Usar ECB tem múltiplas implicações de segurança:
- Blocos da mensagem criptografada podem ser removidos
- Blocos da mensagem criptografada podem ser movidos
Detecção da vulnerabilidade
Imagine que você faz login em um aplicativo várias vezes e sempre recebe o mesmo cookie. Isso ocorre porque o cookie do aplicativo é <username>|<password>
.
Então, você gera dois novos usuários, ambos com a mesma senha longa e quase o mesmo nome de usuário.
Você descobre que os blocos de 8B onde as informações de ambos os usuários são as mesmas são iguais. Então, você imagina que isso pode ser porque ECB está sendo usado.
Como no exemplo a seguir. Observe como esses 2 cookies decodificados têm várias vezes o bloco \x23U\xE45K\xCB\x21\xC8
.
\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9
\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9
Isto é porque o nome de usuário e a senha desses cookies continham várias vezes a letra "a" (por exemplo). Os blocos que são diferentes são blocos que continham pelo menos 1 caractere diferente (talvez o delimitador "|" ou alguma diferença necessária no nome de usuário).
Agora, o atacante só precisa descobrir se o formato é <username><delimiter><password>
ou <password><delimiter><username>
. Para fazer isso, ele pode apenas gerar vários nomes de usuário com nomes de usuário e senhas longos e semelhantes até encontrar o formato e o comprimento do delimitador:
Comprimento do nome de usuário: | Comprimento da senha: | Comprimento do nome de usuário+senha: | Comprimento do cookie (após decodificação): |
---|---|---|---|
2 | 2 | 4 | 8 |
3 | 3 | 6 | 8 |
3 | 4 | 7 | 8 |
4 | 4 | 8 | 16 |
7 | 7 | 14 | 16 |
Exploração da vulnerabilidade
Removendo blocos inteiros
Sabendo o formato do cookie (<username>|<password>
), para se passar pelo nome de usuário admin
, crie um novo usuário chamado aaaaaaaaadmin
e obtenha o cookie e decodifique-o:
\x23U\xE45K\xCB\x21\xC8\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4
Podemos ver o padrão \x23U\xE45K\xCB\x21\xC8
criado anteriormente com o nome de usuário que continha apenas a
.
Então, você pode remover o primeiro bloco de 8B e obterá um cookie válido para o nome de usuário admin
:
\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4
Movendo blocos
Em muitos bancos de dados, é o mesmo procurar por WHERE username='admin';
ou por WHERE username='admin ';
(Note os espaços extras)
Assim, outra maneira de se passar pelo usuário admin
seria:
- Gerar um nome de usuário que:
len(<username>) + len(<delimiter) % len(block)
. Com um tamanho de bloco de8B
, você pode gerar um nome de usuário chamado:username
, com o delimitador|
, o bloco<username><delimiter>
gerará 2 blocos de 8Bs. - Em seguida, gerar uma senha que preencherá um número exato de blocos contendo o nome de usuário que queremos imitar e espaços, como:
admin
O cookie deste usuário será composto por 3 blocos: os primeiros 2 são os blocos do nome de usuário + delimitador e o terceiro da senha (que está falsificando o nome de usuário): username |admin
Então, basta substituir o primeiro bloco pelo último e você estará se passando pelo usuário admin
: admin |username
Referências
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.