This project delivers a fully automated Recon-as-Code pipeline for passive reconnaissance in web application environments. It combines GitHub Actions-based CI/CD automation, powerful reconnaissance tools, and a Flask-powered authenticated dashboard for visualized access to findings.
To better understand the timeline and flow of this pipeline, you can explore the full visual representation below:
๐ ๐ View the CI/CD Passive Recon Mindmap (Markmap)

1) Login Page

2) Dashboard Page

3) Live Host Discovery Page

4) DNS Records Page

5) Subdomain Takeover Checking Page

6) Waybackurls Records

7) Tech Stack

โ Subdomain enumeration using subfinder + assetfinder
โ Live Host Probing (2xx/3xx) via httpx
โ Wayback Machine URL retrieval with waybackurls
โ Tech Stack Fingerprinting using whatweb
โ DNS Record Collection (dnsx)
โ Subdomain Takeover Analysis (subzy)
โ URL Categorization via gf (XSS, SQLi, LFI, IDOR, etc.)
โ Categorization on both Wayback URLs and Live URLs
โ HTML Report Generation (with Pagination + Search)
โ Authenticated Flask Dashboard (Session-Controlled)
โ Matrix-Style Animated Background (Dark Theme)
A lightweight, prebuilt Docker image optimized for passive recon and automation.
The pipeline defined in web_app_recon.yml:
target.com).txt files under findings//output/data/generate_report.py to create .html reports from .txt๐ Login system secured with bcrypt-hashed passwords
๐ Session expiration after 10 minutes of inactivity
๐ Protected access to all dashboard routes (/dashboard, /live_hosts, /xss_candidates, etc.)
/output/)live_2xx_3xx_hosts.html โ Active live hosts
dns_info.html โ DNS Records (A, MX, TXT, CNAME)
subzy.html โ Subdomain Takeover Detection Results
waybackurls.html โ Archived Wayback URLs
waybackurls_filtered.html โ Sensitive Files and Endpoints
whatweb.html โ Tech Stack Fingerprinting
xss_candidates.html, sqli_candidates.html, lfi_candidates.html, etc. โ All categorized vulnerability findings
All HTML reports are:
Fully paginated
Searchable in real-time
Styled for dark mode with consistent UI
This system follows a DevSecOps-aligned approach to passive reconnaissance by integrating:
To make the Flask-based dashboard securely accessible via a domain (e.g. https://recon.example.com), you can configure NGINX as a reverse proxy.
This setup allows NGINX to:
5000```nginx server { listen 80; server_name recon.example.com;
# Redirect all HTTP to HTTPS
return 301 https://$host$request_uri; }
server { listen 443 ssl; server_name recon.example.com;
ssl_certificate     /etc/ssl/certs/recon.example.com.crt;
ssl_certificate_key /etc/ssl/private/recon.example.com.key;
location / {
    proxy_pass         http://127.0.0.1:5000;
    proxy_http_version 1.1;
    proxy_set_header   Host              $host;
    proxy_set_header   X-Real-IP         $remote_addr;
    proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto $scheme;
} }
```bash
pip install flask flask-session bcrypt
python db.py
python app.py
๐ช Disclaimer
โ ๏ธ This project focuses solely on passive reconnaissance. No brute-force, fuzzing, or active exploitation is performed by design.
Made with โค๏ธ for Offensive Security and DevSecOps excellence.