Code Monkey home page Code Monkey logo

pwnfox's Introduction

PwnFox

PwnFox is a Firefox/Burp extension that provide usefull tools for your security audit.

If you are a chrome user you can check https://github.com/nccgroup/autochrome.

Features

popup

Single click BurpProxy

Connect to Burp with a simple click, this will probably remove the need for other addons like foxyProxy. However if you need the extra features provided by foxyProxy you can leave this unchecked.

Containers Profiles

PwnFox give you fast access to the Firefox containers. This allow you to have multiple identities in the same browser. When PwnFox and the Add container header option are enabled, PwnFox will automatically add a X-PwnFox-Color header to hightlight the query in Burp.

PwnFoxBurp will automatically highlight and strip the header, but you can also specify your own behavior with addons like logger++.

tabs burp

PostMessage Logger

PwnFox add a new message tab in you devtool. This allow you to quickly visualize all postMessage between frames.

You can also provide your own function to parse/filter the messages. You get access to 3 arguments:

  • data -> the message data
  • origin -> the window object representing the origin
  • destion -> the window object representing the destination

You can return a string or a JSON serializable object.

Toolbox

Inject you own javascript code on page load. The code will be loaded as soon as possible. This can used to add dangerous behavior detection, or just to add extra function to your js console.

Be carefull, the injected toolbox will run in the window context. Do not inject secret in untrusted domain.

settings

I will publish some of my toolbox soon (ENOTIME)

Security header remover

Sometime it's easier to work with security header disabled. You can now do it with a single button press. Don't forget to reenable them before testing your final payload.

Headers stripped:

  • Content-Security-Policy
  • X-XSS-Protection
  • X-Frame-Options
  • X-Content-Type-Options

Installation

You can find the latest build here:

Firefox

Burp

  • Go to extender and add PwnFox-Burp.jar as a java extension.

Build

Firefox

cd firefox
web-ext build
# the zip file is available in /firefox/web-ext-artifacts/pwnfox-${version}.zip
# Optional. If you want to sign you own build
web-ext sign --api-key="$KEY" --api-secret="$SECRET"
# the xpi file is available in /firefox/web-ext-artifacts/pwnfox-${version}.xpi

Burp

Open and compile with Intellij IDEA

Changelog

  • v1.0.3
    • Fix missing highlight with burp v2021.4.2
  • v1.0.2
    • First public release

pwnfox's People

Contributors

b-i-t-k avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pwnfox's Issues

Toolbox race condition and potential fix

Toolbox is injected just a bit late. This means inline code in the website will execute before the toolbox has a chance to hook sinks. Inline code is common among ad networks, where difficult to find XSS is also common.

You can fix this if you move this feature to the background script and use browser.contentScripts.register.

example problem

I loaded the a page with the following content:

<!DOCTYPE html>
<script>
alert("Page alerts");
</script>

I then used a toolbox to switch alert for prompt

alert=prompt;alert("thisIsPrompt");

Visiting the page caused an alert because the inline script finished executing before the toolbox was loaded. You can see the prompt that is fired by the toolbox is under the alert box.

ss1

So if you were attempting to proxy/reflect or hook alert as an interesting sink, you would of missed at least one execution.

Why

I did not look to hard at your code, but surely your toolbox scripts are stored in some browser API storage system. All calls to that system are async. Additionally, content scripts don't have access to those API's so you query them through the background script with another async message. While those asyncs are waiting, the loaded page is executing code.

FIX

browser.contentScripts.register lets you register a new content script from the background script. This can be done with a string or file. Using both you can easily inject the toolbox into the page before the page can execute any code. There is still an async storage lookup, but it happens only once in the background script, then the content script gets registered like a static file. No ansycs happen during page load and the toolbox gets to execute before inline scripts.

Be aware, this API is Firefox only. So it can't be ported to Chrome if you chose to do that in the future.

Also of note, there is a matches parameter that the API selects so you can easily isolate what websites you want to send the toolbox to.

