├── .gitignore ├── requirements.txt ├── GAP └── images │ ├── run.png │ ├── tab.png │ ├── banner.png │ └── title.png ├── README.md ├── CHANGELOG.md └── GAP Help.md /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode 2 | __pycache__ 3 | *.class -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | beautifulsoup4 2 | html5lib 3 | urllib3 -------------------------------------------------------------------------------- /GAP/images/run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/e1abrador/GAP-Burp-Extension/main/GAP/images/run.png -------------------------------------------------------------------------------- /GAP/images/tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/e1abrador/GAP-Burp-Extension/main/GAP/images/tab.png -------------------------------------------------------------------------------- /GAP/images/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/e1abrador/GAP-Burp-Extension/main/GAP/images/banner.png -------------------------------------------------------------------------------- /GAP/images/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/e1abrador/GAP-Burp-Extension/main/GAP/images/title.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | ## About - v4.7 4 | 5 | This is an evolution of the original getAllParams extension for Burp. Not only does it find more potential parameters for you to investigate, but it also finds potential links to try these parameters on, and produces a target specific wordlist to use for fuzzing. 6 | The full Help documentation can be found [here](https://github.com/xnl-h4ck3r/burp-extensions/blob/main/GAP%20Help.md) or from the Help icon on the GAP tab. 7 | 8 | ## TL;DR 9 | 10 | ### Installation 11 | 12 | 1. Visit [Jython Offical Site](https://www.jython.org/download), and download the latest stand alone JAR file, e.g. `jython-standalone-2.7.3.jar`. 13 | 2. Open Burp, go to **Extensions** -> **Extension Settings** -> **Python Environment**, set the **Location of Jython standalone JAR file** and **Folder for loading modules** to the directory where the Jython JAR file was saved. 14 | 3. On a command line, go to the directory where the jar file is and run `java -jar jython-standalone-2.7.3.jar -m ensurepip`. 15 | 4. Download the `GAP.py` and `requirements.txt` from this project and place in the same directory. 16 | 5. Install Jython modules by running `java -jar jython-standalone-2.7.3.jar -m pip install -r requirements.txt`. 17 | 6. Go to the **Extensions** -> **Installed** and click **Add** under **Burp Extensions**. 18 | 7. Select **Extension type** of **Python** and select the **GAP.py** file. 19 | 20 | ### Using 21 | 22 | 1. Just select a target in your Burp scope (or multiple targets), or even just one subfolder or endpoint, and choose extension **GAP**: 23 | 24 |
25 | 26 | Or you can right click a request or response in any other context and select **GAP** from the **Extensions** menu. 27 | 28 | 2. Then go to the **GAP** tab to see the results: 29 | 30 |
31 | 32 | ## IMPORTANT Notes 33 | 34 | If you don't need one of the modes, then un-check it as results will be quicker. 35 | 36 | If you run GAP for one or more targets from the Site Map view, don't have them expanded when you run GAP... unfortunately this can make it a lot slower. It will be more efficient if you run for one or two target in the Site Map view at a time, as huge projects can have consume a lot of resources. 37 | 38 | If you want to run GAP on one of more specific requests, do not select them from the Site Map tree view. It will be a lot quicker to run it from the Site Map Contents view if possible, or from proxy history. 39 | 40 | It is hard to design GAP to display all controls for all screen resolutions and font sizes. I have tried to deal with the most common setups, but if you find you cannot see all the controls, you can hold down the `Ctrl` button and click the GAP logo header image to remove it to make more space. 41 | 42 | The Words mode uses the `beautifulsoup4` library and this can be quite slow, so be patient! 43 | 44 | ## In Depth Instructions 45 | 46 | Below is an in-depth look at the GAP Burp extension, from installing it successfully, to explaining all of the features. 47 | 48 | **NOTE: This video is from 16th July 2023 and explores v3.X, so any features added after this may not be featured.** 49 | 50 | [![GAP Burp Extension](https://img.youtube.com/vi/Os3bN0zUROA/0.jpg)](https://www.youtube.com/watch?v=Os3bN0zUROA) 51 | 52 | ## TODO 53 | 54 | - Get potential parameters from the Request that Burp doesn't identify itself, e.g. XML, graphql, etc. 55 | - Add an option to not add the `Tentaive` Issues, e.g. Parameters that were found in the Response (but not as query parameters in links found). 56 | - Improve performance of the link finding regular expressions. 57 | - Include the Request/Response markers in the raised Sus parameter Issues if I can find a way to not make performance really bad! 58 | - Deal with other size displays and font sizes better to make sure all controls are viewable. 59 | - If multiple Site Map tree targets are selected, write the files more efficiently. This can take forever in some cases. 60 | - Use an alternative to `beautifulsoup4` that is faster to parse responses for Words. 61 | 62 | Good luck and good hunting! 63 | If you really love the tool (or any others), or they helped you find an awesome bounty, consider [BUYING ME A COFFEE!](https://ko-fi.com/xnlh4ck3r) ☕ (I could use the caffeine!) 64 | 65 | 🤘 /XNL-h4ck3r 66 | 67 | Buy Me a Coffee at ko-fi.com 68 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## Changelog 2 | 3 | - v4.7 4 | 5 | - Changed 6 | 7 | - When more that one target is selected and the `Auto save` option is selected, GAP attempts to get the Burp project name from the root window to write the accumulated files. If it failed to get the project name, it raised an error and failed to create the files. This bug has been fixed. If GAP is unable to get the project name, it will just write the accumulated file names with `UnknownProject_`. 8 | 9 | - v4.6 10 | 11 | - New 12 | 13 | - Added `video/x-ms-wmv,image/x-png,video/quicktime,image/x-ms-bmp,font/opentype,application/x-font-opentype,application/x-woff,audio/aiff` to the list of MIME types to ignore. 14 | - If a parameter value has a backslash, forward slash, `quot;`,`apos;` or `amp;` in it, they will be removed. 15 | 16 | - Changed 17 | 18 | - After the new footer has been added in the recent version of Burp, some of the GAP controls are covered on a standard display. I have moved things around a bit to ensure they are all visible. 19 | - The functionality to remove the logo header with Ctrl-Click has been removed as is no longer relevant. 20 | 21 | - v4.5 22 | 23 | - New 24 | 25 | - Added `application/x-msdownload` and `application/x-ms-application` to the list of MIME types to ignore. 26 | 27 | - v4.4 28 | 29 | - Changed 30 | 31 | - Added `application/font-otf` to the list of MIME types to ignore. 32 | 33 | - v4.3 34 | 35 | - New 36 | 37 | - Add new Sus parameter group for Mass Assignment as requested in https://twitter.com/nullenc0de/status/1700496197570453700?s=20 38 | 39 | - v4.2 40 | 41 | - Changed 42 | 43 | - Change the test displayed in the Words mode text box if the `beautifulsoup4` module could not be loaded. This will include the installation instructions. 44 | 45 | - v4.1 46 | 47 | - New 48 | 49 | - Add `application/x-font-truetype`, `font/opentype`, `application/x-troff-man` and `image/pjpeg` to `CONTENTTYPE_EXCLUSIONS`. 50 | - Add file extensions `.jfi`,`.jfif`,`.jfif-tbnl`,`.jif`,`.jpe` and `.pjpg` to `DEFAULT_EXCLUSIONS` and `FILEEXT_EXCLUSIONS`. These relate to `image/pjpeg`. 51 | - If debug view is shown then also output the content types that are being processed. This is helpful for myself to add new content-types that should be excluded. 52 | - Only get words from a response if it is a content-type/file that we want to process. This check is done for links and parameters bit wasn't being checked for words. 53 | 54 | - Changed 55 | 56 | - When calling the Burp API callbacks `isInScope` method, don't call if the host without scheme isn't valid, e.g. doesn't match regex `^([A-Za-z0-9_-]+\.)+[A-Za-z0-9_-]{2,}$`. This prevents errors that an occur in the Burp API that crashes GAP. 57 | - The `FILEEXT_EXCLUSIONS` list is only checked if the Content-Type of a response isn't found. But there are sometimes cases where the Content-Type of a response is incorrect. Both will be checked to determine whether to get links from a response. 58 | - Change the call `soup.findAll(text=lambda` to `soup.find_all(string=lambda` because `find_all` should be used instead of `findAll` and `text` has now been deprecated and raises a warning. 59 | - When checking tag properties for values, the default was set to Null if it can't get the value, so may cause an error. The default changed to an empty string. 60 | - If a link is found and the last character is `=` or `:`, then remove it. 61 | 62 | - v4.0 63 | 64 | - New 65 | 66 | - Added `Report "Sus" parameters?` option for Parameters mode. 67 | - Added `Show "sus"` option for Parameters mode. 68 | - Raise a Burp custom Issue (not available in Community Edition) if a "Sus" parameter is identified. 69 | - For Community Edition, write details of "Sus" parameters found to the extension output. 70 | - Added `Create lowercase words?` Word option to determine whether to add a lowercase version of a word if it contains any uppercase letters. In previous versions this was done by default. 71 | - Added context help in the form of tool tips on most features and controls of GAP. 72 | - Added `Show context help` option to turn off tool tips the next time GAP is loaded. 73 | - Added `Include relative links?` Parameter option to determine whether to include links in the results if they start with `/./` or `/../` 74 | - Added functionality to get Parameters from the Request that Burp doesn't successfully detect. Initially this will just get parameters within JSON strings. 75 | - Do not get words from a `*.js.map` file. Sometimes these are JSON rather than javascript and end up adding a lot of pointless words like mapping names. 76 | - Ignore certain words if found in `robots.txt` 77 | - Do not include words that are in paths. A lot of these were previously being included even if the `Include URL path words?` option wasn't selected because of the regex to get words was not good enough. 78 | - If you hold down the Ctrl key when clicking the GAP logo header image, it will be removed. This can be used in cases where some controls are not visible on the screen. 79 | - Added the regex part `(\"|\')([A-Za-z0-9_-]+\/)+[A-Za-z0-9_-]+(\.[A-Za-z0-9]{2,}|\/?(\?|\#)[A-Za-z0-9_\-&=\[\]]*)(\"|\')` to the main Link finder regex to get more potential links. Also, ignore any links that then start with `application/`, `image/`, `model/`, `video/`, `audio/` or `text/` because these are content-types that can be confused with links. 80 | - Add `wasnt` to Stop Words list. 81 | - Add `.pdf` to `FILEEXT_EXCLUSIONS` constant. 82 | - Ignore links if they start with `/=` (some false positives). 83 | - When running GAP from the Site Map tree context, the progress bar will say `Getting reqs...` when it is getting the number of requests for the current target. 84 | - When encoding links to display, set `:` and `/` as `safe`. Also replace the value `%C3%83%C2%82%C3%82%C2%A0` which can sometimes occur when the character `Â` occurs instead of ` `. 85 | 86 | - Changed 87 | 88 | - Rewrote the `doeverything` function to deal with the Site Map tree context differently to the other contexts, to improve performance. 89 | - If you start GAP from the Site Map tree, only in scope requests will be checked. 90 | - Removed the `Include common parameters?` check box. This functionality has been removed, partially because of it's limited use, and also to allow for space to add sus parameter options. 91 | - Remove the trailing `&` off the end of the parameter query string. 92 | - If the `Include site map endpoints?` option is selected, then also include URLs of requests in the site map that haven't been requested yet (i.e. found by Burp in crawling), if they are in scope. 93 | - Fix a bug that was including a potential link that had no scheme (e.g. a file name) with AND without a prefixed `/` 94 | - Suppress errors in `addLink` when doing `urlparse`. If an error occurs then the URL will be ignored. 95 | - Only display parameters that contain at least one letter, number or \_ 96 | - Improve regex to get more parameters from the response that could be parameters in encoded links 97 | - Display the progress bar as soon as GAP is started so it is clearer it is running if it takes time to get all roots and messages 98 | - Improve the regex for finding links in the responses 99 | - Don't display potential links if they contain any unprintable ASCII characters (0-31) 100 | - Remove the check for `X-SourceMap` because it is already covered by the existing regex 101 | - Improve performance initially when getting the number of messages selected to display in the progress bar 102 | - Improve `sanitizeWord` function to use regex and also remove spaces and %20. Also correct error not replacing %29 103 | - If the Parameter or Word mode `Include URL path words?` option is selected, only get if there is a response. This is because Burp will put links in the sitemap that haven't been requested, but can incorrectly get links with wrong paths that then end up with words that make no sense. 104 | - Get potential words from more `meta` tags, and also get from some relevant `link`-`rel` tags. 105 | - Remove the `Name attribute of meta tags` Parameter option because this has little to no value at all. 106 | - Show relative links without being prefixed with `/` 107 | - Pull request from [bebiksior](https://github.com/bebiksior) to improve word list by splitting words with dash, and also by comma. 108 | - Replace regex `findall`and `search` with pre-compiled statements for better performance. 109 | - Fix logic in `includeContentType` where unnecessary calls were being made. Also just call `includeContentType` once at the start and use the result later instead of calling 3 times. 110 | - Remove `robots.txt` in `DEFAULT_EXCLUSIONS` (not sure why I put it in there in the first place!) 111 | - Change `polyfill.io` to `polyfill` in `DEFAULT_EXCLUSIONS` 112 | - Resolve an issue that can cause CPU to max out if the `Prefix with selected Target(s)` option is selected, and there are a lot of targets selected with many links. 113 | - Remove the test `(?<=\=)\s*\/[0-9a-zA-Z]+[^>\n]*` from the response link Regex because it gives too many false positives and can also end up selected a huge part of JS files and cause performance issues. 114 | - Make a change to the Link regex to make sure that potential links that start with `//` are not followed by any spaces. 115 | 116 | - v3.5 117 | 118 | - Changed 119 | 120 | - Fix a bug that fails to process a root in the site map if it contains a port number. 121 | 122 | - v3.4 123 | 124 | - Changed 125 | 126 | - Fix a bug that was causing the `Show params as query string` option to not display anything if the `Include common parameters` option is not ticked. 127 | - Ensure there is a newline character at the end of the final line on output files. 128 | 129 | - v3.3 130 | 131 | - New 132 | 133 | - Allow GAP to be called from any context, not just the site map. 134 | - Add a `Link exclusion` check box. If this is unselected then ALL links wil be returned without checking the exclusion list. 135 | 136 | - Changed 137 | 138 | - Fix a bug where links that are out of scope are still shown when the `In scope only` option is selected. 139 | - Fix a bug where unicode characters weren't always being converted correctly so some links may not have been successfully extracted. 140 | - Fix a bug where if a link of `*.example.com` was found then it would be reported as `http://.example.com` 141 | - Fix a bug where links with something between parenthesis or curly brackets in part of the subdomain stops the link being identified as being in or out of scope. 142 | - FIx a bug where if a field isn't in the saved config, and exception occurs that prevents the remaining fields being set. Now if an error occurs getting any field from the saved config, it will set a default and continue. 143 | 144 | - v3.2 145 | 146 | - Changed 147 | 148 | - Amend the main link finding regex string to avoid catastrophic backtracking errors that freeze the search and break GAP. 149 | - Fix a bug where the links `Show origin endpoint` and `In scope only` options aren't enabled in some circumstances. 150 | - Ensure output files are closed properly after writing. 151 | - Fix a bug where the `Show origin` of the wrong type was checked when writing output files. 152 | 153 | - v3.1 154 | 155 | - Changed 156 | 157 | - A small fix to ensure that if the `Prefix with selected Target(s)` option is checked that output links do not have `//` after the host 158 | 159 | - v3.0 160 | 161 | - New 162 | 163 | - Add `Show origin endpoint` filter to Parameters and save as part of config when the **Save options** button is pressed. 164 | - If the `Auto save output to directory` option is checked, then files are written as follows: 165 | - Create a sub folder for each root in the target site that was selected in Site Map 166 | - Create a file in the main folder with the name of the Burp project and timestamp, e.g. if the project is called `target`, the files might be `target_20230416_133700_links.txt`, `target_20230416_133700_parans.txt` and `target_20230416_133700_words.txt` where `20230416` is the current date in `YYYYMMDD` format and `133700` is the current time in `HHMMSS` format. These files will contain what was found for ALL roots selected. 167 | - Within each sub folder, the files will only contain findings for that particular root. If there are no findings for a mode, then a file will not be created for that mode. 168 | - If the `Include common parameters` option is checked and the Parameter `Show origin endpoint` is checked, the common parameters are displayed and written to file with `[GAP]` instead of a Link where the parameter was found. 169 | 170 | - Changed 171 | - You can now select sub folders, or specific requests, from the Site Map to process with GAP. 172 | - The `Show origin endpoint` option for Parameters and Links, and the `In scope only` option are applied to what is displayed AND what is written to file. 173 | - If a link is found that has a different scheme than http or https, the `URL(link).getHost()` method returns blank. This previously resulted in the link not being checked if it was in scope and incorrectly included. This has been fixed. 174 | - Make changes to the functions that display links, parameters and words to improve speed and use less memory. 175 | - Parameters and words from path words were not correctly checked whether they are in scope or not. This has been fixed. 176 | - If a link has `\s` or `\S` in it, don't include as it's most likely a regex string, not a link. 177 | - If one mode finishes before others are, allow any filters to be used on the finished panels, even if the others aren't complete. 178 | - If Origin is written to the Links or Params file, only separate the URL and \[ORIGIN\] with one space. Two spaces are used in the UI to make it easier to view. 179 | - Suppress warnings from the beautifulsoup4 library. 180 | 181 | - v2.9 182 | 183 | - New 184 | 185 | - Add new checkbox "Prefix with selected Target(s)". If selected, any links found that don't have a domain will be prefixed with each target root that was selected in the Site Map when running GAP. 186 | - Added some tool tips 187 | 188 | - Changed 189 | 190 | - The "Prefix with links(s)" (was previously called "Link Prefix") can now have multiple links separated by a semicolon. If a schema is left off a link then it will be added on. If the field has invalid values, the text will be displayed in red, indicating it needs to be fixed. Links will be output with each prefix 191 | 192 | - v2.8 193 | 194 | - New 195 | 196 | - When GAP is searching, the tab caption will say **GAP\*** instead of **GAP**. Also, when complete, and the user is not on the GAP tab, the title will show **GAP** in Burp Orange. The text is reset to default colour when another target is searched of if any options are changed. 197 | 198 | - v2.7 199 | 200 | - New 201 | 202 | - Sanitize words before adding them to the list, e.g. remove `"`,`%22`, `<`, `%3c`, etc. 203 | - If a potential parameter has a `?` in it, then just get the value after the `?` as the parameter 204 | 205 | - Changed 206 | 207 | - Add more parameter names to the `COMMON_PARAMS` constant. 208 | 209 | - v2.6 210 | 211 | - Changed 212 | 213 | - For Parameters, Links and Words, check if the string being added contains any unicode characters. If it does, then URL encode the characters before adding them to the lists to display and output. This change prevents a number of errors output and also prevents Burp from freezing with certain conditions. 214 | 215 | - v2.5 216 | 217 | - New 218 | 219 | - Get more potential parameters from responses based on patterns like `?param=` and `¶m=` 220 | 221 | - Changed 222 | 223 | - Only get parameters from responses that don't have content types of file types in the given exclusions. 224 | 225 | - v2.4 226 | 227 | - New 228 | 229 | - Add `FILEEXT_EXCLUSIONS` constant that are file extensions we do not want to check for links. If a content type cannot be found then the extension in a URL (if there is one) will be used to check against this list and exluded if necessary. 230 | 231 | - Changed 232 | - Add these content types to the `DEFAULT_CONTENTTYPE_EXCLUSIONS` constant, and the `contentExclude` section of `config.yml`: `application/zip,application/x-zip-compressed,application/x-msdownload,application/x-apple-diskimage,application/x-rpm,application/vnd.debian.binary-package` 233 | 234 | - v2.3 235 | 236 | - New 237 | - Re-introduce the option of viewing parameters in a concatenated query string. There is now a check box below the parameter list that can be used to switch views. 238 | 239 | - v2.2 240 | 241 | - Changed 242 | - Encode parameters, links and words to ASCII before adding them to lists so that no unicode errors occur when displaying them. 243 | - Change error message for bs4 not installed to include a link to the installation instructions on github. 244 | 245 | - v2.1 246 | 247 | - Changed 248 | - Minor bug fix and improvement 249 | 250 | - v2.0 251 | 252 | - New 253 | 254 | - Add **Words** mode that will produce a target specific wordlist. 255 | - Add options for **Words** mode. 256 | - Add an option to provide a prefix for links that are found that don't have a domain. 257 | - Add `requirements.txt` file for external modules that are needed for GAP. 258 | - Add a progress bar to show how many requests per root are being processed. 259 | - Add a **Buy Me a Coffee** button. 260 | - Add `banner.png` to use on extension tab. 261 | 262 | - Changed 263 | - Sooooo many minor bug fixes to mention :) 264 | - Allow user to select a sub folder of a site mop root, or even just one endpoint to process. 265 | - Get links from the response headers too. It should have been doing this already, but wasn't. 266 | - When **Include site map endpoints in link list** option is selected, return the full URL, not just the path. 267 | - Fixed bug when saving files on Linux. 268 | -------------------------------------------------------------------------------- /GAP Help.md: -------------------------------------------------------------------------------- 1 |

