Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Submit
ToolsExploitsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
unwaf — Go tool that passively discovers the real origin IP behind a WAF/CDN using multiple OSINT sources, then verifies candidates via HTML similarity, SSL cert fingerprints, and HTTP headers. | Kitploit
Tools/GitHubGitHub/mmarting/unwaf
OSINT (Open Source Intelligence)ReconnaissanceNetwork MappingPort ScanningVulnerability AnalysisDNS & Subdomain EnumerationInformation GatheringWAF BypassWeb SecurityPenetration Testing
GitHubmmarting/unwaf
18721477 months agoReviewed by Kitploit

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

unwaf

Go tool that passively discovers the real origin IP behind a WAF/CDN using multiple OSINT sources, then verifies candidates via HTML similarity, SSL cert fingerprints, and HTTP headers.

View Repository

Unwaf

Go Version License: GPL v3

Unwaf is a Go tool designed to help identify WAF bypasses using passive techniques. It automates the process of discovering the real origin IP behind a WAF/CDN by combining multiple discovery methods and verifying candidates through HTML similarity comparison, SSL certificate fingerprinting, and HTTP header analysis.

Unwaf is automating the steps I explained on this LinkedIn Post: Passive WAF bypassing

Current version: 3.0.0 — See CHANGELOG.md for version history.

Table of Contents

  • How It Works
  • Discovery Methods
  • Verification Methods
  • Installation
  • Usage
  • Options
  • Examples
  • Configuration
  • Author
  • License

How It Works

  1. Dynamic WAF CIDRs — Fetches live Cloudflare IP ranges and combines with hardcoded WAF/CDN ranges (including IPv6).
  2. WAF Confirmation — Resolves the domain's current A records, checks if they fall in known WAF/CDN ranges, and fingerprints via HTTP headers.
  3. Favicon Hashing — Fetches favicon.ico and generates MD5, SHA256, and MMH3 (Shodan) hashes.
  4. IP Discovery — Runs all enabled methods (up to 15 sources) to collect candidate origin IPs.
  5. Filtering — Discards IPs belonging to known WAF/CDN ranges and IPs that match the domain's current DNS resolution.
  6. Port Scanning — Checks candidates on 8 common web ports concurrently with progress bar.
  7. Origin Verification — For each web server:
    • Fetches HTML (direct IP + Host-header injection) and compares with reference
    • Compares SSL certificate fingerprints on TLS ports
    • Compares HTTP response headers
    • Calculates overall score (60% HTML + 25% cert + 15% headers ± status)
  8. Neighbor Scanning (optional) — Expands confirmed bypass IPs to /24 subnets and scans neighbors.
  9. ASN Lookup — Identifies ASN and organization for confirmed bypass IPs.
  10. Results — Reports matches above the threshold with scores, ASN info, and curl verification commands.

Discovery Methods

Verification Methods

Installation

root@kitploit:~
go install github.com/mmarting/unwaf@latest

Usage

root@kitploit:~
unwaf -h

Options

Examples

Check a domain (free methods only, no API keys needed):

root@kitploit:~
unwaf -d example.com

Both bare domains and full URLs work:

root@kitploit:~
unwaf -d https://example.com/path

Check with a manually saved HTML file (useful when WAF blocks the tool):

root@kitploit:~
unwaf -d example.com -s original.html

Lower the similarity threshold to catch partial matches:

root@kitploit:~
unwaf -d example.com -t 40

Increase concurrency for faster scanning:

root@kitploit:~
unwaf -d example.com -w 100

Verbose mode to see every resolved subdomain/IP:

root@kitploit:~
unwaf -d example.com -v

Silent mode for automation — outputs only IPs, one per line:

root@kitploit:~
unwaf -q -d example.com

JSON output for automation:

root@kitploit:~
unwaf -d example.com --json

Batch mode with domain list:

root@kitploit:~
unwaf -l domains.txt --json -o results.json

Use a proxy (Tor, Burp, etc.):

root@kitploit:~
unwaf -d example.com --proxy socks5://127.0.0.1:9050

Scan /24 neighbors of bypass IPs:

