
The web-application vulnerability scanner
Wapiti allows you to audit the security of your websites or web applications.
It performs "black-box" scans (it does not study the source code) of the web application by crawling the webpages of the deployed webapp, looking for scripts and forms where it can inject data.
Once it gets the list of URLs, forms and their inputs, Wapiti acts like a fuzzer, injecting payloads to see if a script is vulnerable.
What's new in Wapiti 3.3.0 ? Take a look here.
Wapiti modules cover:
- SQL Injections (Error based, boolean based, time based) and XPath Injections
- LDAP injections (Error based and boolean based)
- Cross Site Scripting (XSS) reflected and permanent
- File disclosure detection (local and remote include, require, fopen, readfile...)
- Command Execution detection (eval(), system(), passtru()...)
- XXE (Xml eXternal Entity) injection
- CRLF Injection
- Search for potentially dangerous files on the server (thanks to the Nikto db)
- Bypass of weak htaccess configurations
- Search for copies (backup) of scripts on the server
- Shellshock
- Folder and file enumeration (DirBuster like)
- Server Side Request Forgery (through use of an external Wapiti website)
- Open Redirects
- Detection of uncommon HTTP methods (like PUT)
- Basic CSP Evaluator
- Brute Force login form (using a dictionary list)
- Checking HTTP security headers
- Checking cookie security flags (secure and httponly flags)
- Cross Site Request Forgery (CSRF) basic detection
- Fingerprinting of web applications using the Wappalyzer database, gives related CVE information
- Enumeration of popular CMS (Drupal, Joomla, Magento, Prestashop, SPIP, Typo3, Wordpress, etc)
- Detection of subdomain takeovers vulnerabilities
- Log4Shell vulnerability detection (CVE-2021-44228)
- Spring4Shell (CVE-2022-22965) detection
- Check https redirections
- Check for file upload vulnerabilities
- Detection of network devices
- Inject payloads inside JSON body too
- Check for TLS misconfiguration and vulnerabilities (thanks to sslscan)
Wapiti supports both GET and POST HTTP methods for attacks.
It also supports multipart forms and can inject payloads in filenames (upload).
Warnings are raised when an anomaly is found (for example 500 errors and timeouts)
Wapiti is able to make the difference between permanent and reflected XSS vulnerabilities.
General features :
- Generates vulnerability reports in various formats (HTML, XML, JSON, TXT, CSV, Markdown)
- Can suspend and resume a scan or an attack (session mechanism using sqlite3 databases)
- Can give you colors in the terminal to highlight vulnerabilities
- Different levels of verbosity
- Fast and easy way to activate/deactivate attack modules
- Adding a payload can be as easy as adding a line to a text file
- Configurable number of concurrent tasks to perform HTTP requests
Browsing features
- Support HTTP, HTTPS and SOCKS5 proxies
- HTTP authentication on the target (Basic, Digest, NTLM)
- Authentication by filling login forms
- Ability to restrain the scope of the scan (domain, folder, page, url)
- Automatic removal of one or more parameters in URLs
- Multiple safeguards against scan endless-loops (for example, limit of values for a parameter)
- Possibility to set the first URLs to explore (even if not in scope)
- Can exclude some URLs of the scan and attacks (eg: logout URL)
- Import cookies from your Chrome or Firefox browser or using the wapiti-getcookie tool
- Can activate / deactivate SSL certificates verification
- Try to extract URLs from javascript (very basic JS interpreter)
- HTML5 aware (understand recent HTML tags)
- Several options to control the crawler behavior and limits.
- Skipping some parameter names during attack.
- Setting a maximum time for the scan process.
- Adding some custom HTTP headers or setting a custom User-Agent.
- Man-In-The-Middle proxy support to explore the target by using your browser
- Automated browsing using Firefox in headless mode
- Loading your own python code for complicated authentication cases (see --form-script option)
- Adding custom URL or PATH to update Wappalyzer database
- Scan REST APIs given an OpenAPI (swagger) file
Wapiti is a command-line application.
Here is an example of output against a vulnerable web application.
You may find some useful information in the README
and the INSTALL files.
Have any questions ? You may find answers in the FAQ.
Download
or install it easily using PIP:
pip install wapiti3
Usage
usage: wapiti [-h] [-u URL] [--swagger URI] [--data data]
[--scope {url,page,folder,subdomain,domain,punk}]
[-m MODULES_LIST] [--list-modules] [-l LEVEL] [-p PROXY_URL]
[--tor] [--mitm-port PORT] [--headless {no,hidden,visible,both}]
[--wait TIME] [-a CREDENTIALS] [--auth-user USERNAME]
[--auth-password PASSWORD] [--auth-method {basic,digest,ntlm}]
[--form-cred CREDENTIALS] [--form-user USERNAME]
[--form-password PASSWORD] [--form-url URL] [--form-data DATA]
[--form-enctype DATA] [--form-script FILENAME] [-c COOKIE_FILE]
[-sf SIDE_FILE] [-C COOKIE_VALUE] [--jwt JWT]
[--drop-set-cookie] [--skip-crawl] [--resume-crawl]
[--flush-attacks] [--flush-session] [--store-session PATH]
[--store-config PATH] [-s URL] [-x URL] [-r PARAMETER]
[--skip PARAMETER] [-d DEPTH] [--max-links-per-page MAX]
[--max-files-per-dir MAX] [--max-scan-time SECONDS]
[--max-attack-time SECONDS] [--max-parameters MAX] [-S FORCE]
[--tasks tasks] [--external-endpoint EXTERNAL_ENDPOINT_URL]
[--internal-endpoint INTERNAL_ENDPOINT_URL]
[--endpoint ENDPOINT_URL] [--dns-endpoint DNS_ENDPOINT_DOMAIN]
[-t SECONDS] [-H HEADER] [-A AGENT] [--verify-ssl {0,1}]
[--color] [-v LEVEL] [--log OUTPUT_PATH] [-f FORMAT]
[-o OUTPUT_PATH] [-dr DETAILED_REPORT_LEVEL] [--no-bugreport]
[--update] [--version] [--cms CMS_LIST] [--wapp-url WAPP_URL]
[--wapp-dir WAPP_DIR]
__ __ .__ __ .__________
/ \ / \_____ ______ |__|/ |_|__\_____ \
\ \/\/ /\__ \ \____ \| \ __\ | _(__ <
\ / / __ \| |_> > || | | |/ \
\__/\ / (____ / __/|__||__| |__/______ /
\/ \/|__| \/
Shortest way (with default options) to launch a Wapiti scan :
wapiti -u http://target/
Every option is detailed in the wapiti(1) manpage.
Wapiti also comes with a utility to fetch cookies from websites called wapiti-getcookie. The corresponding manpage is here.
Need help? Check out the wiki
Licensing
Wapiti is released under the GNU General Public License version 2 (the GPL).




