시나리오 목표RDS snapshot에 포함되어 있는 flag 탈취 시나리오 세팅./cloudgoat.py create rds_snapshot EC2 인스턴스 1대의 Public IP와 접근할 SSH 키 페어 파일과 command가 주어지며 시작된다. Solution1. 초기 환경 탐색시작과 함께 주어진 인스턴스로 먼저 접속한 뒤, 연결된 Credential 등을 먼저 확인한다.확인 결과, 인스턴스에 IAM Role이 연결되어있음을 확인할 수 있었다. 이어서 해당 Role의 권한을 확인해보았다. 그 결과 S3 서비스에 대한 모든 작업을 할 수 있다는 점을 발견할 수 있었다.# Role에 연결된 Policy 목록aws iam list-role-policies --role-name cg-ec2-admin-r..
AWS
Big IAM ChallengeWIZ사에서 제작한 AWS IAM 기반 CTF현재 공개된 문제는 6개로, 각 문제별로 문제를 풀 수 있는 브라우저 기반 쉘을 제공한다. The Big IAM ChallengePut yourself to the test with our unique CTF challenge and boost your AWS IAM knowledge. Do you have what it takes to win The Big IAM Challenge?bigiamchallenge.com Solution#1{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal"..
클라이언트로 하여금 파일을 업로드받거나, 그 파일을 워크로드를 거친 후 결과물을 다운로드받게 하고자 하는 경우 보통 S3 버킷을 하나 생성해서 파일을 관리한다. 그리고 그 버킷을 Public하게 오픈시켜 클라이언트들이 접근하게 만든다. 하지만 이렇게 단순히 Public하게 오픈시켜 모든 클라이언트로 하여금 파일을 업/다운로드하게 하는 것은 과연 안전한 방법일까?그리고 클라이언트의 파일을 우리의 백엔드 API를 통해서 S3로 업로드하면, 우리의 백엔드에도 파일을 받고 전송하는데에 대한 부하가 발생하게 된다. 이러한 문제를 위해 S3에서는 Presigned-URL이라는 기능을 지원한다. Presigned-URL버킷에 대한 접근 권한이 있는 사용자를 통해 버킷의 특정 객체에 대한 접근을 허용하는 단기간성 U..
Terraform을 통해 aws_instance를 만들면 기본 AMI값을 지정해주어야한다. 이 ami 값은 외우기도 좀 그렇고 자주 바뀌는 터라, 동적으로 가져와서 지정해줄 필요가 있다. Terraform의 'data' Block을 사용해 특정한 AMI 값을 AMI Marketplace에서 검색해 가져올 수 있다.예시로 ubuntu-22.04의 AMI 값을 가져와 본다.data "aws_ami" "ubuntu" { most_recent = true owners = ["099720109477"] # Canonical(Ubuntu 배포사)의 AWS 계정 ID filter { name = "name" values = ["ubuntu/images/hvm-ssd/ubuntu-jammy..
시나리오 목표"vault" 컨테이너에 Access해 플래그 획득 시나리오 세팅./cloudgoat.py create ecs_takeover EC2 인스턴스의 Public IP가 연결된 DNS 주소 하나가 주어진다. ECS 클러스터 구조문제에 돌입하기 전에 ECS 서비스에 대한 구조를 간략하게 알고 넘어가보자.ECS의 리소스는 cluster, service, task, container로 구성되어있다. 이러한 구조는 k8s와도 살짝 닮아있는 것을 알 수 있다. Component설명ClusterECS Service와 Task를 실행하는 인프라, service와 task를 묶는 논리적인 단위가 된다. ECS의 가장 상위 수준의 리소스ServiceTask의 지속적인 실행을 관리하는 개체로, Task를 실행..
지난 3-tier VPC 구축에 이어서, 이번에는 Application단(EC2, ALB 등)을 설계해보도록 한다. 아키텍쳐 구성도 Terraform 코드 작성 Application 단에서 생성할 리소스는 크게 다음과 같다. 인스턴스 4개 보안그룹 키 페어 ALB 2개 (외부, 내부) 대상그룹 2개 (외부, 내부) 먼저 Application 모듈의 변수들을 구성한다. Application 단에서 사용될 외부 변수들에는 주로 vpc 관련의 것이 있다. 인스턴스를 생성할 때 사용될 vpc_id나 배치될 서브넷의 id 값이 여기에 해당된다. 이외에도 ami의 id값이나 미리 생성해둔 security group의 id 같은 리소스도 변수로 불러와서 사용할 수도 있을 것이다. variable "vpc_id" {}..
작년 여름 Solutions Architect Associate를 취득한 뒤, 이번에는 Security Specialty에 도전을 해보았다. 원래는 이후 AWS 자격증에 도전할 생각은 딱히 없었다. 그나마 Associate 다음 단계인 아키텍트 Professional을 생각해보는 정도였다. 앞서 Associate 취득에 대한 Benefit으로 다음 Certified 응시 금액 50% 할인권을 줬기에 안쓰기도 뭔가 아깝다는 생각도 들고, 이왕 도전하는 김에 관련 업무를 진행해봤던 Security 쪽으로 해보자라는 생각이 들어서 신청하게 되었다. 결과적으로는 굉장히 널널하게 합격할 수 있었다. 관련 업무를 진행해봐서 그런지, 아니면 AWS 지식이 조금 늘어서 그런 것인지는 몰라도 개인적으로는 SAA보다 쉽게..
도메인을 리다이렉트해달라는 내용을 요청받았다. 자세히 이야기하자면, www.before.com과 같은 도메인으로 들어온 요청을 www.after.com과 같은 다른 도메인으로 리다이렉트하도록 설정을 해달라는 내용이였다. 이러한 예시는 실제로 종종 볼 수 있다. 예를 들어 어떤 서비스의 도메인이 완전히 바뀌어서, 이전 도메인으로 접속하는 트래픽을 신규 도메인으로 리다이렉션해주는 상황이 있을 수 있다. 이외에도 회사의 브랜드나 서비스 등을 사칭하는 사례의 방지를 위해 관련된 도메인들을 구매하고 정식 서비스로 리다이렉트 시켜버리는 등의 예시도 생각 할 수는 있다. (도메인 사칭방지와 관련된 LG전자의 실제 예시에서 이같은 방법을 고려해볼 수 있을 것이다. 다만, 도메인을 모오두 사들이는 돈은 있어야겠지만.....