root@kitploit:~
unwaf -d example.com --scan-neighbors

Rate-limit requests to 2/sec with a 5s timeout:

root@kitploit:~
unwaf -d example.com --rate-limit 2 --timeout 5

Piping into other tools

root@kitploit:~
# Feed into nuclei
unwaf -q -d target.com | nuclei -l - -t waf-bypass.yaml

# Feed into httpx
unwaf -q -d target.com | httpx -silent

# Batch recon
cat domains.txt | while read d; do unwaf -q -d "$d" | sed "s/^/$d,/"; done > results.csv

# JSON + jq
unwaf -d target.com --json | jq '.bypasses[].ip'

Configuration

On first run, Unwaf creates $HOME/.unwaf.conf with this template:

root@kitploit:~
# Unwaf config file — API keys for optional discovery methods
# Free methods (SPF, MX, crt.sh, subdomains, OTX, RapidDNS, HackerTarget, Wayback) work without any keys.

# ViewDNS.info — DNS history (250 free requests, no credit card required)
viewdns=""

# SecurityTrails — DNS history (https://securitytrails.com/corp/api)
securitytrails=""

# Censys — SSL certificate search (requires a PAID license)
censys_token=""
censys_org_id=""

# AlienVault OTX — passive DNS (optional, raises rate limits)
otx_api_key=""

# Shodan — host search by SSL cert, hostname, favicon hash
shodan_api_key=""

# DNSDB/Farsight — historical DNS records (Community Edition: 500 queries/month free)
dnsdb_api_key=""

Author

Martín Martín

  • Website
  • LinkedIn
  • GitHub

License

Distributed under the GPL v3 License.

Download Tool
MethodTypeDescription
SPF recordsFreeExtracts IPs from ip4:/ip6: SPF mechanisms
MX recordsFreeResolves mail server hostnames (skips Google/Microsoft/etc.)
Subdomain probingFreeResolves 30+ common subdomains (mail, dev, staging, cpanel, origin, etc.)
Certificate TransparencyFreeQueries crt.sh for all subdomains, resolves to non-WAF IPs
AlienVault OTXFreePassive DNS records (optional API key raises rate limits)
RapidDNSFreeSubdomain enumeration via HTML scraping
HackerTargetFreeHost search API (50 req/day)
Wayback MachineFreeExtracts hostnames from archived URLs via CDX API
WAF detectionFreeFingerprints the WAF vendor via HTTP headers
Favicon hashingFreeGenerates MD5, SHA256, and MMH3 hashes for Shodan/Censys search
Shodan host searchAPI (free tier)Searches by SSL cert CN, hostname, and favicon hash (search requires membership)
SecurityTrails historyAPI (free tier)Historical DNS A records (50 req/month free)
ViewDNS historyAPI (free tier)Historical DNS A records (250 free requests)
Censys SSL searchAPI (paid)Finds hosts presenting SSL certs matching the domain
DNSDB/FarsightAPI (free tier)Historical DNS records via NDJSON API (Community Edition: 500 queries/month)
MethodWeightDescription
HTML similarity60%Diff-based text comparison with reference page
SSL certificate25%Serial number (50%), CN match (25%), SAN overlap (25%)
HTTP headers15%Server, X-Powered-By, and Set-Cookie name comparison
Status code±5-20%Bonus for match, penalty for success/error mismatch
FlagLong FlagDescriptionDefault
-d--domainThe domain to check(required unless -l)
-s--sourceSource HTML file to compare—
-c--configConfig file path$HOME/.unwaf.conf
-t--thresholdSimilarity threshold percentage60
-w--workersNumber of concurrent workers50
-v--verboseEnable verbose outputfalse
-q--quietSilent mode: only output bypass IPsfalse
--timeoutHTTP timeout in seconds10
--rate-limitMax HTTP requests per second, 0=unlimited0
--proxyProxy URL (http:// or socks5://)—
--scan-neighborsScan /24 neighbors of confirmed bypass IPsfalse
--jsonOutput results as JSONfalse
-l--listFile containing domains to check, one per line—
-o--outputWrite results to file—
--versionPrint version and exit—
-h--helpDisplay help information—