R's Hacking Daily Log

Access Control - Lab (2) 본문

Port Swigger/Command Injection

Access Control - Lab (2)

hanhxx 2023. 6. 13. 11:12

Parameter based access control methods 

Vertical access contro과 관련된 내용을 계속해서 살펴보자. 

이번에 살펴볼 Lab은 사용자의 권한을 결정하는 수단으로 Parameter를 사용하는 경우를 보여준다. 

 

 

Lab - User role controlled by request parameter )

Lab에 들어가 로그인을 하면 아래와 같은 Packet이 만들어진다. 

 

 

이에 대한 response를 살펴보니 set-cookie header로 admin이라는 쿠키가 false 값을 갖고 있는 걸 볼 수 있다.

 

 

이 쿠키가 어디에 쓰이나 봤더니 /admin 경로로 Get method를 요청할 때 사용되는 걸

packet으로 확인할 수 있다. 

 

 

admin page에 접근해 carlos 계정을 삭제하는 것이 목표임으로 false를 true로 바꿔준다.

 

 

 

admin cookie 값을 true로 수정하면 계정을 삭제하는 페이지에 접근이 가능해진다.

이때 carlos 계정을 삭제하기 위해 Delete를 누르면 

 

 

위와 같은 request가 만들어지기 때문에 이 packet의 admin cookie도 true로 바꿔줘야 한다. 

 

packet에서 수정가능한 parameter 형태로 사용자의 권한을 나타내는 값을 보내게 되면 

살펴본 바와 같이 쉽게 조작될 수 있음을 보여주는 Lab이었다. 

 

 

User role can be modified in user profile )

바로 두 번째 Lab을 살펴보자!!

wiener:peter 계정으로 로그인을 하면 Myaccount 페이지에서 email을 업데이트할 수 있는 form을 볼 수 있다.

 

 

이게 어떤 관련이 있을까 싶어 아무거나 입력해봤더니 request에서는 입력한 이메일 내용이 들어가고

 

 

response에는 변경된 email 내용과 roleid라는 parameter 값이 1로 설정되어있는 걸 볼 수 있다.

Lab에서는 admin 계정의 경우 roleid가 2라는 값을 갖는다고 한다. 

 

그렇다면 response에서 오는 roleid를 2로 변경할 방법이 없을까? 고민하다

request를 보낼 때 roleid 값을 지정해 버리면 어떻게 되는지 궁금해졌다. 

 

 

 

request에 email parameter와 roleid parameter를 입력해 보냈더니 

response에서 설정해서 보낸 roleid 값이 그대로 되돌아온 것을 볼 수 있다.

 

wiener라는 계정의 권한이 admin이 되어버린 것..!!

비록 username이 wiener인 상태이지만 Admin panel에 접근하면 

 

 

 

정상적으로 페이지에 접근 가능한 걸 볼 수 있다. 

 

첫 번째 Lab에서와 유사하게 request packet으로 전달되는 parameter를 조작함으로써

사용자의 권한을 admin으로 vertical privilege escalation 할 수 있었다.

 

 

'Port Swigger > Command Injection' 카테고리의 다른 글

OS Command Injection (3) & Lab (3)  (0) 2023.06.04
OS Command Injection (2) & Lab (2)  (0) 2023.06.03
OS Command Injection (1) - Lab (1)  (0) 2023.06.02
OS Command Injection (1)  (0) 2023.06.01
Command Injection  (0) 2022.11.17
Comments