How it works?
WAFP fetches the files given by the Finger Prints from a webserver and checks if the checksums of those files are matching to the given checksums from the Finger Prints. This way it is able to detect the detailed version and even the build number of a Web Application.
In detail?
A Web Application Finger Print consits of a set of relative file locations in conjunction with their md5sums. It is made based on a production or example installation of a Web Application or just out of an extracted Web Application install files tarball. For this task, generate_wafp_fingerprint.sh is to be used.
WAFP comes with a README and a HOWTO file both containing some descriptions and examples.
Example
A specific fingerprint with verbose mode enabled:
1 |
wafp.rb --verbose -p phpmyadmin https://phpmyadmin.example.de |
1 2 3 4 5 6 7 8 9 10 11 12 |
found the following matches (limited to 10): +-------------------------------------------------------------+ phpmyadmin-2.11.9.1 296 / 299 (98.99%) phpmyadmin-2.11.9.2 295 / 299 (98.66%) phpmyadmin-2.11.9.4 295 / 299 (98.66%) phpmyadmin-2.11.8.1 295 / 299 (98.66%) phpmyadmin-2.11.9.5 295 / 299 (98.66%) phpmyadmin-2.11.8 295 / 299 (98.66%) phpmyadmin-2.11.9.3 295 / 299 (98.66%) phpmyadmin-2.11.9 295 / 299 (98.66%) phpmyadmin-2.11.4 294 / 299 (98.33%) phpmyadmin-2.11.5.2 294 / 299 (98.33%) |
You can download WAFP here:
Or read more here.
droope says
Sweeet…
Dariusz says
Nice.
I’ve thought about something like that in JS. Victim browses the “evil” page then JS script tries to load pictures e.g. http://192.168.1.1/pic1.jpg, http://192.168.1.1/pic2.jpg etc… were pic1.jpg, pic2.jpg makes signature for the given application. There isn’t problem with same origin policy for the images, so it’s possible to check any (internal) address. After scanning, JS sends report to the server.