관리자 페이지 인증 우회
- 종종 관리자 페이지는 admin, admin.php, admin.jsp등과 같이 쉽게 추측 가능한 URL로 되어있음(manager, system도 있음)
ㄴ DirBuster같은 자동화 툴을 이용해 URL을 쉽게 찾을 수 있음
- 정상적인 웹의 경우 사용자가 이러한 관리자 페이지에 접근 시 해당 사용자가 관리자 권한이 있는지 확인
- 실습은 관리자 URL을 직접 요청하여 관리자 메뉴에 접속하는 것
ㄴ 단순히 URL을 추측하여 입력함으로써(정보 수집 과정에서 관리자URL 경로를 알아낼 수도 있음)
디렉터리 트래버설 취약점 공격 실습
- 웹의 파라미터 중 파일 경로를 값으로 지정할 수도 있는데, 이 경우 공격자가 해당 파일의 경로를 조작하여 개발자가 의도하지 않은 경로에 있는 파일이 지정되도록 시도하는 것
ㄴ 리눅스는 ../../../etc/와 같은 방법으로 루트 디렉터리를 거쳐 다른 디렉터리 지정이 가능해져 호스트 내부의 모든 파일에 접근하는 것이 가능해짐(디렉터리 트래버설 취약점)
- 실습은 디렉터리 트래버설 공격으로 호스트 내부 파일의 내용 확인
ㄴ 실습 페이지 URL을 보면 page 파라미터에 message.txt가 지정되어 전달되고 있음
ㄴ page 파라미터에 지정 파일인 message.txt 파일의 내용을 웹페이지에 출력해주는 페이지
ㄴ 직접 접근시에도 현재 페이지에 뜨는 문자열이 동일하게 표시됨
- ../../../를 사용하여 etc/passwd 파일을 확인했다. //상대경로
- /etc/passwd //절대경로
ㄴ 루트의 상위 디렉터리는 루트 디렉터리이므로 만약 현재 경로 파일이 어려울 때는 ../를 많이 입력해도 됨
+Medium Level
- 디렉터리 트래버설 공격이 감지되었다고 뜸
ㄴ 소스코드 확인 시 상대경로는 무력화 시키는 코드가 있어 오류가 나지만, 절대경로로 입력 시 결과가 뜸
+High Level
- 소스코드 확인 시 Base_path와 User_path가 동일하지 않아 오류가 발생했다는 메시지가 뜸
접근 통제 취약점 공격 대응 방안
- IDOR 공격 대응
ㄴ 웹은 사용자로부터 전달되는 모든 입력값을 신뢰해서는 안됨
ㄴ 사용자 입력값이 원래의 의도대로 전달된 정상적 값인지 입력값 검증을 해야함 (ex. 화이트리스트 검증)
ㄴ 클라이언트부터 전달받을 필요 없는 정보는 웹 내부에서 직접 설정해 파라미터
- 관리자 페이지 우회 공격 대응
ㄴ 서버측 제공 기능은 사용자가 해당 기능 실행이 가능한 권한이 있는지 확인하는 루틴이 구현되어야 함
ㄴ /admin/과 같이 쉽게 추측 가능한 디렉터리 사용을 지양해야 함
ㄴ 외부적 특정 IP범위를 지정하여, 지정된 사용자만 관리자 메뉴에 접근하도록 접근통제를 구축함
- 디렉터리 트래버설 공격 대응
ㄴ IDOR공격 대응처럼 적절한 입력값 검증 수행
ㄴ 화이트리스트 검증이 불가능한 경우 ../와 같은 문자열을 차단하는 블랙리스트 검증을 사용