Example

I know the fix works because I use it in my own web extension. You can see the relevant code here:
https://github.com/swoops/eval_villain/blob/master/src/js/background.js#L331. The code is a user config that is pulled from storage and the file shoves it into the page.

Using the same code from the "example problem" above, Eval Villain pulls the user config from storage that says to hook alert, registers the content script, then when the page loads Eval Villain hooks alert before the page executes any inline scripts:

ss2

Size of code does not matter, JS is single threaded. So as long as there is no async, the page never gets a chance to steal the thread and do something.

You are welcome to use any of my code. I would of even sent you a pull but I think your code is to pretty to corrupt with my terrible JS.

Great tool, I look forward to using it.

Toolbox does not work in new Firefox installations

Hi. The Pwnfox's Toolbox (tried 1.0.4 and 1.0.3 versions) does not work on new installations of Firefox (Using Firefox 107.0 (64-bit) on Ubuntu).
It still works on my other profile (same installation), but does not on new installations or profiles. I am attaching an error from browser's console (not from F12, but from CTRL+SHIFT+J).
Screenshot from 2022-11-20 13-21-43
Steps to reproduce:

  1. Install new firefox (or create a new profile via about:profiles);
  2. Install PwnFox addon;
  3. Create a toolbox script (set in something like console.log('asd'));
  4. Enable toolbox and PwnFox;
  5. Navigate to any website;
  6. Inspect Console from dev tools (F12 > console tab) - there are no logged entries.

Bug(Maybe??)

Great tool,

In Burp Suite 2021.4, the proxy history is no longer being colorized.
Could it be the Burp Suite version??

pwnfox

Proxy settings for PwnFox containers only

Would it be possible to turn off proxy settings for containers that are not created by PwnFox ?
I use containers for other purposes (with Multi-Account Container) and would like to bypass proxy settings applied by PwnFox

No Icon shown in toolbar

I am having a problem with newer versions of firefox. While the add-on is properly installed and visible on the Add-ons and themes page, no status icon is displayed in the toolbar. In consequence, I cannot activate it or open a new container.

I have observed this behaviour on Firefox 115(ESR) on Kali Linux and Firefox 117 on Windows 10.

No error messages are printed in the console, not even when inspecting the add-on vie about:debugging.

Caido Support

We added support for PwnFox in Caido, see the passive workflows of EvenBetter.

Otherwise copy the workflow:

