* 인증(Authentication) : 사용자 자신이 주장하는 본인이 맞는지 확인하는 작업.
- 인증과정에서 발생하는 취약점.
- 인증 절차를 우회하는 공격.
* 인가(Authorization) : 특정 권한을 부여하는 것. (접근할 수 있는 리소스 권한)
- 원래 못해야 하는 것을 하는 것.
- IDOR(Insecure Direct Object Reference) 취약점 -> 파라미터 변조 / URL 직접 접근
* Authentication Vuln Case
1. 클라이언트 측 정보(쿠키)를 통해 인증하는 경우
- 클라이언트 측 정보로 인증하는 장소에서 발생
Get Admin
해당 문제에 접속하여 주어진 계정으로 로그인해 보니서버에서 로그인한 사용자의 ID 값을 평문으로쿠키 값에 세팅하여 주는 것을 볼 수 있다.이후 클라이언트가 서버와 소통할 때,서버에서 받
velvetviolet1024.tistory.com
2. Process 건너뛰기
- 인증 절차를 건너뛰고 직접 접근하는 케이스
if 회원가입 절차에서
(1) 약관 동의
(2) 본인인증
(3) 회원가입
(1), (2) 번 절차를 무시하고 회원가입 페이지로 접근할 수 있는 경우
본인인증 절차를 건너뛰었기 때문에 인증 취약점으로 설명할 수 있다.
혹은 회원가입 페이지에 접속한 것은 인증 취약점으로, 회원가입을 진행한 것은 인가 취약점으로 설명할 수 있다.
해당 케이스에서 더 본질적인 것은 인증에서 발생한 취약점인 것 같다.
PIN CODE Bypass
문제에 접속해 보니발사 버튼이 있어 눌러보았다.버튼을 누르자 step1.php 로 이동되면서,관리자인 경우에만 진행하라고 한다.확인을 눌러주었다.이번엔 step2.php 로 이동되면서,비밀번호를 입력하
velvetviolet1024.tistory.com
3. 파라미터 응답 값 변조
- 웹 개발 시, 로직 동작 구조가 잘 못 됐을 경우에 발생함
- 모바일 앱에서 자주 발생하는 취약점
- 서버에서 주는 응답을 분기로 동작하는 모바일 앱의 경우 발생
Admin is Mine
문제 접속 후주어진 계정으로 로그인해 보았다.loginProc.php 페이지를 통해사용자 인증 성공 시,서버에서 JSON 형태로 result:ok 값을 응답하고,클라이언트가 index.php 페이지를 요청하면서 index.php 페
velvetviolet1024.tistory.com
4. 인증 횟수 제한 X
- Brute Force 공격 가능
- 비밀번호 입력 횟수 제한 등
Pin Code Crack
문제 접속 시,로그인 버튼이 있고로그인 버튼을 누르면관리자의 번호로 예상되는 전화번호에 전송된 PIN Code 숫자 4자리를 입력해서 인증하라고 한다.PIN Code 값에 아무 값(1234)을 넣어 통신 로그
velvetviolet1024.tistory.com
* Authorization Vuln Case
1. 주석, css, js를 통해 접근 제한하는 경우
- 권한이 없는 기능을 주석 처리해 놓은 경우
- 권한이 없는 기능을 css를 통해 display:none; 처리해 놓은 경우
- 두 경우 모두 클라이언트 측에서 기능이 안 보이게만 설정해 놓은 것으로 css를 수정하거나 주석을 풀면 권한을 우회하여 기능에 접근할 수 있다.
authorization 1
step 1) 주어진 계정으로 로그인한다. step 2) 미사일 발사 버튼은 관리자만 이용 가능하다고 한다. step 3) index.php 페이지 요청·응답 패킷 확인 시, 발사 버튼이 주석처리 돼 있는 것을 발견할 수 있
velvetviolet1024.tistory.com
2. 클라이언트 측에서 인가 체크를 하고 있는 경우
- 모든 확인·검증·검사는 클라이언트에서 하는 것이 아니라 서버에서 진행해야 함.
- 아래의 예시 문제에 경우에도 메인페이지와 함께 로드된 js 파일에 있는 함수에서 즉, 클라이언트 측에서 권한을 검증했기 때문에 문제가 발생했다.
- 권한 검증이 서버가 아닌 클라이언트에서 진행되는 경우, 자바스크립트가 클라이언트 어디에서 실행되는지 추적할 수 있어야 한다.
- 간혹 클라이언트에서 진행해도 되는 검사의 경우, 회원가입 시에 이메일 형식을 확인·체크하는 정도의 편의성에 관련된 것이다.
authorization 2
step 1) 주어진 계정으로 로그인 후, 메인 페이지에서 미사일 발사 버튼을 확인할 수 있다. step 2) 발사 버튼 클릭 시, 권한이 없다는 알림창을 확인할 수 있다. step 3) 해당 알림창을 추적해 보니,
velvetviolet1024.tistory.com
authorization 3
step 1) 주어진 계정으로 로그인 후, 메인 페이지에서 미사일 발사 버튼을 확인할 수 있다. step 2) 발사 버튼 클릭 시, 권한이 없다는 알림창을 확인할 수 있다. step 3) 해당 알림창을 추적해 보니
velvetviolet1024.tistory.com
3. guessing 공격
- 아래 문제와 같이 게시글을 읽는 notice_read.php 페이지의 이름을 통해
- 글을 작성하는 notice_write.php 페이지의 이름을 유추하여
- 글을 작성할 수 있는 권한이 없지만 글 작성 페이지에 다이렉트로 접근할 수 있는 경우가 있다.
authorization 4
step 1) 주어진 계정으로 로그인 후, 글을 작성하기 위해 공지사항에 접속한다. step 2) 공지사항 페이지 확인 시, 글쓰기 버튼이 보이지 않는다. 일단 관리자가 작성한 공지사항에 접근해 봤다. ste
velvetviolet1024.tistory.com
4. 파라미터 변조
- 서버에 전달되는 파라미터 값을 변조하여 얻을 수 없는 정보를 가져올 수 있는 경우가 있다.
- read.php?id=10 // 읽기 권한이 없는 글을 읽을 수 있는가?
- update.php?id=10 // 다른 사용자가 작성한 글을 수정할 수 있는가?
- delete.php?id=10 // 다른 사용자가 작성한 글이 삭제되는가?
authorization 5
step 1) 주어진 계정으로 로그인 후, 공지글을 확인하기 위해 공지사항에 접속한다. step 2) 공지사항에 접속해 보니, 관리자 계정이 작성한 글을 확인할 수 있었다. step 3) 해당 게시글에 접근 시,
velvetviolet1024.tistory.com
authorization 6
step 1) 주어진 계정으로 로그인 후, 개인 정보를 확인할 수 있는 마이페이지에 접속했다. step 2) 마이페이지에서는 파라미터로 사용자 계정 이름을 받고 있었다. step 3) 해당 파라미터에 관리자
velvetviolet1024.tistory.com
'Web App > Theory' 카테고리의 다른 글
| Web Cache Deception (0) | 2024.08.04 |
|---|---|
| File Download Vuln (2) | 2024.07.28 |
| LFI(Local File Include) Vuln (1) | 2024.07.26 |
| File Upload ByPass (0) | 2024.07.26 |
| Web Cache Poisoning (0) | 2024.07.22 |