Skip to main content

Red Teaming and Web Bug Bounty Fast Endpoint Discovery Tool

Project description

🌊 EndAbyss

Python Version License Version

EndAbyss is a fast endpoint discovery tool that crawls websites to collect endpoints and parameters for bug bounty and red team operations. alt text

🌟 Features

  • Red Team/Bug Bounty Support: Useful for both red team operations and web bug bounty projects
  • Static/Dynamic Scanning: Fast static scanning or Playwright-based dynamic scanning for modern frameworks
  • Endpoint Discovery: Automatic collection of endpoints from HTML, JavaScript, and API responses
  • Parameter Extraction: Automatic extraction of GET/POST parameters from forms and URLs
  • Directory Scanning: Wordlist-based directory brute-forcing support
  • Pipeline Integration: Supports integration with other tools using -pipeurl, -pipeendpoint, -pipeparam, -pipejson options
  • WAF Bypass Options: Delay, random delay, rate limiting, and proxy support
  • Modular Design: Can be imported and used as a Python module

🚀 Installation

bash

git clone https://github.com/arrester/endabyss.git
cd endabyss
pip install -r requirements.txt
pip install -e .

or

Python

pip install endabyss

For dynamic scanning mode, install Playwright browsers:

playwright install chromium

📖 Usage

CLI Mode

Basic Scan

endabyss -t http://example.com

Dynamic Scanning Mode

endabyss -t http://example.com -m dynamic

Directory Scanning

endabyss -t http://example.com -ds -w wordlist.txt

Pipeline Output

endabyss -t http://example.com -pipeurl # Output URLs only

endabyss -t http://example.com -pipeendpoint # Output endpoints only

endabyss -t http://example.com -pipeparam # Output parameters only

endabyss -t http://example.com -pipejson # Output JSON format

Pipeline Integration Example

endabyss -t http://example.com -pipeurl | sqlmap --batch

Integration with SubSurfer

Pipeline configuration for scanning endpoints with EndAbyss from web subdomains collected by SubSurfer:

1. Basic Integration (Web Subdomains → Endpoint Collection)

subsurfer -t example.com -pipeweb | xargs -I {} endabyss -t {} -pipeurl

2. Save Results to File

subsurfer -t example.com -pipeweb | xargs -I {} endabyss -t {} -o results.txt

3. Integration with Dynamic Scan Mode

subsurfer -t example.com -pipeweb | xargs -I {} endabyss -t {} -m dynamic -pipeurl

4. Collect Detailed Information in JSON Format

subsurfer -t example.com -pipeweb | xargs -I {} endabyss -t {} -pipejson

5. Include Directory Scanning

subsurfer -t example.com -pipeweb | xargs -I {} endabyss -t {} -ds -w wordlist.txt -pipeurl

Using as a Python Module

Basic Endpoint Scan

from endabyss.core.controller.controller import EndAbyssController
import asyncio

async def main():
    controller = EndAbyssController(
        target="http://example.com",
        mode="static",
        verbose=1,
        depth=5
    )
    
    results = await controller.scan()
    
    print(f"Found {len(results['endpoints'])} endpoints")
    print(f"Found {len(results['forms'])} forms")
    print(f"Found {len(results['parameters'])} parameter sets")
    
    for param_data in results['parameters']:
        url = param_data['url']
        params = param_data.get('parameters', {})
        param_str = '&'.join([f"{k}={v}" for k, v in params.items()])
        print(f"{url}?{param_str} [{param_data['method']}]")

if __name__ == "__main__":
    asyncio.run(main())

Dynamic Scanning

from endabyss.core.controller.controller import EndAbyssController
import asyncio

async def main():
    controller = EndAbyssController(
        target="http://example.com",
        mode="dynamic",
        headless=True,
        wait_time=3.0
    )
    
    results = await controller.scan()
    
    for endpoint in results['endpoints']:
        print(endpoint['url'])

if __name__ == "__main__":
    asyncio.run(main())

Result Save

from endabyss.core.controller.controller import EndAbyssController
import asyncio

async def main():
    controller = EndAbyssController("http://example.com")
    
    results = await controller.scan()
    
    output_path = controller.get_output_path("results.json")
    controller.save_results(results, output_path)
    print(f"Results saved to: {output_path}")

if __name__ == "__main__":
    asyncio.run(main())

🔧 Key Features from Reference Tools

EndAbyss incorporates key features from various reference tools:

  • Katana: Deep crawling and endpoint discovery methodology
  • LinkFinder: JavaScript endpoint extraction using regex patterns
  • ParamSpider: Parameter extraction and URL cleaning techniques
  • SubSurfer: CLI design, pipeline integration, and modular architecture

📋 Available Options

Option Description
-t, --target Target URL or domain
-tf, --targetfile File containing list of targets
-m, --mode Scan mode: static (default) or dynamic
-d, --depth Crawling depth (default: 5)
-c, --concurrency Number of concurrent requests (default: 10)
-ds, --dirscan Enable directory scanning
-w, --wordlist Wordlist file for directory scanning
--delay Delay between requests in seconds
--random-delay Random delay range (e.g. 1-3)
--proxy Proxy URL (HTTP/HTTPS/SOCKS5)
--rate-limit Rate limit (requests per second)
-pipeurl Output URLs only for pipeline
-pipeendpoint Output endpoints only for pipeline
-pipeparam Output parameters only for pipeline
-pipejson Output JSON format for pipeline

📋 Requirements

  • Recommended: Python 3.13.0 or later
  • aiohttp
  • beautifulsoup4
  • playwright (for dynamic scanning)
  • rich
  • requests

📝 License

MIT License

🤝 Contributions

Bug Report, Feature Suggestions, Issue Report

Project details


Download files

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

Source Distribution

endabyss-1.2.0.tar.gz (26.6 kB view details)

Uploaded Source

Built Distribution

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

endabyss-1.2.0-py3-none-any.whl (29.5 kB view details)

Uploaded Python 3

File details

Details for the file endabyss-1.2.0.tar.gz.

File metadata

  • Download URL: endabyss-1.2.0.tar.gz
  • Upload date:
  • Size: 26.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for endabyss-1.2.0.tar.gz
Algorithm Hash digest
SHA256 b555d2a353faf2c0e572b67543aaabe9b4b4d99649775cb9563461f65ab7ab05
MD5 73c89730c53a9e401fa7703c4e6ec6d6
BLAKE2b-256 cb3bd995473d859ec33ac85ddfe6568ea085875ed80ee02d19e8c198a49c3020

See more details on using hashes here.

Provenance

The following attestation bundles were made for endabyss-1.2.0.tar.gz:

Publisher: publish.yml on arrester/EndAbyss

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file endabyss-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: endabyss-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 29.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for endabyss-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 57c768d00a5b55b5a3a127eb4e1a490b906baa4dc524517b137fc1d49c9604d9
MD5 837a4f4ead49b5a039671fe09fbea437
BLAKE2b-256 6a746f29072012cec85013a5f7b679c377045aa01b3c0ceb8e1a358bf5c1e7c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for endabyss-1.2.0-py3-none-any.whl:

Publisher: publish.yml on arrester/EndAbyss

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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