Workflow
{
	"description": ":D ",
	"edition": 2,
	"graph": {
	  "edges": [
		{
		  "source": {
			"exec_alias": "exec",
			"node_id": 0
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 2
		  }
		},
		{
		  "source": {
			"exec_alias": "exec",
			"node_id": 2
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 3
		  }
		},
		{
		  "source": {
			"exec_alias": "exec",
			"node_id": 3
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 4
		  }
		},
		{
		  "source": {
			"exec_alias": "exec",
			"node_id": 4
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 5
		  }
		},
		{
		  "source": {
			"exec_alias": "exec",
			"node_id": 5
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 6
		  }
		},
		{
		  "source": {
			"exec_alias": "exec",
			"node_id": 7
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 8
		  }
		},
		{
		  "source": {
			"exec_alias": "exec",
			"node_id": 8
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 9
		  }
		},
		{
		  "source": {
			"exec_alias": "exec",
			"node_id": 6
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 7
		  }
		},
		{
		  "source": {
			"exec_alias": "exec",
			"node_id": 9
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 10
		  }
		},
		{
		  "source": {
			"exec_alias": "false",
			"node_id": 10
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 11
		  }
		},
		{
		  "source": {
			"exec_alias": "false",
			"node_id": 15
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 13
		  }
		},
		{
		  "source": {
			"exec_alias": "false",
			"node_id": 13
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 14
		  }
		},
		{
		  "source": {
			"exec_alias": "true",
			"node_id": 10
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 18
		  }
		},
		{
		  "source": {
			"exec_alias": "false",
			"node_id": 11
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 15
		  }
		},
		{
		  "source": {
			"exec_alias": "true",
			"node_id": 15
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 20
		  }
		},
		{
		  "source": {
			"exec_alias": "true",
			"node_id": 13
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 21
		  }
		},
		{
		  "source": {
			"exec_alias": "true",
			"node_id": 14
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 22
		  }
		},
		{
		  "source": {
			"exec_alias": "true",
			"node_id": 16
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 23
		  }
		},
		{
		  "source": {
			"exec_alias": "false",
			"node_id": 14
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 16
		  }
		},
		{
		  "source": {
			"exec_alias": "false",
			"node_id": 16
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 17
		  }
		},
		{
		  "source": {
			"exec_alias": "true",
			"node_id": 11
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 19
		  }
		},
		{
		  "source": {
			"exec_alias": "true",
			"node_id": 17
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 24
		  }
		},
		{
		  "source": {
			"exec_alias": "exec",
			"node_id": 18
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 1
		  }
		},
		{
		  "source": {
			"exec_alias": "exec",
			"node_id": 19
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 1
		  }
		},
		{
		  "source": {
			"exec_alias": "exec",
			"node_id": 20
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 1
		  }
		},
		{
		  "source": {
			"exec_alias": "exec",
			"node_id": 21
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 1
		  }
		},
		{
		  "source": {
			"exec_alias": "exec",
			"node_id": 22
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 1
		  }
		},
		{
		  "source": {
			"exec_alias": "exec",
			"node_id": 23
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 1
		  }
		},
		{
		  "source": {
			"exec_alias": "exec",
			"node_id": 24
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 1
		  }
		},
		{
		  "source": {
			"exec_alias": "exec",
			"node_id": 25
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 1
		  }
		},
		{
		  "source": {
			"exec_alias": "false",
			"node_id": 17
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 26
		  }
		},
		{
		  "source": {
			"exec_alias": "false",
			"node_id": 26
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 1
		  }
		},
		{
		  "source": {
			"exec_alias": "true",
			"node_id": 26
		  },
		  "target": {
			"exec_alias": "exec",
			"node_id": 25
		  }
		}
	  ],
	  "nodes": [
		{
		  "alias": "on_intercept_request",
		  "definition_id": "caido/on-intercept-request",
		  "display": {
			"x": -20,
			"y": -100
		  },
		  "id": 0,
		  "inputs": [],
		  "name": "On intercept request",
		  "version": "0.1.0"
		},
		{
		  "alias": "passive_end",
		  "definition_id": "caido/passive-end",
		  "display": {
			"x": -30,
			"y": 1830
		  },
		  "id": 1,
		  "inputs": [],
		  "name": "Passive End",
		  "version": "0.1.0"
		},
		{
		  "alias": "pwnfox_blue",
		  "definition_id": "caido/httpql-matches",
		  "display": {
			"x": -20,
			"y": 20
		  },
		  "id": 2,
		  "inputs": [
			{
			  "alias": "query",
			  "value": {
				"data": "req.raw.cont:\"X-PwnFox-Color: blue\"",
				"kind": "string"
			  }
			},
			{
			  "alias": "request",
			  "value": {
				"data": "$on_intercept_request.request",
				"kind": "ref"
			  }
			}
		  ],
		  "name": "PwnFox: blue",
		  "version": "0.1.0"
		},
		{
		  "alias": "pwnfox_cyan",
		  "definition_id": "caido/httpql-matches",
		  "display": {
			"x": -20,
			"y": 120
		  },
		  "id": 3,
		  "inputs": [
			{
			  "alias": "request",
			  "value": {
				"data": "$on_intercept_request.request",
				"kind": "ref"
			  }
			},
			{
			  "alias": "query",
			  "value": {
				"data": "req.raw.cont:\"X-PwnFox-Color: cyan\"",
				"kind": "string"
			  }
			}
		  ],
		  "name": "PwnFox: cyan",
		  "version": "0.1.0"
		},
		{
		  "alias": "pwnfox_green",
		  "definition_id": "caido/httpql-matches",
		  "display": {
			"x": -20,
			"y": 220
		  },
		  "id": 4,
		  "inputs": [
			{
			  "alias": "query",
			  "value": {
				"data": "req.raw.cont:\"X-PwnFox-Color: green\"",
				"kind": "string"
			  }
			},
			{
			  "alias": "request",
			  "value": {
				"data": "$on_intercept_request.request",
				"kind": "ref"
			  }
			}
		  ],
		  "name": "PwnFox: green",
		  "version": "0.1.0"
		},
		{
		  "alias": "pwnfox_yellow",
		  "definition_id": "caido/httpql-matches",
		  "display": {
			"x": -20,
			"y": 320
		  },
		  "id": 5,
		  "inputs": [
			{
			  "alias": "query",
			  "value": {
				"data": "req.raw.cont:\"X-PwnFox-Color: yellow\"",
				"kind": "string"
			  }
			},
			{
			  "alias": "request",
			  "value": {
				"data": "$on_intercept_request.request",
				"kind": "ref"
			  }
			}
		  ],
		  "name": "PwnFox: yellow",
		  "version": "0.1.0"
		},
		{
		  "alias": "pwnfox_orange",
		  "definition_id": "caido/httpql-matches",
		  "display": {
			"x": -20,
			"y": 420
		  },
		  "id": 6,
		  "inputs": [
			{
			  "alias": "query",
			  "value": {
				"data": "req.raw.cont:\"X-PwnFox-Color: orange\"",
				"kind": "string"
			  }
			},
			{
			  "alias": "request",
			  "value": {
				"data": "$on_intercept_request.request",
				"kind": "ref"
			  }
			}
		  ],
		  "name": "PwnFox: orange",
		  "version": "0.1.0"
		},
		{
		  "alias": "pwnfox_red",
		  "definition_id": "caido/httpql-matches",
		  "display": {
			"x": -20,
			"y": 520
		  },
		  "id": 7,
		  "inputs": [
			{
			  "alias": "query",
			  "value": {
				"data": "req.raw.cont:\"X-PwnFox-Color: red\"",
				"kind": "string"
			  }
			},
			{
			  "alias": "request",
			  "value": {
				"data": "$on_intercept_request.request",
				"kind": "ref"
			  }
			}
		  ],
		  "name": "PwnFox: red",
		  "version": "0.1.0"
		},
		{
		  "alias": "pwnfox_pink",
		  "definition_id": "caido/httpql-matches",
		  "display": {
			"x": -20,
			"y": 620
		  },
		  "id": 8,
		  "inputs": [
			{
			  "alias": "query",
			  "value": {
				"data": "req.raw.cont:\"X-PwnFox-Color: pink\"",
				"kind": "string"
			  }
			},
			{
			  "alias": "request",
			  "value": {
				"data": "$on_intercept_request.request",
				"kind": "ref"
			  }
			}
		  ],
		  "name": "PwnFox: pink",
		  "version": "0.1.0"
		},
		{
		  "alias": "pwnfox_magenta",
		  "definition_id": "caido/httpql-matches",
		  "display": {
			"x": -20,
			"y": 720
		  },
		  "id": 9,
		  "inputs": [
			{
			  "alias": "request",
			  "value": {
				"data": "$on_intercept_request.request",
				"kind": "ref"
			  }
			},
			{
			  "alias": "query",
			  "value": {
				"data": "req.raw.cont:\"X-PwnFox-Color: magenta\"",
				"kind": "string"
			  }
			}
		  ],
		  "name": "PwnFox: magenta",
		  "version": "0.1.0"
		},
		{
		  "alias": "if_else",
		  "definition_id": "caido/if-else",
		  "display": {
			"x": -20,
			"y": 830
		  },
		  "id": 10,
		  "inputs": [
			{
			  "alias": "condition",
			  "value": {
				"data": "$pwnfox_blue.matches",
				"kind": "ref"
			  }
			}
		  ],
		  "name": "is blue?",
		  "version": "0.1.0"
		},
		{
		  "alias": "if_else_1",
		  "definition_id": "caido/if-else",
		  "display": {
			"x": 120,
			"y": 920
		  },
		  "id": 11,
		  "inputs": [
			{
			  "alias": "condition",
			  "value": {
				"data": "$pwnfox_cyan.matches",
				"kind": "ref"
			  }
			}
		  ],
		  "name": "is cyan?",
		  "version": "0.1.0"
		},
		{
		  "alias": "if_else_2",
		  "definition_id": "caido/if-else",
		  "display": {
			"x": 400,
			"y": 1080
		  },
		  "id": 13,
		  "inputs": [
			{
			  "alias": "condition",
			  "value": {
				"data": "$pwnfox_yellow.matches",
				"kind": "ref"
			  }
			}
		  ],
		  "name": "is yellow?",
		  "version": "0.1.0"
		},
		{
		  "alias": "if_else_3",
		  "definition_id": "caido/if-else",
		  "display": {
			"x": 540,
			"y": 1170
		  },
		  "id": 14,
		  "inputs": [
			{
			  "alias": "condition",
			  "value": {
				"data": "$pwnfox_orange.matches",
				"kind": "ref"
			  }
			}
		  ],
		  "name": "is orange?",
		  "version": "0.1.0"
		},
		{
		  "alias": "if_else_4",
		  "definition_id": "caido/if-else",
		  "display": {
			"x": 260,
			"y": 1000
		  },
		  "id": 15,
		  "inputs": [
			{
			  "alias": "condition",
			  "value": {
				"data": "$pwnfox_green.matches",
				"kind": "ref"
			  }
			}
		  ],
		  "name": "is green?",
		  "version": "0.1.0"
		},
		{
		  "alias": "if_else_5",
		  "definition_id": "caido/if-else",
		  "display": {
			"x": 680,
			"y": 1260
		  },
		  "id": 16,
		  "inputs": [
			{
			  "alias": "condition",
			  "value": {
				"data": "$pwnfox_red.matches",
				"kind": "ref"
			  }
			}
		  ],
		  "name": "is red?",
		  "version": "0.1.0"
		},
		{
		  "alias": "if_else_6",
		  "definition_id": "caido/if-else",
		  "display": {
			"x": 820,
			"y": 1340
		  },
		  "id": 17,
		  "inputs": [
			{
			  "alias": "condition",
			  "value": {
				"data": "$pwnfox_pink.matches",
				"kind": "ref"
			  }
			}
		  ],
		  "name": "is pink?",
		  "version": "0.1.0"
		},
		{
		  "alias": "set_color",
		  "definition_id": "caido/color-set",
		  "display": {
			"x": -30,
			"y": 1060
		  },
		  "id": 18,
		  "inputs": [
			{
			  "alias": "color",
			  "value": {
				"data": "blue",
				"kind": "string"
			  }
			},
			{
			  "alias": "request",
			  "value": {
				"data": "$on_intercept_request.request",
				"kind": "ref"
			  }
			}
		  ],
		  "name": "Set Color",
		  "version": "0.1.0"
		},
		{
		  "alias": "set_color_1",
		  "definition_id": "caido/color-set",
		  "display": {
			"x": 110,
			"y": 1120
		  },
		  "id": 19,
		  "inputs": [
			{
			  "alias": "request",
			  "value": {
				"data": "$on_intercept_request.request",
				"kind": "ref"
			  }
			},
			{
			  "alias": "color",
			  "value": {
				"data": "#159f64",
				"kind": "string"
			  }
			}
		  ],
		  "name": "Set Color 1",
		  "version": "0.1.0"
		},
		{
		  "alias": "set_color_2",
		  "definition_id": "caido/color-set",
		  "display": {
			"x": 250,
			"y": 1180
		  },
		  "id": 20,
		  "inputs": [
			{
			  "alias": "request",
			  "value": {
				"data": "$on_intercept_request.request",
				"kind": "ref"
			  }
			},
			{
			  "alias": "color",
			  "value": {
				"data": "green",
				"kind": "string"
			  }
			}
		  ],
		  "name": "Set Color 2",
		  "version": "0.1.0"
		},
		{
		  "alias": "set_color_3",
		  "definition_id": "caido/color-set",
		  "display": {
			"x": 390,
			"y": 1250
		  },
		  "id": 21,
		  "inputs": [
			{
			  "alias": "request",
			  "value": {
				"data": "$on_intercept_request.request",
				"kind": "ref"
			  }
			},
			{
			  "alias": "color",
			  "value": {
				"data": "#9c9d0d",
				"kind": "string"
			  }
			}
		  ],
		  "name": "Set Color 3",
		  "version": "0.1.0"
		},
		{
		  "alias": "set_color_4",
		  "definition_id": "caido/color-set",
		  "display": {
			"x": 530,
			"y": 1330
		  },
		  "id": 22,
		  "inputs": [
			{
			  "alias": "color",
			  "value": {
				"data": "orange",
				"kind": "string"
			  }
			},
			{
			  "alias": "request",
			  "value": {
				"data": "$on_intercept_request.request",
				"kind": "ref"
			  }
			}
		  ],
		  "name": "Set Color 4",
		  "version": "0.1.0"
		},
		{
		  "alias": "set_color_5",
		  "definition_id": "caido/color-set",
		  "display": {
			"x": 670,
			"y": 1390
		  },
		  "id": 23,
		  "inputs": [
			{
			  "alias": "color",
			  "value": {
				"data": "red",
				"kind": "string"
			  }
			},
			{
			  "alias": "request",
			  "value": {
				"data": "$on_intercept_request.request",
				"kind": "ref"
			  }
			}
		  ],
		  "name": "Set Color 5",
		  "version": "0.1.0"
		},
		{
		  "alias": "set_color_6",
		  "definition_id": "caido/color-set",
		  "display": {
			"x": 810,
			"y": 1470
		  },
		  "id": 24,
		  "inputs": [
			{
			  "alias": "color",
			  "value": {
				"data": "pink",
				"kind": "string"
			  }
			},
			{
			  "alias": "request",
			  "value": {
				"data": "$on_intercept_request.request",
				"kind": "ref"
			  }
			}
		  ],
		  "name": "Set Color 6",
		  "version": "0.1.0"
		},
		{
		  "alias": "set_color_7",
		  "definition_id": "caido/color-set",
		  "display": {
			"x": 1060,
			"y": 1510
		  },
		  "id": 25,
		  "inputs": [
			{
			  "alias": "color",
			  "value": {
				"data": "purple",
				"kind": "string"
			  }
			},
			{
			  "alias": "request",
			  "value": {
				"data": "$on_intercept_request.request",
				"kind": "ref"
			  }
			}
		  ],
		  "name": "Set Color 7",
		  "version": "0.1.0"
		},
		{
		  "alias": "if_else_7",
		  "definition_id": "caido/if-else",
		  "display": {
			"x": 970,
			"y": 1430
		  },
		  "id": 26,
		  "inputs": [
			{
			  "alias": "condition",
			  "value": {
				"data": "$pwnfox_magenta.matches",
				"kind": "ref"
			  }
			}
		  ],
		  "name": "is magenta?",
		  "version": "0.1.0"
		}
	  ]
	},
	"id": "a67ef37b-306e-47fd-bdc5-8971c55def8c",
	"kind": "passive",
	"name": "PwnFox Support"
  }