GAP by @xnl_h4ck3r

2 |

3 | This is an evolution of the original getAllParams extension for Burp. Not only does it find more potential parameters for you to investigate, but it also finds potential links to try these parameters on, and produces a target specific wordlist to use for fuzzing. 4 | This code is far from perfect, but any constructive criticism is very much welcome! I hope this tool helps you. 5 | 6 |
7 |

Acknowledgments:

8 | Respect and thanks go to @HolyBugx for help with ideas, testing and patience!
9 | A shout out to Gerben Javado and his amazing tool Link Finder who's regular expression (regex) provided the starting point for the Link mode in GAP. 10 | 11 |

How to Install

12 |
    13 |
  1. Visit Jython Offical Site, and download the latest stand alone JAR file, e.g. jython-standalone-2.7.3.jar.
  2. 14 |
  3. Open Burp, go to Extensions -> Extension Settings -> Python Environment, set the Location of Jython standalone JAR file and Folder for loading modules to the directory where the Jython JAR file was saved.
  4. 15 |
  5. On a command line, go to the directory where the jar file is and run java -jar jython-standalone-2.7.3.jar -m ensurepip.
  6. 16 |
  7. Download the GAP.py and requirements.txt from this project and place in the same directory.
  8. 17 |
  9. Install Jython modules by running java -jar jython-standalone-2.7.3.jar -m pip install -r requirements.txt.
  10. 18 |
  11. Go to the Extensions -> Installed and click Add under Burp Extensions. 19 |
  12. Set Extension type to Python and select the GAP.py file
  13. 20 |
  14. Click Next and you're good to go 🤘 21 |
