Autorize is an automatic authorization enforcement detection extension for Burp Suite. It helps you detect authorization vulnerabilities.
It is sufficient to give to the extension the cookies of a low privileged user and navigate the website with a high privileged user. The extension automatically repeats every request with the session of the low privileged user and detects authorization vulnerabilities.
It is also possible to repeat every request without any cookies in order to detect authentication vulnerabilities in addition to authorization ones.
The plugin works without any configuration, but is also highly customizable, allowing configuration of the granularity of the authorization enforcement conditions and also which requests the plugin must test and which not. It is possible to save the state of the plugin and to export a report of the authorization tests in HTML or in CSV.
1. Download Burp Suite
2. Download Jython standalone JAR
3. Open burp -> Extender -> Options -> Python Environment -> Select File -> Choose the Jython standalone JAR
4. Install Autorize from the BApp Store or follow these steps:
- Download the Autorize.py file. (download link is at the end of this article)
- Open Burp -> Extender -> Extensions -> Add -> Choose Autorize.py file.
How To Use Autorize
1. After installation, the Autorize tab will be added to Burp.
2. Open the configuration tab (Autorize -> Configuration).
3. Get your low-privileged user authorization token header (Cookie / Authorization) and copy it into the textbox containing the text “Insert injected header here”.
Note: Headers inserted here will be replaced if present or added if not.
4. Uncheck “Check unauthenticated” if the authentication test is not required (request without any cookies, to check for authentication enforcement in addition to authorization enforcement with the cookies of low-privileged user)
5. Click on “Intercept is off” to start intercepting the traffic in order to allow Autorize to check for authorization enforcement.
6. Open a browser and configure the proxy settings so the traffic will be passed to Burp.
7. Browse to the application you want to test with a high privileged user.
The Autorize table will show you the request’s URL and enforcement status.
It is possible to click on a specific URL and see the original/modified/unauthenticated request/response in order to investigate the differences.
Authorization Enforcement Status
There are 3 enforcement statuses:
- Bypassed! – Red color
- Enforced! – Green color
- Is enforced??? (please configure enforcement detector) – Yellow color
The 3rd status means that Autorize cannot determine if authorization is enforced or not, and so Autorize will ask you to configure a filter in the enforcement detector tabs. There are two different enforcement detector tabs, one for the detection of the enforcement of low-privileged requests and one for the detection of the enforcement of unauthenticated requests.
The enforcement detector filters will allow Autorize to detect authentication and authorization enforcement in the response of the server by content length or string (literal string or regex) in the message body, headers or in the full request.
For example, if there is a request enforcement status that is detected as “Authorization enforced??? (please configure enforcement detector)”, it is possible to investigate the modified/original/unauthenticated response and see that the modified response body includes the string “You are not authorized to perform action”, so you can add a filter with the fingerprint value “You are not authorized to perform action”, so Autorize will look for this fingerprint and will automatically detect that authorization is enforced. It is possible to do the same by defining content-length filter or fingerprint in headers.
The interception filter allows you configure what domains you want to be intercepted by Autorize plugin, you can determine by blacklist/whitelist/regex or items in Burp’s scope in order to avoid unnecessary domains to be intercepted by Autorize and work more organized.
Example of interception filters (Note that there is default filter to avoid scripts and images):