Skip to content

Instantly share code, notes, and snippets.

@sergio11
Created November 29, 2024 20:04
Show Gist options
  • Save sergio11/1ca839a09f1cb9746b3698f8ef83f00e to your computer and use it in GitHub Desktop.
Save sergio11/1ca839a09f1cb9746b3698f8ef83f00e to your computer and use it in GitHub Desktop.
ExploitManager
from nemesys.utils.logger import nemesysLogger
class ExploitManager:
def __init__(self, client):
"""
Initializes the ExploitManager with the given client to execute an exploit.
Args:
client (MetasploitClient): The Metasploit RPC client instance for interacting with Metasploit.
"""
self.client = client
def run(self, exploit_name, payload_name, exploit_options=None, payload_options=None):
"""
Executes the exploit with the specified parameters and returns the exploit UUID if successful.
Args:
exploit_name (str): The name of the exploit to run.
payload_name (str): The name of the payload to use.
exploit_options (dict, optional): The options for configuring the exploit module (default is None).
payload_options (dict, optional): The options for configuring the payload module (default is None).
Returns:
str: The UUID of the executed exploit, or None if the execution failed.
"""
# Default to empty dicts if options are None
exploit_options = exploit_options or {}
payload_options = payload_options or {}
exploit = self.client.modules.use("exploit", exploit_name)
# Configure the exploit with the provided options
for option, value in exploit_options.items():
exploit[option] = value
payload = self.client.modules.use("payload", payload_name)
# Configure the payload with the provided options
for option, value in payload_options.items():
payload[option] = value
nemesysLogger.info(f"πŸ’€ [EXPLOIT] Injecting exploit '{exploit_name}' with payload '{payload_name}'...")
try:
# Execute the exploit
output = exploit.execute(payload=payload)
nemesysLogger.info("πŸ”₯ [EXPLOIT] Execution successful. System breached.")
nemesysLogger.debug(f"πŸ“ [DEBUG] Exploit output: {output}")
# Return the exploit's UUID (unique identifier for the executed exploit)
return output.get('uuid')
except Exception as e:
nemesysLogger.error(f"❌ [EXPLOIT] Error during execution: {e}")
return None
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment