본문 바로가기

Education/[AWS] Cloud Hacking

[AWS] Chapter6. 인증 및 API 진단

1. 인증 및 인가 서비스 Cognito


01 개요
AWS Cognito
- 웹 및 모바일 앱에 대해 인증, 권한 부여 및 사용자 관리 제공
- 사용자는 로그인하기 위해 아이디/비밀번호 또는 Google, Facebook 등의 권한 부여자를 통해 로그인

02. 취약점 발생 원리
비밀번호 오류횟수 제한
- 비밀번호 오류횟수 제한 로직이 존재하지 않아 무작위대입 공격을 통해 타 사용자 비밀번호 획득 가능한 취약점
- 금융위원고시 전자금융감독규정 - 비밀번호 5회 실패 시 계정을 잠그고 비밀번호 재부여 또는 초기화 지시
- Cognito는 임시 잠금 기능을 통해 일부 대응

참 고
로그인 시도의 실패는 5회까지 허용되며 그 후의 각 실패에 대해서는 1초부터 시작하여 약 15분까지 두 배씩 기하급수적으로 증가한 시간만큼 임시 잠금 상태가 됩니다. 임시 잠금 시간 동안의 시도는 무시됩니다. 임시 잠금 시간이 지난 후 다음 시도가 실패하면 새 임시 잠금 시간은 마지막 시간의 두 배로 시작됩니다. 시도하지 않고 15분 정도 기다리면 임시 잠금도 재설정됩니다. 이 동작은 변경될 수 있습니다.

- DynamoDB, Lambda 등 다른 서비스와 결합하여 로그인 시도 테이블 관리 및 제한 설정

04. 보안대책
인증 전,후 트리거 설정
- 인증 시 트리거를 동작하도록 하여 로그인 시도 횟수 관리
- 일정 횟수 이상이 되면 로그인 차단 후 비밀번호 재설정 유도
- 성공적으로 로그인했다면 로그인 시도 횟수 초기화

 

2. HTTPS 프로토콜 설정 미흡


01. 개요
취약한 HTTPS 프로토콜 이용
- 취약한 버전 암호 프로토콜 사용 시 암호화된 통신 내용이 유출될 수 있어 취약한 버전의 SSL(SSL 2.0, 3.0) 사용 여부 점검

취약한 HTTPS 암호 알고리즘 이용
- 보안 강도가 낮은 암호 알로리즘 사용 시 가옫가 낮은 알고리즘을 사용할 경우 암호화된 통신 내용이 유출 되는 등 위협, 암호 알고리즘의 보안 강도의 적절성 여부 점검

취약한 HTTPS 재협상 허용
- 암호화된 통신 내용이 노출될 가능성이 존재하는 취약한 방식의 HTTPS 재협상 허용 여부 점검


02. 보안대책
HTTPS 설정 관련 AWS Services
- CloudFront
- LoadBalancer
- API Gateway
- AWS Certificate Manager

인증서 발급 / Import 가능

 


취약한 HTTPS 재협상 허용
- CloudFront : HTTPS 재협상을 지원하지 않음
- Load Balancer : 로드밸런서 유형에 따라 재협상 지원 여부가 다름
   -> Application LB : HTTPS 재협상 지원하지 않음
   -> Network LB : HTTPS 재협상 지원하지 않음
   -> Classic LB : 보안 HTTPS 재협상을 지원하며, 비활성화 필요 시 ALB로 마이그레이션 필요


3. 불필요한 웹 매서드 허용


01. 개요
불필요한 웹 매서드 허용
- PUT, DELETE 등의 메서드가 허용되어 있을 경우 공격자가 악성 파일을 업로드하거나 삭제 등 웹 사이트 변조 가능성이 존재
- GET, POST 이외의 불필요 메소드 제거

클라우드 특성
- API Gateway가 백엔드의 Lambda 함수 기능을 외부에 제공
- REST/HTTP API 엔드포인트 생성 시 표준 HTTP 메서드(DELETE, GET, HEAD, PATCH, POST, PUT)를 설정하여 API를 서비스


02 .진단 방법
진단시 유의사항
- Burp, Telnet을 이용하여 매서드 변경(PUT, DELETE) 후 정상 기능 작동 여부 점검
- 페이지 별 설정이 다를 수 있으므로 최상위 경로 외에 하위 경로에서도 점검
- 웹 서버에 지장을 줄 수 있는 리소스 삭제 주의

03. 실습


03. 보안대책
API Gateway
- 사용하지 않는 메서드 제거
- 삭제 후에는 API 배포하여 변경내용 적용
- S3 정적 웹 호스팅 페이지의 경우 DELETE 메서드를 통해 리소스 삭제 가능
- 객체를 삭제하기 위해 REST API 및 DELETE 메서드를 사용할 수 있음
  -> 오브젝트에 대한 접근 권한 설정 변경으로 대응