OWASP juice shop(Broken Access Control)
수직적 권한 상승: 일반 사용자가 높은 권한의 사용자가 사용할 수 있는 권한에 액세스 하는 것(예: 인터넷 뱅킹에서 일반 사용자가 사이트 관리 시스템에 접근할 수 있음)
수평적 권한 상승: 일반 사용자가 다른 일반 사용자 권한에 액세스 하는 것(예: 인터넷 뱅킹 사용자 A가 사용자 B의 계좌에 액세스 하는 경우)
즉, Broken Access Control은 내가 가지고 있는 권한을 우회에서 다른 권한을 사용할 수 있는 것을 말한다.
OWASP juice shop은 OWASP TOP 10 취약점을 실습해볼 수 있는 사이트다. 여기에서 다운받아 실습환경을 구축할 수 있다.
juice shop은 온라인으로 주스를 주문하고 배송해주는 사이트다.
이번 실습은 Broken Access Control 취약점을 이용해 상점의 관리자 영역에 접근하는 것이다.
administration 페이지에 접근하니 권한이 없다고 나온다.
burp suite로 데이터를 조작해 administration 페이지에 접근할 수 있는 데이터는 token뿐인 것 같다. 하지만 admin 계정의 token이 없어 다른 방법을 시도해본다.
페이지를 살펴보던 중 juice Review에 admin 계정으로 보이는 id가 보였다.
남은 패스워드를 찾기 위해 개발자 도구에서 정보를 수집해본다.
개발자 도구에 Souce 기능에서 main.js 파일을 살펴보던중 아까 administration 경로가 나왔다.
admin 키워드로 검색해보던중 admin관련 password가 나왔고, 패스워드에 대한 힌트가 몇개 주어진다.
admin123 부분에서 "Just one more digit" 힌트가 주어진걸로 보아 admin123이 최종 password인 것 같다.
취득한 패스워드 계정으로 로그인이 되었다.
이제 administration 페이지로 이동하면 관리자 페이지가 잘 나온다.
방어 대책:
1. main.js에 admin계정 정보가 노출되지 않도록 수정
2. admin계정이 노출되더라도 방화벽 또는 웹 서버 설정으로 admin페이지는 인트라넷에서만 접근하도록 허용
3. 관리자 페이지를 디렉토리 무차별 공격을 당해도 노출되지 않게 예상하지 못하는 페이지로 변경
4. 관리자 패스워드 대소문자, 소문자, 숫자, 문자를 사용해서 더 복잡하게 설정(admin id도 마찬가지)