이전 글에서 Bastion host를 사용하지 않고 내부 Private 서브넷의 인스턴스에 접근하는 수단인 Session Manager에 대해 알아보았다. Session Manager도 IAM을 이용해 키 페어를 관리할 필요 없이 간편하게 인스턴스 접근할 수 있도록 서비스가 제공되나, 아웃바운드 인터넷 라우팅이 없는 폐쇄망에 접근하는 경우에 엔드포인트 세팅 작업이 필요해 조금은 불편했던 점이 있었다. 추가로, Private 인스턴스로의 연결을 위해 생성하는 3개의 엔드포인트들은 각각 시간당 요금이 부과된다는 점도 마냥 간과할 수는 없는 포인트이다. 비교적 최근 AWS에서는 이러한 폐쇄된 서브넷의 인스턴스에 연결할 수 있는 EC2 Instance Connect Endpoint(이하 EIC 엔드포인트)라는 ..
전체 글
어차피 이 세상은 아만보Internet Gateway가 연결된 Public Subnet에 위치한 인스턴스들은 부여된 Public IP를 통해 SSH Keypair를 가지고 바로 인스턴스에 접속할 수 있다. 하지만 외부와 연결이 없는 폐쇄된 Private Subnet에 위치한 인스턴스들은 이와 같이 접속할 수 없다. 보통 이런 경우에는 Public Subnet에 Bastion host를 두어 이를 거쳐서 내부 Private 인스턴스로 접근하고는 한다. Bastion host를 두고 접속하는 방법에는 다음과 같은 단점들이 존재한다. Bastion host 인스턴스 : Private 인스턴스의 접속을 위한 인스턴스가 별도로 필요하고, 관리도 해줘야 한다. 인바운드 포트 : 접속을 위해 SSH 포트 설정이 필요하다 SSH Key Pa..
시나리오 개요 In this scenario, you are presented with a signup and login page with AWS Cognito in the backend. You need to bypass restrictions and exploit misconfigurations in Amazon Cognito in order to elevate your privileges and get Cognito Identity Pool credentials. AWS Cognito를 활용한 로그인 페이지, 제한을 우회하고 잘못설정된 Cognito를 Exploit해서 권한상승 후 Cognito Identity Pool Credential을 탈취하라 시나리오 목표 Cognito IdentityPoo..
WSL2를 이용해 실습을 위해 리소스를 생성하는 중에 특정 리소스가 계속해서 막히는 것을 확인했다. 확인한 결과, Terraform 커맨드를 실행하는 위치의 시간대역이 꼬여있어서 리소스 생성시에 Signature 검증의 오류가 발생한 것이다. Signature expired: is now earlier than error : InvalidSignatureException I am trying a small example with AWS API Gateway and IAM authorization. The AWS API Gateway generated the below Endpoint : https://xyz1234.execute-api.us-east-2.amazonaws.com/Users/users wi..
시나리오 개요 In this scenario, you start as the 'bilbo' user. You will assume a role with more privileges, discover a lambda function that applies policies to users, and exploit a vulnerability in the function to escalate the privileges of the bilbo user in order to search for secrets. 'bilbo' 유저로 시작해서 lambda 함수를 찾고, 그 함수의 취약점을 Exploit해 bilbo 유저의 권한을 상승시켜 최종적으로 Secrets를 탈취해라 시나리오 목표 Secret 값을 읽기 (cg-..
CloudGoat 클라우드 환경의 서비스에서 발생할 수 있는 취약점을 공부하기 위한 시나리오들을 모아둔 훈련장 CloudGoat는 AWS에서 발생할 수 있는 취약점 Exploit 시나리오만 제공하고 있으며, Terraform을 통해 각 시나리오별 리소스를 생성할 수 있도록 코드를 제공한다. = 0.14 installed and in your $PATH The AWS CLI installed and in your $PATH AWS account with sufficient privileges to create and destroy resources. jq 먼저 리소스를 만드는데에 사용할 AWS 사용자를 하나 생성해준다. AdministratorAccess 권한을 갖는 IAM 사용자를 생성하도록 한다. 생성..
Helm kubernetes의 패키지 매니저, 배포하는 환경에 따라 설정값을 따로 정의해서 배포할 수 있도록 패키지 매니저 역할을 한다. Helm에서 패키지는 ‘Chart’라고 하며, chart는 kubernetes 애플리케이션의 리소스 정의로 이루어진다. Helm을 통해 Chart를 설치하는 과정은 Chart가 정의된 helm repo를 추가하고, 해당 repo를 통해 install한다. Helm 아키텍쳐 Helm 아키텍쳐의 구성요소에는 쿠버네티스 클러스터, Helm 클라이언트, Helm Chart Repository가 있다. Helm 클라이언트가 Chart Repository로부터 Chart를 다운로드받고, 이 Chart를 기반으로 쿠버네티스 클러스터의 API 서버와 통신해 Chart를 적용하게 된다..
이번에는 EC2 인스턴스의 Metric을 Prometheus로 수집하고, Grafana까지 연동까지 진행해보도록한다. Prometheus와 Grafana가 연동된 아키텍쳐 구조를 먼저 보도록한다. 각 노드들의 node-exporter로 부터 Prometheus 서버가 metric을 Pull해오고, Grafana가 Prometheus 서버에 PromQL을 날려 쿼리 결과를 가져와 Dashboard 형태로 보기좋게 구성을 해주게 된다. Prometheus 설치수집한 Metric 데이터를 모을 인스턴스에 Prometheus를 설치한다.공식 페이지에서 Prometheus 설치는 바이너리 / 소스 / Docker 이미지 형태로 제공한다.이 글에서는 Docker 이미지를 받아 컨테이너 방식으로 설치하도록 한다. ..