| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- linux
- Cyber Security
- 모의해킹
- 보안 스터디
- OverTheWire
- 블루팀
- 해커
- cert
- 해킹
- 리눅스 기초
- 보안 관제
- Web
- 정보보안
- 정보보호
- Blue Team
- 워게임
- Cross-Site Scripting
- THM
- web hacking
- XSS
- CTF
- write-up
- TryHackMe
- http
- 리눅스
- IR
- 사이버 보안
- 해킹 스터디
- Bandit
- SoC
- Today
- Total
AnbyMata의 해킹 노트
[TryHackMe] OWASP Top 10: 2021 - EP.1 (Task 1~4) 본문

출처: https://tryhackme.com/room/owasptop102021
OWASP Top 10 - 2021
Learn about and exploit each of the OWASP Top 10 vulnerabilities; the 10 most critical web security risks.
tryhackme.com
EP.1 에서는 OWASP Top 10이 무엇인지 알아보고, 실습 환경을 세팅한 다음,
10가지 취약점 중 첫번째인 Broken Access Control에 대해 배워봅시다.
[1] Introduction
OWASP Top 10은 "Open Web Application Security Project"의 줄임말로 웹 보안을 연구하고 공유하는 글로벌 오픈소스 프로젝트입니다.
OWASP는 Web Application 보안 분야에서 가장 흔하고 치명적인 보안 취약점 10가지를 선정합니다.
OWASP Top 10은 3~4년 주기로 다시 선정을 하여 업데이트하는데, 저희가 공부하는 버전은 2021년도 버전입니다.
2021년에 선정된 OWASP Top 10 의 취약점 목록은 다음과 같습니다.
- 1. Broken Access Control
- 2. Cryptograhic Failures
- 3. Injection (SQL, XSS ... )
- 4. Insecure Design
- 5. Security Misconfiguration
- 6. Vulnerable and Outdated Components
- 7. Identification & Authentication Failures
- 8. Software and Data Integrity Failures
- 9. Security Logging & Monitoring Failures
- 10. Server-Side Request Forgery (SSRF)
2025년에 갱신이 될것으로 예상이 되는데, 새로 갱신이 되더라도 절반 이상은 그대로 유지되기 때문에, 2021년 버전이라고 걱정하실 필요는 없습니다.
[2] Accessing Machines
위 10가지 취약점을 실습하려면 OpenVPN 기반의 실습 환경을 구성해야 합니다.
Task 2를 보시면 "Start Machine" 아래에 "Connect using OpenVPN" 칸이 있는데, 그 칸의 'here' 부분을 눌러 OpenVPN 설치 화면으로 이동합니다.

이동한 화면의 아래를 보시면,
OpenVPN (Advanced) 라는 파란색 네모 부분이 우측에 있습니다.

거기서 "Configuration" 버튼을 클릭합니다.
누르시면, OpenVPN을 설치하고 적용하여 실습환경을 세팅하는 방법이 각 운영체제에 따라 영상과 글들로 친절히 나와있습니다.
영상 확인하시면서, 환경 세팅하시면 됩니다.

이제 다시, OWASP Top 10 룸으로 돌아가서, OpenVPN을 연결한 상태로,
"Start Machine"을 눌러 실습 환경을 실행해봅시다.

