인증 / 인가 취약점
인증(Authentication)
그 사람 본인이 맞는지 확인하는 작업
<취약한 부분>
- 인증 과정에서 일어나는 취약점
- 인증을 무시하는 공격
인증 과정이 허술하게 이루어져 있으면 인증 취약점이 발생할 수 있다.
1. 쿠키를 통해 인증하는 케이스
- 클라이언트 측 정보를 이용하여 인증을 하는 케이스
쿠키가 클라이언트 측에서 저장이 되기 때문에 사용자가 이를 수정할 수 있다는 문제점이 있다.
2. Process 점프
- 직접 접근(direct)
- 본인 인증
인증 과정을 거치지 않고 바로 인가를 받는 케이스
약관 동의 - 본인 인증 - 회원가입 순으로 진행되는 process의 경우 본인인증을 뛰어 넘고 바로 회원가입을 진행하는 취약점이 존재한다.
3. 파라미터 응답값 변조
쿠키, url 등 서버에 파라미터로 전송하는 값을 변경하여 인증을 우회하는 케이스
4. 인증 횟수 제한 X
무작위 대입 공격에 취약(Brute Force)
검증 횟수에 제한을 두지 않아 무작위 대입 공격이 가능함
https://protruser.tistory.com/25
[CTF] Pin Code Crack 풀이
0. 문제 탐색아래의 이미지와 같이 PIN Code를 알아내 인가를 받는 문제였다. 4자리 PIN Code를 입력하는 횟수에는 제한이 없었다. 웹 브라우저가 새로 열릴때, 정답인 PIN Code가 변경될 수 있다는 점을
protruser.tistory.com
인가(Authorization)
클라이언트에게 특정 권한을 부여하는 것
<취약한 부분>
- 권한 없이 실행
- 직접 접근
1. 주석으로 접근 제한
- Burp Suite를 통해 클라이언트 측에서 주석을 제거하여 접근할 수 있음
2. 클라이언트 측 인가 체크
- javascript에서 파일 확장자를 검증하는 경우
권한 여부를 검사할 때, 권한이 없다고 응답이 뜰 경우 - 서버에서 응답이 오는 것이 아니라면 클라이언트 측(웹 브라우저에서 실행하는 자바스크립트)에서 응답을 하는 것임. 따라서 코드 값을 수정하여 권한을 획득할 수 있는 취약점이 존재
3. Guessing 공격
눈에 보이지 않는 공격
공격자가 직접 파일명, 파라미터 명을 유추하여 공격을 진행하는 방법
예시)
board_delete.php - 게시판 삭제
board_update.php - 게시판 업데이트
직접 접근할 수 없는 경우 파일명을 유추하여 공격을 진행할 수 있다.
4. 파라미터 변조
쿠키, url 등 파라미터를 변조하여 인가를 받을 수 있다.