Content-Length header is always updated

I noticed PwnFox extension always update the ย Content-Length header in BurpSuite Pro v2020.9.2 (not tested on other versions).

Steps to reproduce:

  1. Install the last version of PwnFox extension in Burp (v1.0.2)
  2. Send any request in Burp repeater tab, change the method to POST, add arbitrary request body and set Content-Length header value to high value, for example 9999999:
POST / HTTP/1.1
Host: www.google.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 9999999

12345
  1. Disable Update Content-Length option in the Repeater top menu.
  2. Send the request, in my case www.google.com replies with a 405 Method Not Allowed

Expected result:
www.google.com should reply with 413 Request Entity Too Large because the Content-Length value is too high (it should timeout for lower values). You can verify this behavior by enabling or disabling the PwnFox extension between requests.
Also you can see in the Logger++ extension that the Content-Length header value has been updated when the extension is enable.

Is this "auto-update" feature intended / necessary ? This also works works out of repeater (like intruder for example). An automatic update could prevent exploitation of vulnerabilities such as request smuggling.

Color tab don't working anymore

hey i'm using this coloring the tab functionality ,but i don't see any color in burp proxy i reinstall/reconf everything in both win64/linux seems not working any more can you confirm is this issue only on my side?

Remove the color header in adress bar

Is it possible to remove the Pwnfox-Pink text and picture from the address bar?

