web_app_recon_ci-cd

๐Ÿ” Recon-as-Code: Passive Web Application Reconnaissance in a CI/CD Pipeline

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.


๐Ÿงญ Pipeline Flow

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)
CI/CD Timeline


Example Usage:

1) Login Page CI/CD Timeline

2) Dashboard Page CI/CD Timeline

3) Live Host Discovery Page CI/CD Timeline

4) DNS Records Page CI/CD Timeline

5) Subdomain Takeover Checking Page CI/CD Timeline

6) Waybackurls Records CI/CD Timeline

7) Tech Stack CI/CD Timeline

๐Ÿš€ Features


๐Ÿ› ๏ธ Technologies


๐Ÿ“ฆ Docker Image

ghcr.io/onurcangnc/kali-pentest:latest

A lightweight, prebuilt Docker image optimized for passive recon and automation.


โš™๏ธ CI/CD Workflow

The pipeline defined in web_app_recon.yml:

  1. Accepts a domain input (or defaults to target.com)
  2. Runs passive recon tools in parallel
  3. Stores output as .txt files under findings/
  4. Copies findings into /output/data/
  5. Runs generate_report.py to create .html reports from .txt
  6. Reports become available to the authenticated Flask frontend

๐Ÿ” Authentication


๐Ÿ“ Output Files (Inside /output/)

All HTML reports are:


๐Ÿง  Architecture Overview

This system follows a DevSecOps-aligned approach to passive reconnaissance by integrating:


๐Ÿงช Local Setup

๐ŸŒ Reverse Proxy with NGINX

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:


๐Ÿ”ง Example NGINX Configuration

```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

1. Install Flask and dependencies

pip install flask flask-session bcrypt

2. Create user database

python db.py

3. Run the Flask app

python app.py

4. Access dashboard:

http://localhost:5000

๐Ÿšช Disclaimer

๐Ÿค Contributions

โš ๏ธ 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.