22 |

How to Run

23 | You can run GAP from a single request/response, or multiple, from any context in Burp. For example, you can run for a single request in Repeater, a group of requests in Proxy History, request in the Site Map contents, etc. However, the most common option will probably be from the Site Map tree view. IMPORTANT: Make sure you have scope set before running from this context.

24 | On the Target -> Site map tab of Burp you can select a specific host, a selection of hosts (holding down Ctrl or Shift), or all hosts (using Ctrl-A), or even select a specific sub folder or specific endpoints. 25 | Once the required endpoints are selected, right click and select Extensions -> GAP to run the tool. 26 | Go to the GAP tab and see the results. What gets returned will depend on the options selected, and these will all be described below. 27 | For very large projects (and depending on what options were selected), it can sometimes take GAP a little while to run. If for some reason it hasn't completed and you want to cancel the current run to change options for example, you can do this by pressing the CANCEL GAP button. 28 | If you try running GAP again while it is still running, it will CANCEL the current run before starting the new one. 29 |

30 |

GAP Mode

31 | There are 3 different modes for GAP, Parameters,Links and Words. They can either be run separately, or together, depending on what you select. 32 | What each mode does will be explained below, but if you don't need all enabled then unselecting them can use less memory and get results back quicker. 33 | 34 |

Parameters Mode