이제 실습환경이 준비되었으니, 본격적으로 OWASP Top 10에 대해 학습해봅시다!
[3] 1. Broken Access Control
권한 검증이 제대로 이루어지지 않아 권한 없는 사용자가 민감한 데이터나 기능에 접근할 수 있는 취약점입니다!
웹사이트들은 기본적으로 민감한 정보를 다루는 페이지들에 대해 일반 사용자들의 접근을 철저히 제한합니다.
그 결과, 사이트의 관리자만이 볼 수 있는 보호된 페이지들이 존재합니다.
하지만 이러한 접근 제한은 관리자만의 전유물이 아닙니다.
우리도 누구나 타인의 접근을 막는 페이지를 만들 수 있습니다
대표적인 예로 유튜브의 비공개 동영상을 들 수 있습니다.
자신이 업로드한 영상이나 재생목록을 비공개로 설정하면, 다른 사용자들은 해당 영상의 페이지에 접근할 수 없게 됩니다.
"Broken Access Control" 취약점은 권한 검증을 우회해 접근이 제한된 페이지나 민감한 정보를 열람 및 조작할 수 있게 만드는 취약점입니다.
이를 통해 공격자는 비공개 페이지나 민간한 정보들을 볼 수 있습니다.
[4] Insecure Direct Object Reference (IDOR)
"Insecure Direct Object Reference" 줄여서 IDOR 은 평소에는 볼 수 없는 접근이 제한된 리소스에 접근 및 엑세스 할 수 있는 access control 취약점을 의미합니다.
이 취약점은 프로그램이 서버 내의 특정 개체를 지칭하는 식별자, Direct Object Reference (직접 객체 참조)를 노출했을 때 발생합니다
예시를 보면서 이해해봅시다.
여러분이 대학교 홈페이지에 로그인한 상황이라고 가정하겠습니다.
성공적으로 로그인하면 다음과 같은 URL로 이동하게 됩니다.
https://mata_university.com/account?user=1234
이 URL은 여러분의 계정 페이지를 가리키며, 개인 정보가 포함되어 있으므로 타인이 로그인하지 않은 상태에서는 접근·조회할 수 없어야 합니다.
여기서 URL을 잘 보시면, "user=1234" 라는 부분이 있습니다. 이 부분이 우리가 파고들 취약점입니다.
여기서 'user' 는 매개변수로, 특정 계정을 가리킵니다. 그리고 값 '1234' 부분을 통해 어떤 계정으로 연결되는지 결정합니다.
'user'라는 민감한 매개변수가 client (사용자) 쪽으로 그대로 노출되어 있기 때문에, 사용자는 로그인 없이 URL의 'user' 부분의 숫자 값을 변경해 다른 계정의 페이지에 접근할 수 있습니다.
예를 들어, "user=1234" 를 "user=4321" 로 바꾸어 URL에 넣으면 "4321" 사용자의 개인 정보 페이지로 이동할 수 있습니다.
굳이 "4321"이 아닌 "2222" 등 다른 숫자를 넣어 여러 계정에 로그인 없이 접근할 수도 있습니다.
굳이 "user"가 아니라도, "id"나 "pw" 같은 민감한 파라미터가 노출되면 로그인 정보를 탈취하거나 인증을 무력화할 수 있고, "msg"처럼 메시지 번호를 조작하면 다른 사람의 대화 내용 열람이 가능합니다.
이 취약점 때문에 공격자는 대상 계정의 비밀번호나 추가 인증 정보를 알지 못해도 다른 사용자의 개인 정보를 열람할 수 있습니다.
[4-1] IDOR Practice
이제 IDOR 취약점을 실습해봅시다!
(자신이 TryHackMe 유료 구독자라면, 바로 가상머신을 띄울 수 있습니다..)
(전 돈이 없어서..)
[2] 에서 OpenVPN을 연결한 후, "Start Machine" 을 클릭한 상태로,
1분을 대기한다면,

상단에 "Target IP Adress" 번호가 나오게 됩니다.
그 번호를 자신의 브라우저의 새 탭 주소창에 입력하여 접속해주면,
(TryHackMe 사이트에서 어떻게 하는게 아닙니다!)

이런 식으로, 실습을 진행할 수 있는 웹사이트가 나옵니다.
Task 4 하단의 문제에 나와있는 username과 password를 이용해서 로그인을 해주면,
(Task 4에서 좀 내리면 문제 3문제가 나와있습니다)

누군가의 노트 페이지가 나오면서 로그인에 성공했음을 확인할 수 있습니다.
이제 취약점을 찾아봅시다.
URL을 유심히 보시면, "note_id" 라는 굉장히 중요한 정보를 담고 있을 것 같은 파라미터가 있습니다,
(parameter = 매개 변수)
이름을 통해 추측해보자면, 아마 "note_id"는 특정 노트를 가리키는 고유 식별자일 것입니다.
즉, 이 값은 바꿔버리면, 다른 사용자의 노트에 접근하거나 임의의 노트를 불러올 가능성이 높아보입니다.
한 번, 'note_id=2' 로 바꾸어 "note_id"의 값을 2로 바꿔보면,

내가 로그인한 페이지가 아닌 누군가의 노트 페이지로 이동하게 됩니다!
이제, "note_id"의 값을 바꿔가며 이 문제의 정답을 찾아내시면 됩니다.
(힌트를 드리자면, 값은 무작위로 넣지 마시고, 하나하나 증가시키세요. 그러면, 정답은 아니고 힌트가 나옵니다.)
결과적으로, 이 페이지에 도착하시면, 정답을 얻어내실 수 있습니다.

진짜 짧게 정답만 나와있는 페이지입니다.
이렇게 성공적으로 Broken Access Control 취약점을 실습해보았습니다.
결과적으로 EP.1 에서는 OWASP Top 10에 해당되는 취약점 중 하나인 Broken Access Control에 대해 학습했습니다.
[TryHackMe] OWASP Top 10: 2021 - EP.1 (Task 1~4). END.
[TryHackMe] OWASP Top 10: 2021 - EP.2 (Task 5~8). Continue...
(EP.2 에서는 Cryptographic Failures 취약점을 학습합니다!)
'TryHackMe > Web Hacking' 카테고리의 다른 글
| [THM] XSS - EP.1 (Task 1~3) (1) | 2026.02.25 |
|---|---|
| [THM] SQL Injection - EP.3 (Task 6~10). 完 (0) | 2026.02.16 |
| [THM] SQL Injection - EP.2 (Task 4~5) (0) | 2026.02.07 |
| [THM] SQL Injection - EP.1 (Task 1~3) (1) | 2026.02.02 |
| [TryHackMe] OWASP Top 10: 2021 - EP.2 (Task 5~8) (0) | 2025.11.10 |