-
Notifications
You must be signed in to change notification settings - Fork 150
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Version 2.08b: Many changes including dir refactor
- Added Host header XSS testing. - Added HTML encoding XSS tests to detect scenarios where our injection string ends up in an attributes that execute HTML encoded Javascript. For example: onclick. - Bruteforcing is now disabled for URLs that gave a directory listing. - Added subject alternate name checking for SSL certificates (cheers to Matt Caroll for his feedback) - Added signature matching (see doc/signatures.txt) which means a lot of the content based issues are no longer hardcoded. - Added active XSSI test. The passive XSSI stays (for now) but this active check is more acurate and will remove issues detected by the passive one if they cannot be confirmed. This reduces false positives - Added HTML tag XSS test which triggers when our payload is used as a tag attribute value but without quotes (courtesy of wavsep). - Added javascript: scheme XSS testing (courtesy of wavsep). - Added form based authentication. During these authenticated scans, skipfish will check if the session has ended and re-authenticates if necessary. - Fixed a bug where in slow scans the console output could mess up due to the high(er) refresh rate. - Fixed a bug where a missed response during the injection tests could result in a crash. (courtesy of Sebastian Roschke) - Restructure the source package a bit by adding a src/, doc/ and tools/ directory.
- Loading branch information
Showing
39 changed files
with
2,551 additions
and
544 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
|
||
|
||
This document describes 3 different methods you can use to run | ||
authenticated skipfish scans. | ||
|
||
1) Form authentication | ||
2) Cookie authentication | ||
3) Basic HTTP authentication | ||
|
||
|
||
|
||
----------------------- | ||
1. Form authentication | ||
---------------------- | ||
|
||
With form authentication, skipfish will submit credentials using the | ||
given login form. The server is expected to reply with authenticated | ||
cookies which will than be used during the rest of the scan. | ||
|
||
An example to login using this feature: | ||
|
||
$ ./skipfish --auth-form http://example.org/login \ | ||
--auth-user myuser \ | ||
--auth-pass mypass \ | ||
--auth-verify-url http://example.org/profile \ | ||
[...other options...] | ||
|
||
This is how it works: | ||
|
||
1. Upon start of the scan, the authentication form at /login will be | ||
fetched by skipfish. We will try to complete the username and password | ||
fields and submit the form. | ||
|
||
2. Once a server response is obtained, skipfish will fetch the | ||
verification URL twice: once with the new session cookies and once | ||
without any cookies. Both responses are expected to be different. | ||
|
||
3. During the scan, the verification URL will be used many times to | ||
test whether we are authenticated. If at some point our session has | ||
been terminated server-side, skipfish will re-authenticate using the | ||
--auth-form (/login in our example) . | ||
|
||
Verifying whether the session is still active requires a good verification | ||
URL where an authenticated request is going to get a different response | ||
than an anonymous request. For example a 'profile' or 'my account' page. | ||
|
||
Troubleshooting: | ||
---------------- | ||
|
||
1. Login field names not recognized | ||
|
||
If the username and password form fields are not recognized, skipfish | ||
will complain. In this case, you should specify the field names using | ||
the --auth-user-field and --auth-pass-field flags. | ||
|
||
2. The form is not submitted to the right location | ||
|
||
If the login form doesn't specify an action="" location, skipfish | ||
will submit the form's content to the form URL. This will fail in some | ||
occasions. For example, when the login page uses Javascript to submit | ||
the form to a different location. | ||
|
||
Use the --auth-form-target flag to specify the URL where you want skipfish | ||
to submit the form to. | ||
|
||
3. Skipfish keeps getting logged out | ||
|
||
Make sure you blacklist any URLs that will log you out. For example, | ||
using the " -X /logout" | ||
|
||
|
||
------------------------- | ||
2. Cookie authentication | ||
------------------------- | ||
|
||
Alternatively, if the site relies on HTTP cookies you can also feed these | ||
to skipfish manually. To do this log in using your browser or using a | ||
simple curl script, and then provide skipfish with a session cookie: | ||
|
||
$ ./skipfish -C name=val [...other options...] | ||
|
||
Other session cookies may be passed the same way, one per each -C option. | ||
|
||
The -N option, which causes new cookies to be rejected by skipfish, | ||
is almost always a good choice when running cookie authenticated scans | ||
(e.g. to avoid your precious cookies from being overwritten). | ||
|
||
$ ./skipfish -N -C name=val [...other options...] | ||
|
||
----------------------------- | ||
3. Basic HTTP authentication | ||
----------------------------- | ||
|
||
For simple HTTP credentials, you can use the -A option to pass the | ||
credentials. | ||
|
||
$ ./skipfish -A user:pass [...other options...] | ||
|
File renamed without changes.
Oops, something went wrong.