35 | 36 | When the GAP Mode of Parameters is selected then GAP will try to find as many potential parameters based the following options: 37 | 38 | 42 | 43 |

Request Parameters

44 | These are mainly parameters that Burp itself identifies from HTTP requests and are part of the Burp Extender API IParameter interface 45 | 54 | Additionally, GAP will also report any parameters in the Request where the Burp API doesn't always successfully detect them: 55 | 60 | 61 |

Response Parameters

62 | 63 | These are potential parameters that can be found in the HTTP responses. These are identified by GAP itself rather than through the Burp Extender API. 64 | 65 | 72 | 73 |

Links Mode

74 | 75 | When the GAP Mode of Links is selected then GAP will try to find possible links based on the following. Also, only requests of a certain Content-Type are checked for potential links. This is determined by the constant CONTENTTYPE_EXCLUSIONS in the code (these are types such as images, video, audio, fonts, etc.) 76 | 77 | 85 | 86 |

Words Mode

87 | 88 | When the GAP Mode of Words is selected then GAP will produce a target specific wordlist from the responses searched. 89 | 90 | 101 | 102 | In addition to the options above, words will be taken from all responses with certain conditions: 103 | 104 | 117 | 118 |

GAP Output

119 | Below is an explanation of the output given when GAP has completed running. 120 | 121 |

