[1]Introduction
인증(Athentication)이란?
-그 사람이 본인이 맞는지 확인하는 작업
>인증 취약점: 인증 과정에서 일어나는 취약점으로 인증을 무시하는 공격 등을 뜻합니다.
인가(Athorization)이란?
-특정 권한을 부여하는 것
>인가 취약점: 원래는 못해야하는 것을 하는 것
인증 취약점과 인가 취약점에 대한 구분
-인증 취약점과 인가 취약점은 각각의 정의가 분명히 다르지만 결과적으로 보았을 때 둘 다 해당되는 경우가 꽤 많습니다. 예를 들어 비밀번호를 입력 후 접근할 수 있는 페이지에서 어떠한 기능을 추가적으로 수행했다면 인증 없이 직접 페이지에 접근하여 우회하였다면 이는 '원래는 못해야하는 것을 하는 것'과 '접근할 수 있는 대상 본인이 맞는지 확인하지 않고 접근한 것' 두 가지 모두 해당하므로 이는 두 취약점으로 모두 설명할 수 있습니다. 물론 '우회해 접근한 것'은 인증, '추가적인 기능을 수행한 것'은 인가 취약점으로 구분할 수 있습니다.
[2-1]Athentication vulnerability
인증 취약점의 종류
- Cookie를 통해 인증하는 케이스(클라이언트 측 정보를 이용하는 케이스): 예를 들어 쿠키 값에 User: guest를 저장하여 이를 통해 인증과정을 구현한 경우, User: admin으로 변조 후 전송하여 인증을 우회할 수 있습니다.
- Process jump 케이스: 인증 후 접근되는 페이지를 인증 하기 전에 직접 접근하여 인증을 우회하는 경우입니다. 예를 들어 (1)약관 동의 - (2)본인 인증 - (3)회원 가입 으로 총 3단계를 걸친 프로세스가 존재하는 페이지에서 약관 동의 후 회원 가입 페이지로 바로 접근이 가능하다면 이는 Process jump 케이스에 해당합니다.
- Parameter 응답값 변조로 인증이 우회되는 케이스: 이는 잘못된 로직이지만 인증 유무 확인 후 추후에 응답값으로 인증 허가 유무가 되는 어떠한 값을 받는다면 이를 변조하여 인증이 우회될 수 있습니다.
- 인증 횟수 제한이 없는 케이스: Brute force 공격등을 이용하여 인증이 우회될 수 있습니다.
[2-2]Athorization vulnerability
인가 취약점의 종류
- 주석으로 접근만 막아놓은 케이스: 수행하면 안되는 기능을 클라이언트 스크립트의 주석으로만 막아놓는다면 이는 주석만 제거하여 실행 가능합니다. 비슷한 예시로 CSS의 display: none 속성 역시 클라이언트 단에서 수정이 가능하므로 취약합니다.
- 인가 확인을 클라이언트 측에서 하는 경우: javascript 등을 이용하여 파일 확장자나 비밀번호 등을 검사하는 로직이 이 취약점에 해당합니다. 이 경우 실행되는 스크립트로 접근하고 해석하여 로직을 분석 후 우회할 수 있습니다.
- Parameter 값 변조로 인가 취약점이 발생하는 케이스: id 파라미터 값으로 게시글을 구분하여 삭제 기능을 수행하는 delete.php가 있다고 했을 때, 삭제 요청을 보내는 순간 패킷을 burpsuite 등을 통해 잡고 id 값을 변조 후 요청을 보내는 경우 다른 사람의 글이 삭제된다면 이는 인가 취약점이 발생하는 케이스입니다.
- guessing 공격으로 인가 취약점이 발생하는 케이스
guessing이란?
-사용자가 비밀번호, 인증 토큰, 세션 ID 등과 같은 보안 자격 증명을 추측하거나 맞추려고 시도하는 공격 방법을 의미합니다. 무차별 대입공격, 딕셔너리 어택, credential stuffing 등이 이에 속할 수 있습니다. 예를 들어 파일을 관리하는 디렉터리가 fpath 되어 있다면 파일을 찾는 엔드포인트는 fsearch일 것 같아 시도하여 노출이 되지 않은 엔드포인트를 찾는 등 굉장히 광범위한 공격입니다.
'knowledge > web' 카테고리의 다른 글
NO-SQL Injection (1) | 2024.12.14 |
---|---|
File vulnerability (0) | 2024.07.29 |
Cross-Site-Script (0) | 2024.06.13 |
SQL Injection (0) | 2024.05.09 |
Solar, exploiting log4j - Tryhackme (0) | 2024.04.29 |