Oh! JUN

[WebGoat] Insecure Direct Object References - 3 본문

웹 해킹/Broken Access Control

[WebGoat] Insecure Direct Object References - 3

Kwon Oh! JUN 2023. 12. 19. 16:18


패턴을 가지고 놀기

다른 프로필 보기

자신의 프로필을 보는 데 이미 사용한 대체 경로를 사용하여 다른 사람의 프로필을 봅니다. '프로필 보기' 버튼을 사용하여 다른 프로필 보기 요청을 차단/수정하세요. 또는 브라우저에서 수동 GET 요청을 사용할 수도 있습니다.

다른 프로필 편집

이전 앱은 다른 패턴을 따를 수 있지만 RESTful 앱(여기서 설명하는 내용)은 종종 다른 기능을 수행하기 위해 메서드를 변경하고 본문을 포함할지 여부를 변경합니다.

해당 지식을 사용하여 동일한 기본 요청을 받고 해당 요청의 메서드, 경로 및 본문(페이로드)을 변경하여 다른 사용자(Buffalo Bill)의 프로필을 수정합니다. 역할을 더 낮은 것으로 변경합니다(권한이 높은 역할과 사용자는 일반적으로 숫자가 낮기 때문). 또한 사용자의 색상을 '빨간색'으로 변경합니다.


첫 번째 문제는 

'2342384' 자신의 프로필 번호가 아닌 다른 프로필 번호를 찾으면 됩니다.

 

실전과 같은 훈련(?)을 위해서는 1~9999999으로 카운트해서 찾아보겠지만,

이 문제에서는 2342830 ~ 2342839까지 1의 자리만 변경해서

자신의 프로필이 아닌 다른사람의 프로필을 찾아보겠습니다.


/WebGoat/IDOR/profile/2342384 요청부분 

ctrl+i 단축키 눌러서 intruder로 보내줍니다.

 

234238'4' 4을 ADD $ 해주고

상단의 payloads로 넘어갑니다.


숫자만 변경할거니까

Payload type을 Numbers로 변경해줍니다.

 

일의 자리를 0~9까지 변경하고 1씩 증가시켜줄거니까 

From : 0 

To : 9

Step : 1

 

오른쪽 상단의 

'Start attack'


234238'4'는 자신의 프로필 번호니까

234238'8'이 타인의 프로필 번호입니다.


234238'8'의 response 살펴보면

{role=3, color=brown, size=large, name=Buffalo Bill, userId=2342388}

확인할 수 있습니다.


burp  잡고 '2342388'로 보내주면 문제가 해결됩니다.


두번째 문제는 

 

해당 지식을 사용하여 동일한 기본 요청을 받고 해당 요청의 메서드, 경로 및 본문(페이로드)을 변경하여 다른 사용자(Buffalo Bill)의 프로필을 수정합니다. 역할을 더 낮은 것으로 변경합니다(권한이 높은 역할과 사용자는 일반적으로 숫자가 낮기 때문). 또한 사용자의 색상을 '빨간색'으로 변경합니다.


요청하여 데이터를 변경시키기 위해서는 

PUT 메소드와 JSON 형태임을 인지해야합니다.

 

이전 문제에서

프로필 정보를 JSON 형태로 

요청하고 가져왔습니다.

 

[WebGoat] Insecure Direct Object References - 1

먼저 인증하고 나중에 악용 승인 많은 액세스 제어 문제는 인증되었지만 권한이 없는 사용자의 공격에 취약합니다. 그럼 본격적으로 인증을 시작해 보겠습니다. 그런 다음 인증을 우회하거나

securitystudy.tistory.com


 

PUT 메소드와

 

Content-Type: application/json

 

JSON 값 :

{"role":1,
"color":"red",
"size":"small",
"name":"Tom Cat",
"userId":"2342388"}

 

변경해서 요청하면 조건에 맞게 데이터를 변경시킬 수 있습니다.