afbeelding

Tried checking the preferences and options in Firefox but couldn't find it.

Tab colors

Can you guys add an options where users can set their own colors for tabs and also in burp, something like using lighter colors, current colors are really dark and when using it in burp.. eyes may start to suffer. Needs to add mild colors or users can edit the colors.

Thanks

Feature Request

Thank you for this extension. It is awesome.

Actual Feature Request

Can you add a feature where we can rename the profile name as we like?
e.g. While testing with multi-accounts if we can rename the profiles with the username like admin-user, not-admin-user, etc It will help in testing.
Will love to know your thoughts on this?

Thank you.

Corrupt add-on

Hey, I'm running Firefox 108.0.2 (64-bit) on Arch, and it refuses to install the latest version of the addon (1.0.3).

The error message mentions that the add-on is corrupt.

Content-Length gets updated even it is disabled

Hi,

I come across a weird issue in the BurpSuite when the PwnFox extension is loaded, The Update Content-Length feature stops working. After disabling the feature, Content-Length stills gets updated when the requests are sent via the repeater. This can be checked via the logger tab.

I've spoken to PortSwigger Support, they tested the PwnFox and made the suggestion to switch using IProxyListener instead of IHttpListener.

Based on the tests they have done with PwnFox and BurpSuite, the behavior was fixed after switching to IProxyListener.

