WebGoat(웹고트) LAB: Role Based Access Control Stage1

WebGoat(웹고트) LAB: Role Based Access Control

Stage 1 : Bypass Presentational Layer Access Control

 

 

(1) Window xp에서 http://victim:8080/WebGoat/attack 사이트로 이동하여 목록에서 LAB: Role Based Access Control - Stage1을 찾아 이동합니다. (webgoat / webgoat)

 

(2) Tom Cat으로 로그인합니다.  (비밀번호: tom)

 

(3) Jerry Mouse로 로그인합니다. (비밀번호: jerry)

=> Tom은 employee라는 그룹에 속해있고, Jerry는 hr이라는 그룹에 속해있습니다.

=> 역할에 따라 할 수 있는 업무(기능)가 달라집니다.

=> Tom 사용자가 제공되지 않는 기능을 요청할 수 없을까? 버튼이 없는데 CreateProfile이나 DeleteProfile을 할 수 없을까?

 

(4) 서버로 전송되는 값을 보기위해 Proxy를 사용합니다.

(4)-1 Proxy에서 Intercept is on으로 설정해주고 Tom에서 Search Staff를 클릭합니다.

=> employee_id=105 & action=SearchStaff

 

(4)-2 Proxy에서 Intercept is on으로 설정해주고 Jerry를 입력하고 FindProfile을 클릭합니다.

=> search_name=Jerry&action=FindProfile

 

(4)-3 List Staff를 눌러 메인으로 돌아가서 Proxy에서 Intercept is on으로 설정해주고 ViewProfile을 클릭합니다.

=> employee_id=105 & action=ViewProfile

 

(4)-4 Proxy에서 Intercept is on으로 설정해주고 EditProfile을 클릭합니다.

=> employee_id=105 & action=EditProfile

 

(4)-1 ~ (4)-4까지 보면 기능 버튼의 라벨명이 action 요청 파라미터의 값으로 전달되는 것을 확인할 수 있습니다.

=> action=버튼명

 

(4)-5 (4)-4 페이지에서 EditPorofile을 DeleteProfile로 바꾸고 Intercept is off로 설정합니다.

 

(5) 실행결과

=> 미션 성공

=> 화면에 버튼이 보이지 않더라도 각각의 동작들을 분석해야합니다. 어떤 주소로 가는지, 어떤 매개변수를 받는지를 분석하여 화면에 안보이는 기능을 의미하는 단어들을 넣어봐야합니다. 이렇게 넣어봤을 때, 그 기능이 동작한다면 접근통제 취약점을 가지고 있는 것입니다. 

=> 원인은 서버 사이드에서 요청이 들어왔을 때, 해당 사용자가 권한이 있는지를 확인하지 않고 무조건 요청을 처리했기 때문에 발생하는 것입니다. 일반적인 사용자는 화면에 기능 버튼이 없으면 요청을 할 수 없지만, 공격자는 URL 주소의 패턴, 요청 파라미터의 패턴을 분석해서 예상되는 행위를 유발하는 값을 요청 파라미터에 포함시켜서 서버를 호출할 수 있습니다. 

=> 즉, 서버는 요청이 들어오면 무조건 처리하는 것이 아니라 요청한 사용자가 권한이 있는지 없는지를 확인해야합니다.