Portswigger-Referer-based access control

problem link

풀이

Referer 헤더를 기반으로 특정 관리자 기능에 대한 액세스를 제어한다. administrator:admin 계정을 이용하여 이를 분석하고, wiener:peter로 로그인하여 wiener를 관리자로 승격하라.

administrator로 로그인하면 권한을 변경할 수 있다.

권한 변경을 요청하면 GET 파라미터로 요청할 이름과 up/downgrade를 지정한다. 이 패킷을 Repeter로 잡고, wiener로 로그인하여 세션 토큰을 교체한다.

wiener로 로그인하고 /admin에 접근하면 접근할 수 없다는 메시지가 뜬다. 하지만 권한 변경을 요청하는 HTTP 요청을 직접 보내면 권한 변경에 성공한다. (비로그인 시에는 실패한다.)

요청 username을 wiener로 설정하고 upgrade를 요청하면 문제가 풀린다.

이 취약점은 액세스 컨트롤을 공격자가 임으로 조작할 수 있는 Referer 헤더로만 하여 발생했다. 이는 이미 /admin 경로에 접근할 수 있는 유저만 변경 요청을 보낼 수 있다는, 어플리케이션 플로우에 대한 잘못된 가정이 있었기 때문에 발생했다.


tags: writeup, access control vulnerability, wstg-athz-02, wstg-athz-03, business-logic-vul, wstg-busl-02, wstg-busl-06, web hacking