Portswigger-User ID controlled by request parameter, with unpredictable user IDs

problem link

풀이

이 문제에는 My Account 페이지에 수평적 권한 상승 취약점이 있다. 유저를 GUID로 식별한다. carlos의 GUID를 알아내고 API 키를 얻어 제출해 문제를 해결하라. wiener:peter 계정을 이용할 수 있다.

wiener로 로그인하여 My Account 페이지에 가면 API Key가 보인다. 이 때 경로는 t/my-account?id=9c784229-48fd-4c6d-ab01-c89b150cc465 이다. id가 GUID이기에 carlos의 ID를 bruteforce나 예측으로 찾기는 어렵다.

게시물을 살펴보면 carlos가 쓴 게시물이 있다. carlos 글자를 누르면 carlos가 쓴 글 목록을 보여주는 페이지로 간다.

이 패킷에는 carlos의 GUID가 포함되어 있다. 이 GUID를 id 파라미터로 이용해 My Account 페이지를 연다.

이 GUID로 My Account를 열면 carlos의 API Key를 얻을 수 있다.

이 API Key를 solution으로 등록하면 성공한다.

이 취약점은 보호해야하는 페이지에 대해 액세스 컨트롤을 하지 않아 발생하였다. GUID로 예측하기 어렵게 했지만 막상 이 GUID를 정확히 알 수 있는 방법이 있어 효과를 보지 못했다. 난수를 예측할 수 없으니 안전하다 생각하고 액세스 컨트롤을 하지 않는 경우가 있는데, 난수 자체가 유출될 가능성이 있으니 액세스 컨트롤이 필요하다.


tags: writeup, access control vulnerability, wstg-athz-02, wstg-athz-03, idor, wstg-athz-04, wstg-busl-02, web hacking