Potential Parameters

122 | 129 |

Potential Links

130 | 138 | The filter is something that is applied after GAP has run. It allows you to look for specific things when there are many results. For example, enter .js to only show the links to javascript files. As soon as you clear the filter, the original results are redisplayed.
139 |
140 | An additional feature of GAP is to automatically include links of valid .js.map (javascript source map) files. These are identified by responses that contain the //# sourceMappingURL line, or have a HTTP header of SourceMap or X-SourceMap.
141 |
142 | To find links, a complex regex is used to look for different formats and contexts for potential links and files. This regex was initially based on the one used in Link Finder by Gerben Javado, but has been evolved to try and identify more with minimal false positives.
143 |

Words

144 | 148 | 149 |

Other options

150 | 155 | If the Auto save output to directory option is checked, then files are written as follows:

156 |

161 | NOTE: The project name is taken from the Burp title. If you use the Sharpener Burp Extension then changing the Title will affect the naming of the files. 162 |

163 | 164 |

GAP Settings

165 | When GAP is first started, it will start with default settings. 166 | Any changes made to the configuration settings of GAP can be saved for future use by clicking the Save options button. 167 | If for any reason you want to revert to the default configuration options, you can click the Restore defaults button. 168 |

169 |

Troubleshooting and Feedback

170 |

