- (A1) Broken Access Control - Insecure Direct Object References2023년 09월 29일 10시 17분 21초에 업로드 된 글입니다.작성자: IIIIIIIIIIIIIIIIIIIIl
1번 문제 소개
많은 액세스 제어 문제는 인증되었지만 권한이 없는 사용자의 공격에 취약합니다. Insecure Direct Object References 문제를 풀기 위해서는 일반 사용자 인증이 필요합니다.
이 경우 계정의 아이디와 비밀번호는 'tom'과 'cat'입니다.
[그림1] 로그인 화면
2번 문제 소개
공격 측면에서 브라우저에서 보이는 데이터와 Raw 응답과 차이가 존재합니다. 즉 Raw 응답에는 브라우저 화면/페이지에 표시되지 않는 데이터가 있는 경우가 많습니다.
[그림1] View Profile 실행화면
[그림2] 숨겨진 응답값 확인
[그림3] 문제풀이 결과
3번 문제 소개
우리가 작업 중인 애플리케이션은 프로필에 관한 한 RESTful 패턴을 따르고 있는 것 같습니다. 많은 앱에는 권한이 상승된 사용자가 다른 사용자의 콘텐츠에 액세스할 수 있는 역할이 있습니다. 이 경우 사용자의 세션/인증 데이터로는 누구의 프로필을 보려는지 알 수 없으므로 /profile만으로는 작동하지 않습니다.
RESTful은 Representational State Transfer의 약자로, 웹 서비스를 구축하는 데 사용되는 소프트웨어 아키텍처 스타일입니다. RESTful은 HTTP 프로토콜을 기반으로 클라이언트와 서버 간의 통신을 위한 웹 서비스를 설계하는 데 사용됩니다.
[그림1] 문제화면
문제 내용 그대로 패턴을 추측하여 직접 접근을 통해 문제를 푸는 방식으로 이전 “문제2”에서 볼 수 있는 "userId"를 통해 직접 접근을 수행하면 아래 [그림2]와 같은 메세지를 확인할 수 있습니다.
[그림2] userId를 통한 직접 접근
입력창에 “WebGoat/IDOR/profile/2342384"을 입력하면 문제를 풀 수 있게됩니다.
[그림3] 문제풀이 결과
4번 문제 소개
문제 내용 그대로 다른 사용자의 프로필을 확인하고 수정하는 문제입니다. “View Profile” 버튼을 클릭하면 잘못된 URL을 전달하여 오류가 발생하게 됩니다. URL에나와 있는 문자열 그대로 “userId”로 변경하여 요청을 수행해야 합니다.
[그림1] 문제화면
[그림2] 오류발생 화면
[그림3] userId 요청 화면
다른 사람의 프로필을 보기 위해서는 사용자를 식별하는 “userId”를 순차적 대입 공격을 수행하여 다른 사용자 프로필 접근을 수행합니다.
[그림4] 무차별 대입 설정
순차적으로 userId를 증가시키면 존재하지 않는 사용자는 “500”값을 응답받지만 존재하는 userId는 “200” 값을 받게됩니다. 최종적으로 “2342388” 값을 가진 유저가 존재하는것을 확인할 수 있습니다.
[그림5] userId 확인
찾아낸 “2342388” 값을 사용하여 요청을 수행하면 “output” 파라미터가 나오게 되고 이를 수정해야 하는 문제로 판단됩니다.
[그림6] 프로필 수정화면
[그림7] 프로필 요청
“OPTIONS” 매소드를 사용하여 요청을 보내면 “PUT” 매소드가 허용된 상태인 것을 확인할 수 있습니다.
[그림8] OPTIONS 매소드 호출 결과
PUT 매소드를 사용하여 요청을 보내면서 반응을 확인하면 “color”과 “role”을 수정해야 하는것을 확인할 수 있습니다.
PUT /WebGoat/IDOR/profile/2342388 HTTP/1.1 Host: 192.168.0.9:8080 Content-Type: application/json Content-Length: 84 Cookie: JSESSIONID=NxdK0LigUJIJEGXyTX4xbXSlKKR5hu64M454Uu5d {"role":3, "color":"brown", "size":"large", "name":"Buffalo Bill", "userId":2342388}
[표1] 공격 코드
[그림9] 색깔 변경
최종적으로 “role” 값을 1로 변경하고 “color” 값을 red로 변경하면 문제를 풀 수 있게됩니다.
[그림10] 최종 요청
[그림10] 문제풀이 결과
'웹애플리케이션 해킹 > 해킹 실습하기' 카테고리의 다른 글
(A2) Cryptographic Failures- Crypto Basics (0) 2023.09.29 (A1) Broken Access Control - Missing Function Level Access Control (0) 2023.09.29 (A1) Broken Access Control - Hijack a session (0) 2023.09.29 WebGoat 소개 (0) 2023.09.29 모의해킹 학습 플랫폼 종류 (0) 2023.09.29 다음글이 없습니다.이전글이 없습니다.댓글