Intro to Cybersecurity · How hackers think and act · Day 2 of 4
Admin Bypass and Simple Web Challenges
Why weak logins and lazy access checks are so dangerous, and why the only check that counts is the one on the server. Then you take on beginner web challenges on AquilaCyber.
By the end of today you can
- Explain why a hidden button is not a locked door
- Tell a client-side check from a server-side check, and say why only one is real security
- Understand what "admin bypass" means and why it happens
- Solve beginner web challenges on AquilaCyber and climb the live leaderboard
Yesterday you noticed a site that trusted a number in a link. Today you meet the family of bugs that number belongs to. It is the single most common serious weakness on the web, and once you can see it, you see it everywhere.
Its proper name is broken access control: the system lets people do things they should not be allowed to do. We will keep everything on AquilaCyber, where the systems exist to be broken for practice.
1. Client Side and Server Side
Definition
A web app runs in two places at once, and you must always know which one you are looking at.
- The client side is your browser. You can see all of it and change all of it. It is the shop window.
- The server side is the company’s computer. You never see it and cannot change it. It is the stockroom and the till.
Here is the rule the whole day rests on: anything your browser can do, you can change. The menus, the hidden fields, the disabled buttons, the "you are not an admin" message. All of it is a copy sitting in your browser, and a copy can be edited.
Real-Life Scenario
A cinema prints "STAFF ONLY" on a door but never locks it. The sign is a client-side check: it depends on you choosing to obey. A locked door is a server-side check: it does not care what you choose. Security that depends on you choosing to behave is not security.
2. A Hidden Button Is Not a Locked Door
Imagine a page that shows an admin button only to admins, like this.
A button the page hides from normal users
The button is not absent for a normal user. It was downloaded to everyone and simply not shown. If the server deletes a user the moment it receives the delete request, without checking "is the person sending this actually an admin?", then whether the button was visible never mattered. The system guarded the view instead of guarding the action.
Hiding a control on the client side, then trusting that the control was hidden, is the bug. The attacker never needed your button. They needed your server to skip its check.
3. What "Admin Bypass" Means
Definition
An admin bypass is reaching an admin-only area or action without being an admin. It almost never means guessing the admin’s password. It usually means the system asked "who are you?" and then forgot to ask "are you allowed to do this?"
How It Happens
Picture a site that decides you are an admin based on something your own browser tells it, such as a stored value that simply says your role.
A trust decision made from data the user controls
The lesson is not a recipe. It is a principle: never decide what someone is allowed to do based on something they are able to change. The role, the price, the student number, the "is this an admin" flag: if it reaches the server from the browser, the server must treat it as a claim to be checked, not a fact to be trusted.
The admin-bypass challenge is a deliberately weak practice site built for this session. Trying the same thing on a real website you do not own is a crime, and it is also the fast way to learn nothing. The point is the principle, and the principle is what you carry out.
4. How the Builder Should Have Done It
Because this is a course about thinking clearly, here is the safe version. The server decides, using what the server knows, after checking the real session.
The same feature, checked where it counts
Notice there is no clever trick in the fix. Good security is usually boring: ask the right question, in the right place, every single time.
On AquilaCyber, open Day 2: Admin Area.
Before you touch it, write down the assumption you think it is making about trust.
Solve it, capture the flag, and check the live leaderboard to see your rank move.
Then move on to the other beginner web challenges and solve as many as you can in the time. Expected: several new flags and a higher place on the board.
You are standing in front of a counter with a sign that says "staff only beyond this point". Yesterday you would have turned away. Today you quietly ask yourself whether anyone is actually behind the counter checking, or whether the sign is doing all the work. That question, asked in the right place by a builder, is what keeps real users safe.
Practise
- Which side?. For each, say client side or server side: the price shown on a product page; the price the server charges your card; a greyed-out "Delete" button; the database row that actually gets deleted.
- Name the bug. A site hides the "Edit everyone’s profile" link from normal users but still edits any profile it is asked to. What is this weakness called?
- Fix it in words. Rewrite this rule so it is safe: "if the role the browser sends is admin, allow the delete."
- Climb. Solve Day 2: Admin Area and at least two more web challenges on AquilaCyber, and note your leaderboard rank before and after.
Checkpoint
Why can you not trust anything the browser sends?
Because the browser is on the user’s side and everything in it can be changed by the user. A value that leaves the browser is a claim, not a fact. The server must verify every claim against something only the server controls, like the session.
Does hiding a button protect the action behind it?
No. Hiding only changes what is drawn. If the server performs the action without checking permission, the button being hidden protected nothing. Guard the action on the server, not the view in the browser.
What is broken access control in one sentence?
It is when a system lets someone do something they should not be allowed to do, because it failed to check their permission for that specific action.
Tick Before You Move On
- ☐ I can tell a client-side check from a server-side check
- ☐ I can explain why a hidden button is not a locked door
- ☐ I can say what admin bypass means and why it happens
- ☐ I solved Day 2: Admin Area and climbed the leaderboard
Quick Recap
A web app runs on the client (the browser, which users control) and the server (which they do not). Anything the browser holds can be changed, so the browser can never be trusted. Admin bypass is usually a forgotten permission check, not a cracked password. The only real access check is the one the server makes, before the action, every time.
Next: Day 3. We leave the web app and turn to people. OSINT is finding out who really sent a message using nothing but public information, and it starts with "who sent this?"