A Burp Suite extension made to automate the process of bypassing 403 pages. Heavily based on Orange Tsai's talk Breaking Parser Logic: Take Your Path Normalization off and Pop 0days Out!
https://www.example.com/api/v1/users
with payload ..;
will result in testing the following:
https://www.example.com..;/api/v1/users
https://www.example.com/api..;/v1/users
https://www.example.com/api/v1..;/users
https://www.example.com/..;api/v1/users
https://www.example.com/api/..;v1/users
https://www.example.com/api/v1/..;users
https://www.example.com/api/v1/users/..;
https://www.example.com/api/v1/users/..;/
query payloads.txt
and header payloads.txt
.Traceback (most recent call last):
File "/.BurpSuite/bapps/444407b96d9c4de0adb7aed89e826122/403Bypasser.py", line 4, in
at org.python.core.Py.ImportError(Py.java:328)
at org.python.core.imp.importFromAs(imp.java:1168)
at org.python.core.imp.importFrom(imp.java:1132)
at org.python.pycode._pyx4.f$0(/home/alam/.BurpSuite/bapps/444407b96d9c4de0adb7aed89e826122/403Bypasser.py:432)
at org.python.pycode._pyx4.call_function(/home/alam/.BurpSuite/bapps/444407b96d9c4de0adb7aed89e826122/403Bypasser.py)
at org.python.core.PyTableCode.call(PyTableCode.java:167)
at org.python.core.PyCode.call(PyCode.java:18)
at org.python.core.Py.runCode(Py.java:1386)
at org.python.core.__builtin__.execfile_flags(__builtin__.java:535)
at org.python.util.PythonInterpreter.execfile(PythonInterpreter.java:286)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at burp.by4.<init>(Unknown Source)
at burp.cda.Q(Unknown Source)
at burp.yo2.lambda$panelLoaded$0(Unknown Source)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:832)