이번 IDOR 취약점은 기능 호출 및 API에 관한 취약점을 찾아보려 한다. 이러한 취약점을 악용하면 다른 사용자로 특정 동작을 수행할 수 있다.
IDOR Information Disclosure 취약점은 다양한 유형의 리소스를 읽을 수 있고, 해당 취약점을 통해 API 또는 특정 기능을 다른 사용자로 실행할 수 있다.
이러한 취약점을 이용하면 다른 사용자의 개인정보를 변경, 다른 사용자의 비밀번호 재설정, 다른 사용자의 결제 정보로 결제 수행, 관리자 권한 획득 후 모든 사용자 계정 탈취 등 사용될 수 있다.
실습 웹 페이지는 파일 관리 애플리케이션으로 Edit Profile 기능에서 IDOR 취약점을 사용하려 한다.
Identifying Insecure APIs
해당 사이트에는 사용자 프로필 기능이 있다..

Edit Profile에 들어가게 되면 해당 사용자에 대한 정보를 확인할 수 있다.

Burp Suite를 사용해 Edit Profile 버튼을 눌렀을 때 HTTP 요청을 가로채면, 다음과 같은 요청을 볼 수 있다.

GET을 통해 /profile/api.php/profile/1 에서 정보를 가져오는 것을 확인할 수 있다. 해당 Response를 확인해보면 다음과 같다.

이는 우리가 Edit Profile 에서 본 정보와 내용이 같은 것을 볼 수 있다. 여기서 /profile/api.php/profile/1 에서 uid 인 1이 마지막에 들어간 것을 추측할 수 있다. 이를 트리거하기 전에, Update Profile 기능도 살펴보려 한다.
해당 버튼을 누르면 PUT Method로 /profile/api.php/profile/1 로 요청을 보내는 것을 확인할 수 있다.

페이로드는 다음과 같다.
PUT /profile/api.php/profile/1 HTTP/1.1
Host: SERVER_IP:PORT
Content-Type: application/json
{
"uid": 1,
"uuid": "40f5888b67c748df7efba008e7c2f9d2",
"role": "employee",
"full_name": "Amy Lindon",
"email": "a_lindon@employees.htb",
"about": "A Release is like a boat. 80% of the holes plugged is not good enough."
}
여기서 uid 는 사용자의 ID, uuid는 고유 식별자, Role 은 권한, 그리고 나머지 사용자 정보가 있는 것을 확인할 수 있다. 따라서 웹 애플리케이션이 백엔드에 접근 제어 시스템이 없으면 사용자에게 임의의 역할을 설정해 더 많은 권한을 부여할 수 있어야 한다. 역할을 설정하기 위해서는 백엔드 시스템에서 설정해 놓은 역할의 종류를 알아야 한다.
Exploiting Insecure APIs
/profile 페이지에서 full_name , Email , About 을 변경할 수 있는 것을 알 수 있다. 그래서 다른 매개 변수를 조작하려고 한다.
가능한 경우는 다음과 같다.
- UID를 다른 사용자의 UID로 변경해 계정을 탈취
- 다른 사용자의 세부 사항을 변경
- 임의의 사용자 생성
- 기존의 사용자 삭제
먼저 UID 를 임의의 숫자로 변경해 보려 한다.

위 결과에서 uid mismatch 결과를 받을 수 있다. 해당 결과는 엔드포인트에 있는 1로 uid 를 식별하는 것으로 추정된다. 그래서 엔드포인트를 2로 변경하고 다시 보내보도록 한다.

위 결과에서 볼 수 있듯이 이번에는 UUID mismatch 를 확인할 수 있다. 웹 응용 프로그램은 우리가 보내는 uuid 값이 사용자의 uuid 와 일치하는지 확인하는 것으로 보인다. 우리는 uid 1의 uuid 를 보내기 때문에 실패할 수 밖에 없다. 이는 사용자가 다른 사용자의 세부 정보를 변경하지 못하게 하는 또 다른 형태의 보안으로 볼 수 있다.
다음으로 API 엔드 포인트에 POST 요청으로 사용자를 만들 수 있는지 보려 한다. POST Method를 사용해 UID를 새 UID로 변경하고, 새 UID로 변경하고 새 UID의 API 엔드포인트를 보낼 수 있다.

POST를 통해 새로운 사용자를 추가하려 하니, 관리자만이 만들 수 있다고 한다. 이에 admin 이라는 직책을 확인할 수 있다. 그래서 우리의 권한을 admin 으로 만들어서 요청을 해본다.

Invalid role 로 직책을 바꾸지 못한 것을 확인할 수 있다. 모든 시도는 실패한 것으로 보인다. 역할을 변경할 수 없으므로 사용자를 만들거나 삭제할 수 없다.
이제 남은 것은 /profile/api.php/profile/[UID] 에서 정보를 추출이 가능한지 확인을 해보는 것이다. 이는 다음 페이지에 진행해보려 한다.
'Hack The Box CBBH' 카테고리의 다른 글
CBBH - Web Attacks[IDOR Prevention] (0) | 2025.02.10 |
---|---|
CBBH - Web Attacks[Chaining IDOR Vulnerabilities] (0) | 2025.02.10 |
CBBH - Web Attacks[Bypassing Encoded References] (0) | 2025.02.10 |
CBBH - Web Attacks[Mass IDOR Enumeration] (0) | 2025.02.10 |
CBBH - Web Attacks[Identifying IDORs] (0) | 2025.02.10 |