-
인증 / 인가 [16주차]모의해킹스터디5기(feat.Normaltic) 2024. 3. 1. 18:56
오늘은 드디어 SQL, XSS, CSRF, File Upload/download에 이어 마지막 5번째 공격 기법, 인증/인가 취약점에 대해 정리해본다. 물론 공격 기법이 이외에도 더 많이 존재하긴 하지만 대표적인 5개의 기법에서 파생된다고 봐도 무방하다. 사실 인증/인가 취약점은 첫 수업 시간때부터 조금씩 등장해서 그렇게 새롭게 느껴지지 않을 수 있다. 이미 알고 있는 부분들도 있을 텐데 정리하는 시간이니까 한 번 훑어보도록 하겠다.
인증 / 인가
인증(Authentication) : 그 사람이 본인이 맞는지 확인하는 작업
- 인증을 무시하거나 우회하는 등 인증 과정에서 일어나는 모든 취약점을 말한다.
- ex) 로그인 인증, 본인 인증, 2차 인증, 이메일 인증 등
인가(Authorization) : 특정 권한을 부여하는 것
- 원래는 할 수 없는 것들을 할 수 있게 하는 취약점을 말한다.
- 파라미터 변조 혹은 로직의 허점을 이용한다.
인증 취약점
1. Cookie 변조
- 웹 페이지 중에 cookie값을 통해 인증하는 경우가 있다.
- 클라이언트 측의 정보는 수정할 수 있으므로 이 때 user를 변경하면 해당 계정으로 로그인이 가능하게 된다.
2. process 점프
- 직접 접근 / direct 접근
- 정해진 절차가 있는데 이를 무시하고 다음 단계의 주소를 알아내 건너뛰는 방법이다.
- 회원가입에서 자주 나오는 취약점이다.
- (1) 약관동의
(2) 본인인증- (3) 회원가입
- ex) step1.php -> step2.php -> step3.php 단계로 나뉠 때, step1,2를 건너뛰고 바로 step3.php 의 주소로 직접 접근하는 방법
3. 파라미터 응답값 변조
- 서버에서 돌아오는 응답 메시지의 값을 변조해서 인증을 우회하는 방법이다.
- 프로그래밍을 잘못한 경우로 웹페이지에서 흔한 취약점은 아니다.
- ex) 돌아오는 응답 메시지의 result 값으로 인증을 체크하는 경우, "fail"을 "success"로 바꿔주면 우회 가능.
4. 인증 횟수 제한 X
- 인증 횟수 제한을 걸어두지 않는 경우도 취약점에 속한다.
- Brute Force(무작위 대입 공격)로 비밀번호를 알아낼 수 있기 때문.
- ex) pincode 문제 때 사용했던 코드
import requests url = '인증 우회하려는 페이지?otpNum=' //비밀번호 자릿수(4자리) for i in range(0,10000): num = str(i).zfill(4) openUrl = url + num print("["+num+"]") response = requests.get(openUrl) //실패 시 문구 특정 if "Login Fail..." in response.text[0:40]: continue //성공 시 else: url = url + num break //비밀번호 출력 print("PIN code : ["+url[-4:]+"]") print("url : ["+url+"]")
인가 취약점
1. 주석으로 남겨진 페이지
- 페이지 수정 시 주석으로 페이지의 정보들을 남겨두는 경우가 있는데, 그 중에서 url과 같은 정보를 남기는 취약점에 해당한다.
- 정보들을 통해 접근 불가능한 페이지에 접근이 가능하다.
2. 클라이언트 측의 인가 체크(JS)
- 클라이언트 측 코드로 인가 체크하는 모든 경우를 말한다.
- 이 경우 인가하는 로직의 코드 전체를 볼 수 있으니 우회할 방법을 찾기 쉽다.
- ex) javascript로 파일 확장자를 검증하는 경우
3. Guessing 공격
- 추측하는 공격, 실제로 있을 법한 페이지 주소나 파라미터, 비밀번호 등 유추할 수 있는 것들을 추측해서 대입하는 공격.
- 실무에서는 은근히 많은 도움이 된다고 한다.
- 경력이 많은 사람들이 주로 사용하다.
4. 파라미터 변조
- 파라미터 변조를 통해 다른 계정의 권한을 획득할 수 있는 취약점이다.
- 1:1 문의게시판이나 비밀글 등 본인 외에는 접근할 수 없는 글을 열람하거나 수정, 삭제하는 것이 가능할 수 있다.
'모의해킹스터디5기(feat.Normaltic)' 카테고리의 다른 글
File Include / File Download [15주차] (0) 2024.02.21 File Upload [14주차] (0) 2024.02.12 CSRF 마무리 / DDoS [13주차] (0) 2024.02.06 CSRF(Cross Site Request Forgery) [12주차] (0) 2024.01.29 XSS 정리 / Client Script 활용 방법[11주차] (0) 2024.01.16