Home Hacking Tools Wapiti – The Black Box Vulnerability Scanner for Web Applications

Wapiti – The Black Box Vulnerability Scanner for Web Applications

by Unallocated Author

Wapiti is an open source tool that scans web applications for multiple vulnerabilities including data base injections, file disclosures,  cross site scripting, command execution attacks,  XXE injection, and CRLF injection. The database injection includes SQL, XPath, PHP, ASP, and JSP injections. Command execution attacks include eval(), system(), and passtru() vulnerabilities.

Besides identifying the aforesaid vulnerabilities, Wapiti also performs some addition penetration testing tasks, such as finding potentially dangerous files on servers, finding configuration errors in .httaccess files that can lead to security breach, and finding backup copies of the applications on the server that could compromise the security of said web applications if an attacker manages to get a hand on those files. The results gathered are automatically stored in a html file. The other supported file formats include .XML, .JSON, and .TXT.

Wapiti Installation

wapiti cloning

Wapiti requires Python 2.7.x or higher to operate. The other dependencies include Python-requests, and Python-xml. To begin with installation, first clone the tool from Github using the following command.


In the next step, run the setup.py file from wapiti directory using the following command.

cd wapiti
python3 setup.py install

wapiti installation

How Wapiti Works

To scan your test web application for possible vulnerabilities, run the following command.

Python3 wapiti –u <web application>

Wapiti has dedicated modules for each type of vulnerability it scans. Before scanning the target for any vulnerability, Wapiti enumerates the links associated with the target web application. Once links are enumerated, Wapiti runs each module one by one to test if the target web application is vulnerable. The details found about vulnerabilities are stored in a file, generated at the end of scanning. Wapiti has the capability to resume any scan process if aborted in the middle.

wapiti resume capability

The other features of the tool include support for HTTP and HTTPS proxy, excluding unwanted urls from the scanning process, extracting the urls from JavaScript and Shockwave Flash files, and support for authentication.

If we run Wapiti on the following test website, it scans and displays the vulnerabilities instantly.

python3 wapiti –u http://phptest.vulnweb.com

On screen vulnerability finding result

The complete vulnerability report is generated and stored in the root folder as shown in the following screenshot.

wapiti report path

The generated html report can be analyzed in a web browser. The report shows all the results in a tabular format as shown in the following format.

wapiti vulnerability scan report

The details of vulnerabilities can be found by clicking on the listed vulnerability.

What Bunny rating does it get?

Wapiti is pretty handy in scanning web applications against critical vulnerabilities. The tool supports payload options with both, GET and POST method of attacking the target application. Although the overall performance of Wapiti is decent, the tool sometimes hangs while scanning large web applications. As a result we will be awarding this tool a rating of 3.5 out of 5 bunnies.

half bunny

Want to learn more about ethical hacking?

We have a  networking hacking course that is of a similar level to OSCP, get an exclusive 95% discount HERE

Do you know of another GitHub related hacking tool?

Get in touch with us via the contact form if you would like us to look at any other GitHub ethical hacking tools.


You may also like

Latest Hacking News

Privacy Preference Center


The __cfduid cookie is used to identify individual clients behind a shared IP address and apply security settings on a per-client basis.

cookie_notice_accepted and gdpr[allowed_cookies] are used to identify the choices made from the user regarding cookie consent.

For example, if a visitor is in a coffee shop where there may be several infected machines, but the specific visitor's machine is trusted (for example, because they completed a challenge within your Challenge Passage period), the cookie allows Cloudflare to identify that client and not challenge them again. It does not correspond to any user ID in your web application, and does not store any personally identifiable information.

__cfduid, cookie_notice_accepted, gdpr[allowed_cookies]


DoubleClick by Google refers to the DoubleClick Digital Marketing platform which is a separate division within Google. This is Google’s most advanced advertising tools set, which includes five interconnected platform components.

DoubleClick Campaign Manager: the ad-serving platform, called an Ad Server, that delivers ads to your customers and measures all online advertising, even across screens and channels.

DoubleClick Bid Manager – the programmatic bidding platform for bidding on high-quality ad inventory from more than 47 ad marketplaces including Google Display Network.

DoubleClick Ad Exchange: the world’s largest ad marketplace for purchasing display, video, mobile, Search and even Facebook inventory.

DoubleClick Search: is more powerful than AdWords and used for purchasing search ads across Google, Yahoo, and Bing.

DoubleClick Creative Solutions: for designing, delivering and measuring rich media (video) ads, interactive and expandable ads.



The _ga is asssociated with Google Universal Analytics - which is a significant update to Google's more commonly used analytics service. This cookie is used to distinguish unique users by assigning a randomly generated number as a client identifier. It is included in each page request in a site and used to calculate visitor, session and campaign data for the sites analytics reports. By default it is set to expire after 2 years, although this is customisable by website owners.

The _gat global object is used to create and retrieve tracker objects, from which all other methods are invoked. Therefore the methods in this list should be run only off a tracker object created using the _gat global variable. All other methods should be called using the _gaq global object for asynchronous tracking.

_gid works as a user navigates between web pages, they can use the gtag.js tagging library to record information about the page the user has seen (for example, the page's URL) in Google Analytics. The gtag.js tagging library uses HTTP Cookies to "remember" the user's previous interactions with the web pages.

_ga, _gat, _gid