Web Server Identification
HTTP Headers
BASH
# Server header
curl -I https://target.com | grep -i server
# Common responses
Server: Apache/2.4.41
Server: nginx/1.18.0
Server: Microsoft-IIS/10.0
Server: cloudflare
Response Behavior
TEXT
# Default pages
Apache: /icons/, /manual/
Nginx: 50x.html
IIS: /aspnet_client/
# Error pages
Different styling per server
Nmap Scripts
BASH
nmap -sV -p 80,443 target.com
nmap --script http-server-header target.com
nmap --script http-headers target.com
Framework Detection
Response Headers
TEXT
X-Powered-By: PHP/7.4.3
X-Powered-By: Express
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
X-Generator: Drupal 9
Cookies
TEXT
# Session cookie names
PHPSESSID → PHP
JSESSIONID → Java
ASP.NET_SessionId → ASP.NET
rack.session → Ruby
laravel_session → Laravel
connect.sid → Express
_rails_session → Rails
URL Patterns
TEXT
.php → PHP
.asp/.aspx → ASP.NET
.jsp → Java
.do → Struts
/wp-admin → WordPress
/node/ → Drupal
HTML Indicators
HTML
<!-- Check source for -->
meta generator
framework-specific classes
JavaScript library includes
<!-- wp-content → WordPress -->
<!-- /sites/default → Drupal -->
CMS Detection
WPScan (WordPress)
BASH
wpscan --url https://target.com
wpscan --url https://target.com --enumerate u,p,t
wpscan --url https://target.com --api-token YOUR_TOKEN
Droopescan (Drupal, Joomla, etc.)
BASH
droopescan scan drupal -u https://target.com
droopescan scan joomla -u https://target.com
CMSmap
BASH
cmsmap https://target.com
cmsmap -t https://target.com -f W # WordPress
Manual Detection
TEXT
# WordPress
/wp-admin/
/wp-login.php
/wp-content/
/xmlrpc.php
# Drupal
/core/
/sites/
/node/1
CHANGELOG.txt
# Joomla
/administrator/
/components/
/modules/
/templates/
# Magento
/admin
/downloader
/skin/
/js/mage/
WAF Detection
wafw00f
BASH
wafw00f https://target.com
wafw00f -a https://target.com # Test all WAFs
Common WAF Headers
TEXT
Server: cloudflare
X-CDN: Incapsula
X-Sucuri-ID: ...
X-Protected-By: ...
X-Firewall: ...
WAF Fingerprints
TEXT
# Cloudflare
cf-ray header
__cfduid cookie
# AWS WAF
x-amzn-RequestId
awselb cookie
# Akamai
AkamaiGHost
x-akamai-transformed
# Imperva/Incapsula
incap_ses_ cookie
visid_incap_ cookie
# ModSecurity
Mod_Security
NOYB
Bypass Testing
BASH
# Malicious payload to trigger WAF
curl "https://target.com/<script>alert(1)</script>"
# Check response for WAF block page
JavaScript Framework Detection
Wappalyzer
BASH
# Browser extension
# CLI version
wappalyzer https://target.com --pretty
Manual Detection
JAVASCRIPT
// Check console
React._version
angular.version
Vue.version
jQuery.fn.jquery
// Check global objects
window.React
window.angular
window.Vue
window.$
Source Analysis
HTML
<!-- React -->
data-reactroot, data-reactid
<!-- Angular -->
ng-app, ng-controller, ng-model
<!-- Vue -->
v-bind, v-model, v-if
<!-- Common includes -->
react.min.js, angular.min.js, vue.min.js
API Technology
GraphQL Detection
TEXT
/graphql
/graphql/console
/graphiql
/playground
# Query
{"query": "{__schema{types{name}}}"}
REST API Hints
TEXT
/api/
/api/v1/
/api/v2/
/rest/
/swagger
/swagger.json
/openapi.json
/api-docs
Database Detection
Error Messages
TEXT
# MySQL
You have an error in your SQL syntax
# PostgreSQL
ERROR: syntax error at or near
# MSSQL
Unclosed quotation mark
# Oracle
ORA-00933: SQL command not properly ended
# MongoDB
cannot convert to object
Default Ports
TEXT
3306 → MySQL/MariaDB
5432 → PostgreSQL
1433 → MSSQL
1521 → Oracle
27017 → MongoDB
6379 → Redis
9200 → Elasticsearch
Automation Tools
WhatWeb
BASH
whatweb https://target.com
whatweb -v https://target.com
whatweb -a 3 https://target.com # Aggressive
Wappalyzer CLI
BASH
wappalyzer https://target.com
wappalyzer https://target.com --pretty
BuiltWith
TEXT
https://builtwith.com/
https://w3techs.com/
Netcraft
TEXT
https://toolbar.netcraft.com/
Version Detection
Nmap Service Version
BASH
nmap -sV -p- target.com
nmap -sV --version-intensity 5 target.com
Specific Files
TEXT
# WordPress
/readme.html
/license.txt
/wp-includes/version.php
# Drupal
/CHANGELOG.txt
/core/install.php
# Joomla
/administrator/manifests/files/joomla.xml
# Apache
/server-status
/server-info
Quick Fingerprint Workflow
BASH
# 1. HTTP headers
curl -I https://target.com
# 2. WhatWeb
whatweb -v https://target.com
# 3. Nmap service detection
nmap -sV -p 80,443 target.com
# 4. WAF detection
wafw00f https://target.com
# 5. CMS-specific
wpscan --url https://target.com # if WordPress
# 6. Browser analysis
# Check Wappalyzer extension
# View source for indicators
Bug Bounty Tips
Why Fingerprinting Matters
TEXT
- Find known CVEs for versions
- Target CMS-specific vulnerabilities
- Bypass WAF with known techniques
- Identify misconfigurations
- Prioritize testing approach
Version-Specific Exploits
BASH
# After identifying version
searchsploit apache 2.4.49
searchsploit wordpress 5.0
# CVE lookup
https://cve.mitre.org/
https://nvd.nist.gov/