Skip to main content
Glama
SlanyCukr

Bug Bounty MCP Server

by SlanyCukr

bugbounty_osint_workflow

Generate OSINT gathering workflows for bug bounty hunting by automating reconnaissance processes to collect intelligence on target domains for security assessments.

Instructions

Create OSINT gathering workflow for bug bounty hunting.

Args: domain: Target domain

Returns: OSINT gathering workflow

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
domainYes

Implementation Reference

  • MCP tool handler function that implements the bugbounty_osint_workflow tool by proxying the request to the REST API backend.
    def bugbounty_osint_workflow(domain: str) -> dict[str, Any]:
        """Create OSINT gathering workflow for bug bounty hunting.
    
        Args:
            domain: Target domain
    
        Returns:
            OSINT gathering workflow
        """
        data = {"domain": domain}
    
        logger.info(f"🕵️ Creating OSINT workflow for {domain}")
        result = api_client.safe_post("api/bugbounty/osint-workflow", data)
    
        if result.get("success"):
            logger.info(f"✅ OSINT workflow created for {domain}")
        else:
            logger.error(f"❌ Failed to create OSINT workflow for {domain}")
    
        return result
  • Backend REST API handler for the /api/bugbounty/osint-workflow endpoint that processes the request and delegates to the workflow manager.
    @workflow()
    def create_osint_workflow():
        """Create OSINT gathering workflow."""
        # Import here to avoid circular imports
        from src.rest_api_server.managers import BugBountyTarget, bugbounty_manager
    
        data = request.get_json()
    
        domain = data["domain"]
    
        logger.info(f"Creating OSINT workflow for {domain}")
    
        # Create bug bounty target
        target = BugBountyTarget(domain=domain)
    
        # Generate OSINT workflow
        workflow = bugbounty_manager.create_osint_workflow(target)
    
        logger.info(f"OSINT workflow created for {domain}")
    
        return workflow
  • Core helper function in BugBountyWorkflowManager that generates the detailed OSINT workflow structure with multiple phases, tools, and estimated times.
    def create_osint_workflow(self, target: BugBountyTarget) -> dict[str, Any]:
        """Create OSINT (Open Source Intelligence) gathering workflow."""
        workflow = {
            "target": target.domain,
            "osint_phases": [],
            "estimated_time": 0,
            "data_sources": 0,
        }
    
        # Phase 1: Domain Intelligence
        domain_intel_phase = {
            "name": "domain_intelligence",
            "description": "Gather domain registration and ownership information",
            "tools": [
                {"tool": "whois", "params": {"domain": target.domain}},
                {"tool": "dnsenum", "params": {"domain": target.domain}},
                {"tool": "fierce", "params": {"domain": target.domain}},
            ],
            "expected_outputs": ["whois.txt", "dns_records.txt", "subdomains.txt"],
            "estimated_time": 120,
        }
        workflow["osint_phases"].append(domain_intel_phase)
    
        # Phase 2: Social Media & Web Presence
        social_phase = {
            "name": "social_intelligence",
            "description": "Gather social media and web presence intelligence",
            "tools": [
                {
                    "tool": "theharvester",
                    "params": {"domain": target.domain, "sources": "all"},
                },
                {
                    "tool": "search_engines",
                    "params": {"query": f"site:{target.domain}"},
                },
            ],
            "expected_outputs": [
                "emails.txt",
                "social_profiles.txt",
                "web_mentions.txt",
            ],
            "estimated_time": 180,
        }
        workflow["osint_phases"].append(social_phase)
    
        # Phase 3: Technology Stack Analysis
        tech_stack_phase = {
            "name": "technology_analysis",
            "description": "Identify technologies, frameworks, and infrastructure",
            "tools": [
                {"tool": "wappalyzer", "params": {"url": f"https://{target.domain}"}},
                {"tool": "builtwith", "params": {"domain": target.domain}},
                {"tool": "httpx", "params": {"tech_detect": True}},
            ],
            "expected_outputs": [
                "technologies.json",
                "frameworks.txt",
                "infrastructure.txt",
            ],
            "estimated_time": 90,
        }
        workflow["osint_phases"].append(tech_stack_phase)
    
        # Phase 4: Historical Data Analysis
        historical_phase = {
            "name": "historical_analysis",
            "description": "Analyze historical data and archived content",
            "tools": [
                {"tool": "waybackurls", "params": {"domain": target.domain}},
                {
                    "tool": "gau",
                    "params": {
                        "domain": target.domain,
                        "blacklist": (
                            "jpg,jpeg,gif,css,tif,tiff,png,ttf,woff,woff2,ico,pdf,svg,txt"
                        ),
                    },
                },
            ],
            "expected_outputs": ["historical_urls.txt", "archived_content.txt"],
            "estimated_time": 150,
        }
        workflow["osint_phases"].append(historical_phase)
    
        # Calculate totals
        workflow["estimated_time"] = sum(
            phase["estimated_time"] for phase in workflow["osint_phases"]
        )
        workflow["data_sources"] = sum(
            len(phase["tools"]) for phase in workflow["osint_phases"]
        )
    
        return workflow
  • Dataclass defining the schema/structure for BugBountyTarget used in workflow generation, including domain and other parameters.
    @dataclass
    class BugBountyTarget:
        """Bug bounty target information."""
    
        domain: str
        scope: list[str] = field(default_factory=list)
        out_of_scope: list[str] = field(default_factory=list)
        program_type: str = "web"  # web, api, mobile, iot
        priority_vulns: list[str] = field(
            default_factory=lambda: ["rce", "sqli", "xss", "idor", "ssrf"]
        )
        bounty_range: str = "unknown"

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SlanyCukr/bugbounty-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server