Skip to content

Marlbogaro/wafme0w

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wafme0w

Fast and lightweight Web Application Firewall fingerprinting tool.

Features

Based on Wafw00f, its features are:

  • Can detect 153 different Firewalls
  • Concurrent fingerprinting
  • STDIN supported
  • Fast detection mode for huge target lists
  • Multiple output formats supported (JSON, file, stdout)

Benchmark

Scanned Alexa top 100 domains. Running on i7-7700K CPU @ 4.20GHz × 4 (8 Threads)

tool flags Time elapsed Wafs found Generic Wafs found Diff
wafme0w --fast --concurrency 30 1min 37s (Best) 20 11 +0%
wafme0w --concurrency 30 3min 51s 22 (Best) 16 +138%
wafw00f 13min 3s 20 16 +707%
wafw00f -a 15min 8s 20 23 (Best) +836%

Getting started

Installation

wafme0w requires go >= 1.19 to install successfully. Run the following command to install the latest version:

go install -v github.com/Marlbogaro/wafme0w/cmd/wafme0w@latest

Building Docker image

git clone https://github.com/Marlbogaro/wafme0w.git
cd wafme0w
docker build -t wafme0w:latest .

Running Docker container

docker run --rm -it wafme0w:latest -t https://canva.com


             /\_/\           ___
            = o_o =_______    \ \ 
             __^      __(  \.__) )
            <_____>__(_____)____/

                Wafme0w v1.0.0

Fast Web Application Firewall Fingerprinting tool

[+] https://canva.com is behind Cloudflare (Cloudflare Inc.)

Running Wafme0w

To run the tool on a target, just use the following command.

cat /tmp/alexa-top-30.txt | wafme0w --concurrency 30 --no-warning --no-generic


             /\_/\           ___
            = o_o =_______    \ \ 
             __^      __(  \.__) )
            <_____>__(_____)____/

                Wafme0w v1.0.0

Fast Web Application Firewall Fingerprinting tool

[~] https://microsoftonline.com no WAFs have been found
[~] https://reddit.com no WAFs have been found
[+] https://canva.com is behind Cloudflare (Cloudflare Inc.)
[~] https://whatsapp.com no WAFs have been found
[~] https://microsoft.com no WAFs have been found
[~] https://live.com no WAFs have been found
[~] https://163.com no WAFs have been found
[~] https://yandex.ru no WAFs have been found
[~] https://zhihu.com no WAFs have been found
[~] https://taobao.com no WAFs have been found
[~] https://wikipedia.org no WAFs have been found
[~] https://qq.com no WAFs have been found
[~] https://bilibili.com no WAFs have been found
[~] https://bing.com no WAFs have been found
[~] https://vk.com no WAFs have been found
[~] https://facebook.com no WAFs have been found
[~] https://twitch.tv no WAFs have been found
[~] https://google.com no WAFs have been found
[~] https://yahoo.com no WAFs have been found
[~] https://linkedin.com no WAFs have been found
[~] https://twitter.com no WAFs have been found
[~] https://office.com no WAFs have been found
[+] https://zoom.us is behind Cloudflare (Cloudflare Inc.)
[~] https://csdn.net no WAFs have been found
[~] https://github.com no WAFs have been found
[~] https://baidu.com no WAFs have been found
[~] https://netflix.com no WAFs have been found
[+] https://amazon.com is behind Cloudfront (Amazon)
[~] https://instagram.com no WAFs have been found
[~] https://youtube.com no WAFs have been found

Wafme0w Go library

Usage Example:

package main

import (
	"bytes"
	"fmt"
	"github.com/Marlbogaro/wafme0w/pkg/wafme0w"
	"os"
)

func main() {
	targets := []byte("https://google.com\nhttps://paypal.com\n")
	targetsReader := bytes.NewReader(targets)
	/*
		Otherwise you can also load your targets from a file
		targetsReader, err := os.Open("/tmp/alexa-top-20.txt")
		if err != nil {
			panic(err)
		}
	*/
	fingerPrintsFile, err := os.Open("/PATH/TO/wafme0w/cmd/wafme0w/resources/waf-fingerprints.json")
	//fingerprints at https://github.com/Marlbogaro/wafme0w/blob/main/cmd/wafme0w/resources/waf-fingerprints.json 
	opts := &wafme0w.Options{Inputs: targetsReader,
		FingerPrints: fingerPrintsFile,
		Silent:       true,
		Concurrency:  10,
		//FastMode:     true,
		//OutputFile: "myout.json",
	}
	runner := wafme0w.NewRunner(opts)
	result, err := runner.Scan()
	if err != nil {
		panic(err)
	}
	fmt.Printf("%#v\n", result)
}

Thanks

People who contributed

@Fibonaccispiralz

Contact

divittorioluis AT gmail DOT com

Project Link: https://github.com/Lu1sDV/wafme0w

About

Fast and lightweight Web Application Firewall Fingerprinting tool

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 99.2%
  • Dockerfile 0.8%