Hope this helps.

Cannot load extension

Hi @B-i-t-K , I get the following error when trying to load the extension:

image

Read in the following post that it could be due to the way it was packaged but after unzipping it, it seems to have the proper structure.

Thanks for the help

Enabled checkbox not working properly!

Hello, thanks for this great addon. The "Enabled" checkbox doesn't work properly. When it is checked and I uncheck it, the burp proxy gets deactivated, just as expected. However, when checking "Enabled" again, the burp proxy doesn't get activated again. To do this, I need to uncheck and check again the "Use burp proxy" checkbox.
Also, when "Enabled" is unchecked and I check "Use burp proxy", the burp proxy gets activated, even though "Enabled" is unchecked.
There seems to be problems with the validation of the checkboxes.

You sent a Malformed Request

Summary

Hello Team
It appears that the extension when activated by default it sends something that google don't like
whenever the extension is activated google can't be accessed I get this message
image

I hope you can take a look
Regards

Not showing color in new burp 2021.5.1

Hello Team,

I have updated my burp to the latest version i.e 2021.5.1 and I am on firefox 88.0. When I create a new container I don't see the color differentiation.

Can you please help on this

service workers confused by container headers on soundcloud.com

proxying soundclound.com to burpsuite

the service workers (I think?) send different requests (OPTIONS instead of GET) to the cdn (and they get 403'd) when the option to "Add container header" is enabled; works fine when disabled

the result is that the page doesn't load right and testing isn't possible

I'll add more info if anyone seems to be monitoring what seems to be an abandoned project...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.