본문 바로가기
3. 웹 애플리케이션 취약점 진단/비박스를 활용한 웹 애플리케이션 취약점 진단

[비박스를 활용한 웹 취약점 진단] 6.세션 관리 취약점 [관리자 페이지 접근]

by Robert8478 2023. 12. 13.

세션이란? - 웹 사이트에서 서비스 제공 시 사용자의 로그인을 유지하기 위해 사용한다.
세션 관리가 소홀하게 되면 세션을 가로채서 재사용할 수 있게 된다. 이는 심각한 정보 노출로 연결될 수 있다.
실무에서 자주 발생하지는 않지만 위험한 취약점으로 정상적인 프로세스가 진행되는 과정에서 발생하는 만큼, 자동 진단 도구에서도 특정한 패턴 매칭으로 도출할 수 없는 취약점이다.

이번 페이지에서 관리자 권한을 체크하는 전달 값을 수정해서 관리자 인증 없이 내부 페이지에 접근 가능한지 점검해보자.

[난이도 하]

URL 주소창을 보면 admin 값이 0으로 되어있는데 간단하게 1로 변경해보자.

바로 클리어 되었다. 이처럼 단순한 URL 조작 만으로도 공격이 가능하므로 전달되는 값을 잘 살펴보아야 한다.

[난이도 중]

쿠키값을 확인해보라는 힌트가 있어 버프슈트로 확인해 보았다. 그랬더니 맨 뒤에 admin=0 이라는 쿠키값이 있다.

변수 admin의 쿠키값을 1로 변경한뒤 Forward 시키자.

그런 결과 쿠키를 변조함으로써 클리어했다. 쿠키값에 admin, security_level 같은 권한과 관련된 단어들이 변수로 노출되면 위험할 수 있다.

[난이도 상]

난이도 상으로 갔더니 바로 클리어가 뜬다. 그 이유를 보기 위해 php 코드를 살펴보았다.

보았더니 admin 변수 값이 1이고 admin 계정의 세션 값을 가지고 있어야 패스가 된다. 즉, admin 계정으로 로그인 해야 잠금이 해제되는 것이다. 이렇게 된 경우 admin의 세션값을 획득하고 admin의 변수값을 수정할 수 있는 상황이거나 admin의 계정을 알고 있는것이 아니라면 우회하기가 힘들어 지게 되는 것이다.