Broken access control and misconfiguration

Access control is the decision about who may do what, and it breaks when the server trusts the request or forgets to check at all. This set checks that you can spot a missing check and know what a check that denies by default looks like.

4 questions 1 task Read the lesson

Questions

Each one is marked as you go, and the explanation arrives straight after, which is the part worth reading.

4 questions, marked as you go.

1 What is an insecure direct object reference?
2 Why is hiding the link to the admin area not access control?
3 Why is a traceback in a response a finding?
4 What does a check that denies by default look like?

Tasks

These need your own device. Run the command in Termux, then paste what it printed. The marking looks at what the output means, so spacing, version numbers and ordering do not matter. If you have not installed anything yet, the lesson covers the setup.

Hand a record to the wrong caller, then refuse it

This models one request: caller 1 asks for record 2, which belongs to someone else. It prints the request, what the flawed code returns, and what a check that denies by default returns. Run it and paste all three lines.

Run this in Termux On your own device. Nothing on this page executes it. The command runs in your terminal, and this box only reads what you paste back.

python3 -c "users={'1':'ada','2':'grace'}; caller='1'; role='user'; target='2'; print('caller', caller, 'asks for record', target); print('flawed :', 'returns '+users[target]); print('fixed :', users[target] if (role=='admin' or caller==target) else '403 forbidden')"
Marking your own work Both halves of this are checked in your browser, with no server involved, so nothing stops you from pasting output you did not run. The tasks are written so that the easiest way to pass one is to actually do it and read the result, which is the whole intention.

All sets Read the lesson