기능 수준의 접근 제어의 누락이다.
보면 IDOR과 기능 수준의 접근 제어 누락이랑 비교를 할 만큼 비슷한 면도 많고 아예 묶어서 접근 제어 문제로 취급하기도 한다.
기능 수준의 접근 제어 누락은 특정한 기능(특정 사용자 삭제 등)에 접근 제어가 빠져 있어 권한 없는 일반 사용자도 그 기능을 사용할 수 있는 경우를 말하고, IDOR은 전 포스팅에서 다뤘듯이 타인의 프로필에 접근하는 데이터 접근 통제가 안전하지 않게 되어있을 때를 말한다.
다음 스텝을 보면 Relying on obscurity 라고 되어 있다. Security through obscurity 라고도 하며 감추기를 통해 보안을 신경쓰려고 하는 개발자들의 실수이다.
HTML, CSS, 또는 JavaScript를 사용해서 사용자가 일반적으로 접근하지 않는 링크를 숨기는 방식에 의존할 수는 있지만 이것은 일반적인 사용자들에게만 보이지 않을 뿐, 공격자들에게는 좋은 먹잇감이 될 수 있다.
UI에서만 안 보이게 disaply:none 처리를 한다던가, 주석으로 숨긴다던가 해도 개발자 도구나 소스 분석 등으로 알 수 있고 심지어 어떠한 특정 기능을 비활성화 시켜놓는다 하더라도 그 기능을 요청하는 방식으로 공격을 할 수도 있다.
이 스텝의 문제는 사용자에게 보이지 않는 메뉴 항목 2개를 찾으라고 한다.
개발자 도구 열어주면 히든 메뉴 보이고 Users 항목과 Config 항목이 보인다. 위의 다른 dropdown 메뉴들은 당연히 눈에 보이는 accounts/messages 메뉴.
다음 3 레벨에서 문제가 생긴다.
대충 이 문제의 취지는 방금 숨겨진 항목으로 얻어낸 정보를 이용해서 Jerry라는 계정의 해시값을 입력해보라는 것이다.
굉장히 여러 번 시도했지만 문제 푸는데의 실마리를 잡질 못했다.
어쩔 수 없이 내가 부족하구나하고 힌트를 보는데...
"access-control/users"를 modify 하란다. users?????????????/
다시 눈 씻고 찾아봐도 users-admin-fix와 config 밖에 안 보이는뎁쇼? 그냥 힌트를 좀 rough하게 던진건가 싶어서 다른 블로그도 찾아봄. 다른 블로그들은 access-control/users 항목이 있더라요 ㅋㅋㅋㅋ 개얼탱
나도 ㅎㅎ <a href="access-control/users">Users</a>가 지금 발견했다!!라고 생각하고 진행하겠다 ㅎㅎㅎㅎㅎ 내 시간 ㅎㅎ
우선 a 태그로 링크되어있는 users-admin-fix로 들어가서 리퀘스트를 받아본다. 뭐 response로 415뜨고 하지만 그건 중요치 않다.
중요한 것은 users로 접근을 했을때 500에러가 뜬다는 점이다. 왜요;; 호락호락하게 주지 않겠다는 의도는 보이나 역시 실마리가 보이지는 않았다. 내가 아까 힌트를 봤다는 것을 제외한다면.
아까 힌트에서 Content-Type: application/json을 넣어보라 했었기 때문에 넣어봤더니 되긴 했다.
일단 힌트 없이 사고해봐야 하는 과정은 500 에러가 발생했다는 것은 응답은 성공적으로 오류 없이 전송은 되었으나 서버 자체적인 문제나 상황 때문에 에러가 발생했다는 거니까 거기서부터 힌트를 잡! 기는 해야지 잡기는..
일단 난 GET 메서드를 사용하고 있는데 도대체 Content-Type을 요구하는 것은 무슨 경우인가.
여러 궁금증만 남긴 채 찜찜하게 클리어하기만 했다.
뭐 바꿨다고 다시 Jerry 계정의 해시값을 가져오라고 한다. 뭘 바꾼건가 하고 있는데 내가 엄청나게 사용했던 users-admin-fix 이건가보다.
으으 403 즉 권한 없다고 문전박대한다. 사실 여기서도 해맸다. 3레벨에서 어찌할지도 몰라서 전전긍긍하던걸 4레벨 와서 다시 다룬다고 달라질게 없으니. 그런데 힌트에서 또 REST를 언급한다.
restful에서 배운대로 PUT을 사용하여 jerry 해시값을 내 맘대로 변경하고 답으로 사용하려 했으나 response에 보면 허용하는 메서드는 POST, GET으로 되어 있다. POST를 사용하면 내용을 만들거나 삽입할 수 있었다.
403은 권한이 없을 때 뜨는 에러 코드이니 나 자신에게 권한을 부여해주면 될 것 같다.
그 전에 POST로 전송해보고 response에 보면 음 아주 양식이 잘 나와있다.
오늘부터 나는 어드민이다.
'OWASP TOP 10(2021) > Broken Access Control' 카테고리의 다른 글
Spoofing an Authentication Cookie (0) | 2025.06.09 |
---|---|
Insecure Direct Object References(IDOR) + RESTful (0) | 2025.06.05 |
Hijack a session (2) | 2025.06.04 |
A1) Broken Access Control (0) | 2025.06.02 |