├── README.md
└── fuzzer.html
/README.md:
--------------------------------------------------------------------------------
1 | # XSS Fuzzer
2 |
3 | XSS Fuzzer is a simple application written in plain HTML/JavaScript/CSS which generates XSS payloads based on user-defined vectors using multiple placeholders which are replaced with fuzzing lists.
4 |
5 | It offers the possibility to just generate the payloads as plain-text or to execute them inside an iframe. Inside iframes, it is possible to send GET or POST requests from the browser to arbitrary URLs using generated payloads.
6 |
7 | # Why?
8 |
9 | XSS Fuzzer is a generic tool that can be useful for multiple purposes, including:
10 |
11 | * Finding new XSS vectors, for any browser
12 | * Testing XSS payloads on GET and POST parameters
13 | * Bypassing XSS Auditors in the browser
14 | * Bypassing web application firewalls
15 | * Exploiting HTML whitelist features
16 |
17 | # Example
18 |
19 | In order to fuzz, it is required to create placeholders, for example:
20 |
21 | * The [TAG] placeholder with fuzzing list: img svg.
22 | * The [EVENT] placeholder with fuzzing list: onerror onload.
23 | * The [ATTR] placeholder with fuzzing list: src value.
24 | * The payloads will use the mentioned placeholders, such as:
25 |
26 | ```html
27 | <[TAG] [ATTR]=Something [EVENT]=[SAVE_PAYLOAD] />
28 | ```
29 |
30 | The [SAVE_PAYLOAD] placeholder will be replaced with JavaScript code such as alert(unescape('[PAYLOAD]'));.
31 |
32 | This code is triggered when an XSS payload is successfully executed.
33 |
34 | The result for the mentioned fuzzing lists and payload will be the following:
35 |
36 | ```html
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 | ```
46 |
47 | When it is executed in a browser such as Mozilla Firefox, it will alert the executed payloads:
48 |
49 | ```html
50 |
51 |
52 |
53 | ```
54 |
55 | # Sending requests
56 |
57 | It is possible to use a page vulnerable to XSS for different tests, such as bypasses for the browser XSS Auditor. The page can receive a GET or POST parameter called payload and will just display its unescaped value.
58 |
59 | # Website
60 |
61 | A live version can be found at https://xssfuzzer.com
62 |
63 | # Contact
64 |
65 | The application is in beta state so it might have bugs. If you would like to report a bug or provide a suggestion, you can use the GitHub repository or you can send me an email to contact [a] xssfuzzer.com.
66 |
--------------------------------------------------------------------------------
/fuzzer.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
532 | XSS Fuzzer 533 | | 534 |||||||
---|---|---|---|---|---|---|
538 | Payloads 539 | | 540 |541 | Fuzzing lists 542 | | 543 |544 | List 545 | | 546 |||||
551 | 552 | | 553 | 554 |
555 | 556 | 558 | 559 | 560 | 561 | Placeholder: 562 | 563 | 564 | |
565 |
566 |
567 |
568 | 569 | 570 | |
571 | ||||
575 |
576 |
|
639 |
640 | 641 | 642 | | 643 ||||||
647 | Output: 648 | 649 | 650 | |
651 |