The Burp Suite User Forum was discontinued on the 1st November 2024.

Burp Suite User Forum

For support requests, go to the Support Center. To discuss with other Burp users, head to our Discord page.

SUPPORT CENTER DISCORD

Possible bug in "Broken brute-force protection, multiple credentials per request" lab

Serhii | Last updated: Feb 02, 2022 10:05PM UTC

Hello Portswigger team, It seems like there's a bug in the lab located at https://portswigger.net/web-security/authentication/password-based/lab-broken-brute-force-protection-multiple-credentials-per-request The lab has accounts for two usernames: wiener and carlos. The passwords are accepted in the JSON format, like this: {"username": "wiener", "password": "peter"}. For user wiener, it is possible to enter his account in two ways. 1. You can supply JSON with multiple password fields, like this: {"username": "wiener", "password": "incorrect-password", "password": "wrong-password", "password": "wiener"}. It will work. 2. You can supply JSON with an array of possible passwords, like this: {"username": "wiener", "password": ["correct", "password", "is", "peter"]}. It will also work. The second way (array of possible passwords) seems to be the correct answer for this task. However, the first way (multiple password fields) only seems to work for user wiener. When I tried supplying {"username": "carlos", "password": "123456", "password": "password", ..., "password": "moon"}, it simply didn't work. It blew my mind. Why does it work for wiener, but not for carlos? I think either both methods should work for both usernames, or only one method should work for both usernames.

Michelle, PortSwigger Agent | Last updated: Feb 03, 2022 11:02AM UTC

Thanks for getting in touch. If you do a few more tests on this one and experiment with a few more settings you should find that if you use the array it will work, if any of the supplied passwords are correct, if you provide multiple password fields then the last one in the list has to be correct {"username": "wiener", "password": "incorrect-password", "password": "wrong-password", "password": "correct-password"} If you change that around and the correct password appears earlier in the list and is followed by incorrect passwords then it will fail in the same way as it does when you've used this format for the 'carlos' user account: {"username": "wiener", "password": "incorrect-password", "password": "correct-password", "password": "wrong-password"} So by using the array you're changing the way the details are being parsed, have another play and watch the behavior, I hope this helps :).

Serhii | Last updated: Feb 03, 2022 03:45PM UTC