[ 이론 ]
Missing Function Level Access Control
기능 level 접근 제어 누락
출력 인코딩으로 XSS를 방지하는 것과 같은 액세스 제어는 유지 관리가 까다로울 수 있다. 전체 응용프로그램에서 적절하게 적용되도록 보장해야하므로 모든 방법/function에서 적용해야한다.
IDOR vs Missing Function Level Access Control
많은 사람들이 Function Level 접근 제어와 IDOR를 '접근 통제' 하나로 표현한다. 둘 사이 차이점을 말해보겠다. 가장 구별되는 차이점은 IDOR은 접근통제가 '수평적'이나 '측면적'에 가깝고 Missing Function Level Access는 '기능성 노출'이라는 것이다. 여기서 IDOR 강의에서 기능이 어떻게 노출 될 수 있는지 보여주지만 다른 방법도 알아보겠다.
* IDOR (Insecure Direct Objcet Reference)
안전하지 않은 직접 객체 참조. 공격자가 요청 메시지의 URL이나 파라미터를 변경해 정상요청인척 허용되지 않은 기능 실행 및 다른 사용자 리소스에 접근하는 공격. 입력값 검증을 잘해야한다.
[ 문제 ]
Just Try It
2번 문제에서 설명한 것처럼 응용 프로그램은 접근 제어하기 위해 클라이언트 측 컨트롤에 의존하는 경우가 있다. 만약 당신이 보이지 않는 것들을 찾을 수 있다면, 그것들을 통해 무엇이 일어나는지 볼 수 있다.
Gathering User Info
종종 데이터 덤프는 SQL Injection과 같은 취약점에서 비롯되지만 액세스 제어가 좋지 않거나 부족한 경우에도 발생할 수 있다.
여러단계와 여러 시도가 필요하다. Comment와 유출된 정보에 주목하라. 도중에 다른 브라우저/계정을 사용할 수도 있다. 이미 수집한 정보 (hidden menu items)로 시작하여 사용자 목록을 가져와서 자신의 사용자 계정에 'Hash'를 제공할 수 있는지 확인하라.
hints
There is an easier way and a 'harder' way to achieve this, the easier way involves one simple change in a GET request.
[ 풀이 ]
1) hidden menu items를 찾는다.
2) users에 접속한다.
- Users 가 사용자 목록인 것 같다. a herf="/users"라는 것은
메인 페이지("localhost/webgoat") 밑의 경로라고 볼 수 있다.
3) 에러 해석
(1) 상태코드
- 500(내부 서버 오류): 서버에 오류가 발생하여 요청을 수행할 수 없다. (파일은 있지만 not 404)
(2) template parsing error : list_user.html 리소스 파싱 실패
4) template 배제하고 데이터 요청하기 위해 GET 헤더 추가
Content-type: application/json
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Content-Type
리소스의 media type을 나타내기 위해 사용
5) hash 추가
'강의 및 교육 > Inflearn - Webgoat' 카테고리의 다른 글
JWT tokens - 11. Final challenge (0) | 2022.02.23 |
---|---|
Insecure Deserialization (0) | 2022.02.23 |
Crypto Basics - 8 (0) | 2022.02.22 |
Crypto Basics - 6 (0) | 2022.02.21 |
Insecure Direct Object References - 2, 3, 4, 5 (0) | 2022.02.19 |