Quality of life patch/update in the context of videogames is a patch that focuses on fixing bugs instead of introducing new content. New features in these patches are not ground-breaking but rather making the game easier to play1.
I have been using these things to make my life easier. I am publishing them gradually and will refine them into one final page similar to the cheatsheet. This page also pairs really well with automation.
Each section starts with step by step instructions. Some items have extra notes
and finally the Why?
section has the justification/usecase.
Table of Contents:
- Match and Replace for Test Username/Passwords
- Disable Cached Responses
- Filter OPTIONS
- Burp Should Not Capture Corporate Credentials
- Use Firefox For Testing
- Less Noise from Firefox in Burp
- If You have to Use Chromium Browsers Pass the Proxy to the Command Line
- Reduce the Size of Burp Projects for Long Term Storage
- Rearrange Burp Repeater Request and Response Tabs for
- Use a Default Burp Config
Match and Replace for Test Username/Passwords
- Capture the login request and identify the parameters.
- For example, a POST request with
user=hackerman&password=hunter2
.
- For example, a POST request with
- Create a rule in
Proxy > Options > Match and Replace
.- Type: Request header
- Match:
user=zzz0
- Replace:
user=hackerman
- Comment (optional):
admin account
- Create a second rule
- Type: Request header
- Match:
password=xxx0
- Replace:
password=hunter2
- Comment (optional):
password for admin
- On the mobile device or in the web browser, type
zzz0
andxxx0
instead of username and password to login.
Notes:
- If the user or pass include
%
, URL-encode it in the replace section to%25
. E.g.,password=hunter2%
should bepassword=hunter2%25
. - I use
zzz
andxxx
because they are easy to type on mobile devices.- For webapps use meaningful names like
admin1
andadmin1pw
.
- For webapps use meaningful names like
- Keep the numbers for
zzz
andxxx
relative. E.g., the password for userzzz0
should bexxx0
. - This can be used for other long/complex inputs (e.g., certain payloads?). But the biggest time-saver for me is entering credentials.
Why?
When testing a mobile application, I do not want to type complex passwords into
a mobile device over and over again. This way I can just enter zzz0
and xxx0
to login.
The same trick works for webapps when I have multiple sets of credentials with
different roles. Instead of copy/pasting from a credential document, I can just
enter admin1
and admin1pw
to login as admin or user1
:user1pw
for user1.
Disable Cached Responses
- Enable the following built-in rules in
Proxy > Options > Match and Replace
.If-Modified-Since
If-None-Match
Why?
Sometimes I need to analyze a response but I see a 304 in Burp's history. Then I have to use the search feature in Burp to find the first instance of the request and see the content. With those headers removed, there are hopefully no more 304s.
Filter OPTIONS
- Add the following extension to Burp.
- In
Proxy > HTTP History
click on filter. - Remove the check beside
CSS
underFilter by MIME Type
. - Every new OPTIONS request is now hidden.
Why?
Preflight requests add a lot of noise to Burp's HTTP history. Currently, Burp
does not have a specific filter for them. This extension replaces the responses
to OPTIONS requests with text/css
. Then I can filter them all by removing
CSS
from Burp's history.
The extension's technical details:
The above extension might not work. See the Filter Options Method extension by Capt. Meelo on the Burp App Store which fixes some issues in my blog post.
Burp Should Not Capture Corporate Credentials
- Use a temporary Burp project/session.
- Login to the application, enter the domain or corporate credentials like a normal login.
- Identify which requests to which domains contain them.
- Start the main project in Burp.
- Add those domains to Burp's
SSLTLS pass through atProxy > Options > TLS Pass Through
. - Do the same for every request that is not related to the test but contains sensitive info (e.g., Okta).
Why?
If I am testing an application that uses SSO, I have to enter corporate credentials to login. Usually I am not testing the login portal but the app behind it. Burp will store these credentials which not something I like. I keep Burp projects forever (see Reduce the Size of Burp Projects for Long Term Storage), I do not want my corporate credentials stored in Burp. By adding these domains to SSL pass through, Burp does not capture them.
Use Firefox For Testing
Use Firefox (or a clone like Pale Moon) with for testing with Burp. Optionally, use Firefox Developer Edition which has extra dev tools and can co-exist with normal Firefox.
If installing Firefox dev edition:
- Open Firefox dev edition.
about:preferences
.- Check the box
Allow Firefox Developer Edition and Firefox to run at the same time
.
Why?
- Firefox has its own certificate store.
- Avoid installing Burp's CA in the operating system's certificate store.
- Firefox has its own proxy settings.
- Do not have to redirect all other applications to Burp (e.g., Outlook, Chrome).
- This also reduces noise.
Less Noise from Firefox in Burp
- Do not install any addons in the testing browser.
- I am not using this browser for normal browsing.
- I do not want anything to be blocked by addons like adblockers.
- Reduces the noise in Burp.
- Create a new Firefox profile and use
user.js
from the link below: - Use these FoxyProxy rules to prevent random requests from reaching Burp, by Liamosaur:
- https://gist.github.com/liamosaur/a527d285b5394180c4bf3197dc7d8035
- Alternatively, add these to SSL pass through in Burp Should Not Capture Corporate Credentials.
Why?
Fewer requests in Burp's HTTP history == good.
If You have to Use Chromium Browsers Pass the Proxy to the Command Line
If you cannot use Firefox and have to use a Chromium based browser (e.g., Edge, Chrome), you can pass the proxy listener to the browser using a command line switch instead of using the OS proxy settings.
E.g., for Edge:
"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" --proxy-server="http://localhost:8080"
Create a shortcut with the desired switch and use it.
Why?
Instead of changing the OS proxy settings, we are just proxying the browser. This reduces the noise in Burp.
Reduce the Size of Burp Projects for Long Term Storage
- I Keep my Burp projects along with my notes.
- Compress Burp projects (zip, 7z, etc.) (best bang for time):
- Old Burp save states were compressed, projects are not.
- Remove out-of-scope from Burp project (risky because data is removed):
- Add all in-scope domains to Burp (most likely already done during the test).
Project > Save Copy
and checkSave in-scope items only
.- This will remove all out-of-scope items from the new copy.
Why?
Keeping Burp projects have saved my hide more than I can count. Before storing Burp projects for long-term, I want to reduce their size. At a minimum, just zip them.
Rearrange Burp Repeater Request and Response Tabs for
As of Burp 2020.12
(possibly sooner) the following option has been removed.
Each Repeater tab has three layout button on top-right just under the target
address. Choose Vertical Layout
to get the top/bottom split.
For older versions of Burp:
Repeater (menu, not the tab) > View
.- Choose Top/bottom or left/right split.
Why?
When creating screenshots for reports, it's better to have the tabs on top of each other. Reports are usually in portrait mode. With the top/bottom split, we can show both tabs and get a nicer image.
Make sure to move the border between the tabs and scroll the data in each to show only relevant data. E.g., if you have a lot of text in response that is not needed, only take a screenshot of the part that is important for the issue you are presenting.
Use a Default Burp Config
Update 2021-09-21: The old config structure does not work anymore. User options must be loaded separately and are saved per machine.
- Open Burp, make any changes and set settings.
- The changes depend on your preferences.
- Save the project config and the user config separately. They are JSON files.
- When starting a new project, use the project config.
- Update this config regularly and store it somewhere (e.g, git repo).
The final config file will look like this:
{
"project_options":{
// removed
},
"proxy": {
// removed
},
// removed
}
User Options
These are saved on your machine and persist between projects. Still, having a user options file is useful when you migrate to new virtual machines like I do.
- Start a new Burp instance and create a temporary project.
Burp (menu) > User options > Load user options
and load yours.
The most important part of user options is disabling interception at startup.
Set enable_proxy_interception_at_startup
to never
.
{
"user_options":{
"misc":{
"enable_proxy_interception_at_startup":"never"
}
},
}
Why?
It saves time and I do not have to make the same changes for every project. Some options will step be project-specific but most are not.
Also see Towards a Quieter Burp History if you use Burp to proxy thickclients on Windows.
Some suggestions:
- Disable interception at startup (biggest timesaver for me).
- Add SSO domains (see Burp Should Not Capture Corporate Credentials) to SSL pass through.
- Enable match and replace rules for the Disable Cached Responses section.
- Add placeholders for match/replace rules (see Match and Replace for Test Username/Passwords).
- Fonts, sizes and themes.
You can see my default Burp project config at https://github.com/parsiya/Parsia-Clone/blob/master/configs/burp-default-config.json.
For an example, see Apex Legends Update 1.1.3. ↩︎