Ta có thể thực hiện PassRole. Passrole là tính năng cho phép cấp quyền cho user truy cập đến role mà cụ thể ở đây là 2 role role/TetCtf2Stack-EcsExecutionRoleFD93B7A2-O8bY2QagMK25 và role/TetCtf2Stack-CtfTaskDefTaskRoleD17F896A-vJxGKfIFhChH
Cuối cùng ta có thể check logs (lúc này mình không rõ log này là log gì)
Note: để ý kỹ thì mọi action mà ta có quyền thực hiện đều có region là eu-west-2 . Do đó ta phải configure region lại thành eu-west-2
Mình sẽ đi vào từng chức năng từ trên xuống.
Nói cho dễ hiểu thì ecs là service cho phép quản lý các docker container trên amazon cloud, mỗi container sẽ có nhiệm vụ riêng, ta gọi là task, nhiều container sẽ được sử dụng kết hợp với nhau để cấu thành service (đó cũng chính là lý do vì sao bài này tên là Microservices)
Ý tưởng đầu tiên của mình là gọi được task và tìm hiểu hành vi của nó để lợi dụng. Với chall này để gọi được task thì ta cần
--task-definition : đã biết
--cluster : có thể lấy bằng ecs:ListClusters (cluster có thể hiểu đơn giản là một goup của các containers)
--network-configuration : ta cũng có đủ thông tin cho options này
Lấy Cluster name
Format của --network-configuration có dạng như sau:
Ta dễ dàng lấy được qua ec2:DescribeSecurityGroups và ec2:DescribeSubnets
Lưu ý: ta sẽ dùng GroupID của GroupName TetCTF-GETFLAG là sg-0636ad23bae6f21e7 . Lý do thì sẽ biết sau
SubnetId
Thực thi ecs:RunTask
Tuy nhiên vẫn chưa được vì còn thiếu gì đó, sau một hồi search gg thì mình biết có 3 mode để tạo instance cho container là EC2, FARGATE và EXTERNAL. Đối với bài này thì chỉ có FARGATE là có thể run task
Sau khi gọi được task thì mình bí hoàn toàn không biết làm gì tiếp theo
Nhớ lại đề còn cho phép mình PassRole và xem logs, nên mình check lại cả 2, thì kết quả từ logs có vẻ khá khả quan
Mình nhận thấy sẽ có logs đối với /ecs/tet-ctf:* , hay chính là task mà mình thực thi, thử thực thi task và check logs ta sẽ được (nếu ta gọi task không phải bằng GroupID của TetCTF-GETFLAGthì ta sẽ không thấy logs)
Đến đây mình tiếp tục bí và không biết phải làm gì với đống logs này
Options --overide sẽ cho phép ta ghi đè command sẽ thực thi kèm với quá trình khởi tại của container. Tuy nhiên cmd thực thi không trả về output
Mình check thử OutBound thì cũng không có kết quả (quá dễ đoán)
Lúc này thì logs phát huy công dụng, mình thử check logs và có được output
Việc bây giờ chỉ là tìm flag thôi
Đầu tiên ta có thể thực thi ecs:Runtask, các bạn có thể tìm hiểu thêm về ecs service trong aws tại
Quay trở lại với hành vi run-task, mình thắc mắc không biết liệu có một tính năng nào đó có thể giúp thực thi command hay không. Search cả ngày trời không ra kết quả, nhưng khi hỏi ChatGPT thì mình có câu trả lời