It is hard to design GAP to display all controls for all screen resolutions and font sizes. I have tried to deal with the most common setups, but if you find you cannot see all the controls, you can hold down the Ctrl button and click the GAP logo header image to remove it to make more space.

171 | If you have any problems with GAP, you can report an issue on Github. Before you report an issue, please look at the Extender -> Extensions tab in Burp, click on the GAP extension in the list and include details of any output displayed on the Errors tab with your issue. If you know of a parameter or link that you believe GAP should/shouldn't have identified then please provide as much info as possible, e.g. the options you had selected, the relevant endpoint, etc.
172 | 173 |

174 |

Important Notes

175 | If you don't need one of the modes, then un-check it as results will be quicker. 176 | 177 | If you run GAP for one or more targets from the Site Map view, don't have them expanded when you run GAP... unfortunately this can make it a lot slower. It will be more efficient if you run for one or two target in the Site Map view at a time, as huge projects can have consume a lot of resources. 178 | 179 | If you want to run GAP on one of more specific requests, do not select them from the Site Map tree view. It will be a lot quicker to run it from the Site Map Contents view if possible, or from proxy history. 180 | 181 | It is hard to design GAP to display all controls for all screen resolutions and font sizes. I have tried to deal with the most common setups, but if you find you cannot see all the controls, you can hold down the `Ctrl` button and click the GAP logo header image to remove it to make more space.

182 | 183 |

184 |

185 | Thank you for trying out GAP!
186 | Good luck and good hunting! 187 | If you really love the tool (or any others), or they helped you find an awesome bounty, consider BUYING ME A COFFEE! ☕ (I could use the caffeine!)

188 | @xnl-h4ck3r 189 | 🤘 190 | 191 | --------------------------------------------------------------------------------