Skip to main content

Hermes is a powerful, automated tool designed for detecting Cross-Site Scripting (XSS) vulnerabilities in web applications. It integrates multiple open-source tools and custom techniques to perform comprehensive scanning, including DOM-based XSS detection, payload mutation, and HTTP parameter pollution testing. With features like parallel processing, smart filtering, and detailed reporting, Hermes is ideal for security researchers and penetration testers.

Project description

Hermes - Advanced XSS Scanning Tool

image image

Overview

Hermes is a powerful, automated tool designed for detecting Cross-Site Scripting (XSS) vulnerabilities in web applications. It integrates multiple open-source tools and custom techniques to perform comprehensive scanning, including DOM-based XSS detection, payload mutation, and HTTP parameter pollution testing. With features like parallel processing, smart filtering, and detailed reporting, Hermes is ideal for security researchers and penetration testers.

Features

  • DOM XSS Detection: Identifies potential DOM-based XSS vulnerabilities by analyzing JavaScript patterns.
  • Payload Mutation: Includes a variety of XSS payloads (basic, AngularJS, Vue.js, filter bypass).
  • Smart Filtering: Uses gf, uro, Gxss, and kxss to refine potential XSS vectors.
  • HTTP Parameter Pollution Testing: Injects payloads into URL parameters to test for vulnerabilities.
  • Custom Header Testing: Checks for XSS via custom HTTP headers.
  • Asynchronous Discord Notifications: Sends real-time alerts for detected vulnerabilities via Discord webhooks.
  • Comprehensive Reporting: Generates JSON, text reports for easy analysis.
  • Multi-Target Support: Scans single targets or multiple targets from a file.
  • Parallel Processing: Configurable thread counts for faster scanning.

Requirements

  • Python 3.6+
  • Python Packages:
    pip install requests beautifulsoup4
    
  • External Tools (automatically checked by the script):
    • gau
    • gf
    • uro
    • Gxss
    • kxss
    • dalfox
    • waybackurls
    • hakrawler

Installation

  1. PyPI Installation:

    pip install hermes-tod
    
  2. Install external tools:

    GO111MODULE=on go install github.com/lc/gau/v2/cmd/gau@latest
    GO111MODULE=on go install github.com/tomnomnom/gf@latest
    pip install uro
    GO111MODULE=on go install github.com/KathanP19/Gxss@latest
    GO111MODULE=on go install github.com/Emoe/kxss@latest
    GO111MODULE=on go install github.com/hahwul/dalfox/v2@latest
    GO111MODULE=on go install github.com/tomnomnom/waybackurls@latest
    GO111MODULE=on go install github.com/hakluke/hakrawler@latest
    
  3. (Optional) Configure Discord webhook for notifications: Modified a config.json file in the project root [/usr/local/lib//dist-packages/hermes]:

    {
        "discord_webhook_url": "https://discord.com/api/webhooks/your-webhook-url"
    }
    

Usage

Run Hermes with the following command-line options:

hermes -h

Options

  • -t, --target: Single target to scan (e.g., example.com).
  • -l, --list: File containing multiple targets (one per line).
  • -o, --output: Output directory for results (defaults to results/<target>).
  • -p, --payload: Custom XSS payload.
  • -T, --threads: Number of threads for parallel processing (default: 5).

Examples

  • Scan a single target:

    hermes -t example.com -o results/example
    
  • Scan multiple targets from a file:

    hermes -l targets.txt -T 10
    
  • Use a custom payload:

    hermes -t example.com -p '<script>alert("custom")</script>'
    

Output

Results are saved in the specified output directory (or results/<target> by default):

  • all_urls.txt: Crawled URLs from the target.
  • xss_filtered.txt: Filtered URLs with potential XSS vectors.
  • final_candidates.txt: Final list of XSS candidates.
  • final_results.json: Raw JSON results from Dalfox.
  • readable_results.txt: Human-readable vulnerability report.
  • hermes.log: Log file with detailed execution information.

Notes

  • Responsible Use: This tool is for authorized security testing only. Always obtain permission before scanning any target.
  • SSL Warnings: The tool disables SSL warnings (verify=False) for testing purposes. Use with caution.
  • Dependencies: Ensure all external tools are installed and accessible in your system's PATH.
  • Discord Notifications: Configure a Discord webhook in config.json for real-time alerts.

Contributing

Contributions are welcome! To contribute:

  1. Fork the repository.
  2. Create a new branch (git checkout -b feature/your-feature).
  3. Commit your changes (git commit -m 'Add your feature').
  4. Push to the branch (git push origin feature/your-feature).
  5. Open a pull request.

Please submit bug reports or feature requests via GitHub Issues.

License

This project is licensed under the MIT License.

Disclaimer

Hermes is provided for educational and ethical security testing purposes only. The author is not responsible for any misuse or damage caused by this tool.

Acknowledgments

  • Built with inspiration from the security community.
  • Leverages open-source tools: gau, gf, uro, Gxss, kxss, dalfox, waybackurls, hakrawler.

Created by anonre | Star us on GitHub! ⭐

image

Project details


Release history Release notifications | RSS feed

This version

2.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hermes_tod-2.0.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hermes_tod-2.0-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file hermes_tod-2.0.tar.gz.

File metadata

  • Download URL: hermes_tod-2.0.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for hermes_tod-2.0.tar.gz
Algorithm Hash digest
SHA256 1ddfded9f6614c80c6a8dee75bb430253de839bf74d7980b4cbcc8062269aefd
MD5 584df0c784e94a02b747063cbcb3108a
BLAKE2b-256 a27f4c8de17b5fec9e61c3f78b106d2ee4b8c1f5cebee96d68f8d351dfdee1a0

See more details on using hashes here.

File details

Details for the file hermes_tod-2.0-py3-none-any.whl.

File metadata

  • Download URL: hermes_tod-2.0-py3-none-any.whl
  • Upload date:
  • Size: 9.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for hermes_tod-2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9e1f0a2207cd6780216234d44ac4b3a4c87b08b639fb19d4cf3c44d7f96ddb7c
MD5 7b0d83003d3f1c95c2ad8c26ec2e8c05
BLAKE2b-256 d257df6b729d6e4db6dc2945dcd52de5c6191b4453096e1b87bb8f21a0b787aa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page