skipfish: Automated web application security scanner

skipfish: Automated web application security scanner

There was a stretch a few years back when I needed to get a rough security picture of a fairly large internal application, fast, without spending days on manual crawling first. Skipfish was built exactly for that situation — it’s written in C, ridiculously fast compared to most scanners of its era, and produces an interactive HTML sitemap of the entire application alongside its findings. Even though development has slowed compared to newer tools, it’s still a genuinely useful, lightweight option worth knowing.

What Is Skipfish?

Skipfish is an active web application security reconnaissance tool originally developed by Google. It crawls a target application and performs a series of security-focused probes, generating an interactive sitemap annotated with security findings — ranging from informational notes to high-risk issues like SQL injection or XSS.

Its defining characteristic is speed: written in C rather than a scripting language, and built around a highly efficient, recursive crawl-and-probe architecture, it can process very large sites quickly relative to script-based scanners of comparable scope.

How Skipfish Works Internally

Skipfish’s architecture is built around a recursive crawler paired with a dictionary-based probing engine:

  1. Crawling — Skipfish recursively crawls the target, following links and submitting forms, building a full site structure map as it goes.
  2. Dictionary-based brute forcing — for every directory discovered, Skipfish also tries entries from a wordlist to discover hidden files, backup files, and directories not linked anywhere in the visible application (/backup/, /admin/, /.git/, etc.).
  3. Differential response analysis — Skipfish sends a range of crafted requests (with and without payloads) and statistically compares responses to reduce false positives — rather than just pattern-matching a single response, it looks at how the application’s behavior changes.
  4. Security checks per discovered resource — every URL Skipfish finds gets tested for a defined checklist of issues: injection flaws, directory listing exposure, insecure cookie flags, mixed content, outdated software signatures, and more.
  5. Report generation — output is a self-contained, interactive HTML report with an expandable sitemap tree, color-coded by severity, that you can browse offline.

Installation

On Debian/Ubuntu:

sudo apt install skipfish -y

From source:

git clone https://github.com/spinkham/skipfish.git
cd skipfish
make

Verify:

skipfish -h

Basic Syntax

skipfish -o <output_directory> [options] <target-url>

Command Examples

1. Basic scan (against a lab target):

skipfish -o /home/user/skipfish_results http://testlab.local/

Sample console output during the scan:

Scan statistics
---------------
     Scan time : 0:03:12.428
 HTTP requests : 42918 (223.5/s)
   Compression : 78.2% of transfers saved (183 MB saved)
   HTTP faults : 0 net errors, 0 proto errors, 0 retried, 0 drops
 TCP handshakes : 412 total (104.1 req/conn)
   TCP faults : 0 failures, 0 timeouts, 3 purged
 External links : 218 skipped
    Reqs pending : 0

2. Using a specific dictionary wordlist:

skipfish -o results/ -S /usr/share/skipfish/dictionaries/complete.wl http://testlab.local/

3. Authenticated scan with a session cookie:

skipfish -o results/ -C "PHPSESSID=abc123" http://testlab.local/

4. Limiting crawl depth and request rate (politer scanning):

skipfish -o results/ -d 3 -m 5 http://testlab.local/

5. Excluding specific paths (e.g., a logout link that would kill the session):

skipfish -o results/ -X "/logout" http://testlab.local/

Key Options

FlagPurpose
-oOutput directory for the HTML report (required)
-SPath to dictionary wordlist file
-CCustom cookie header for authenticated scans
-dMaximum crawl depth
-mMax requests per second (rate limiting)
-XExclude a specific path from crawling
-AHTTP auth credentials (user:pass)
-bBrowser/UA fingerprint to mimic (i for IE, f for Firefox, etc.)

Real-World Use Cases

Workflow: Integration With Other Tools

  1. WhatWeb first, to understand the tech stack before committing to a full crawl.
  2. Skipfish for a fast, broad sitemap and initial vulnerability sweep.
  3. Manual review of the HTML sitemap — its interactive report is genuinely useful for spotting interesting, unlinked endpoints a human should look at directly in Burp Suite.
  4. Deep-dive tools (SQLMap, Commix, Wapiti) applied specifically to any parameters/endpoints Skipfish’s report flags as high or medium severity.

Performance Optimization

Troubleshooting & Common Mistakes

Best Practices

FAQ

Is Skipfish still actively maintained? Development has slowed significantly compared to newer tools, but it remains functional and is still packaged in major distributions. For cutting-edge vulnerability signatures, pair it with more actively maintained scanners.

How does Skipfish compare to Wapiti? Skipfish is generally faster (compiled C vs. Python) and includes strong hidden-content discovery via dictionary brute-forcing; Wapiti has more actively updated vulnerability-detection modules. Many testers use both for complementary coverage.

Can Skipfish handle JavaScript-heavy single-page applications? Like most non-browser-based crawlers, it primarily follows static HTML links and forms, so heavily JS-rendered SPAs may not be fully covered without supplementary manual crawling or URL seeding.

Lab Example

docker run --rm -it -p 80:80 vulnerables/web-dvwa
mkdir ~/skipfish_dvwa
skipfish -o ~/skipfish_dvwa -C "PHPSESSID=<session>;security=low" http://localhost/

Once the scan completes, open ~/skipfish_dvwa/index.html in a browser to explore the interactive sitemap and review flagged issues directly against DVWA’s known vulnerable pages.

Summary

Skipfish’s core strength is raw speed and efficient hidden-content discovery, wrapped in a genuinely useful interactive report format. While it’s not as actively developed as some newer alternatives, it remains a solid choice for a fast first-pass reconnaissance scan, especially on large applications where turnaround time matters — best used alongside more actively maintained tools for full, modern coverage.

References

Exit mobile version