0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

アルバムコレクションの脆弱性

Posted at

執筆背景

アルバムコレクションという画像共有サイトがあるのだが恐らく作者の意図に反して、__誰でも(ユーザ登録していなくても)__ファイルをダウンロードできてしまう。
AWSの認証周りが問題なのだが、勉強する上で良い題材なので何がまずいのかを解説する。
※執筆時点9/20の状況です

記事の中身

  • 認証なしでファイルをダウンロードする手順の解説
  • 何がまずかったのかの解説
  • 改善案の提示

認証なしでファイルをダウンロードする手順の解説

想定環境

windows10

使うツール

手順

  1. git for windowsをインストールする(選択肢は全てデフォルトでOK)
  2. Google Chromeをインストールする
  3. Google Chromeでアルバムコレクションにアクセスする
  4. ログインせずに受け取る画面でIDを入力して受け取るボタンを押下する
    image.png
  5. 出力されたモザイク掛かった画像を右クリックし「検証」を押下する
    image.png
  6. imgと書いてある部分を右クリックして「Copy」→「Copy outerHTML」を押下する
    image.png
  7. 適当なエディタにコピーした文字を張り付けると下記のような文字列を得ることができる
    image.png
  8. 文字列の中からhttps以降thumbより前の_(アンダーバー)までを抜き出す
    image.png
    ちなみに_の後に1をつけてURL欄に張り付けると1番目の画像にアクセスできることが分かる。
    image.png
    後続の手順では複数ファイルをまとめて取得するため用意している。
  9. PCに適当なフォルダを作り、フォルダ内で右クリックし「Git Bash Here」を押下する
    image.png
  10. gitターミナルからcurlコマンドを発行する。[]の中の数字はファイル数を表しており、例えば19ファイルであれば[1-19]とする
# curl -O 手順8で抽出した文字列[1-ファイル数]
# 例.ファイル数が19個、手順8の文字列が右記URLの時https://s3-us-west-2.amazonaws.com/file.album-collection.net/a3928lsadgd6e498712c3tirca4ba8b5c3b4974
curl -O https://s3-us-west-2.amazonaws.com/file.album-collection.net/a3928lsadgd6e498712c3tirca4ba8b5c3b4974_[1-19]

gitターミナルを開いたフォルダにファイルが保存されているので確認する
そのままだとファイル名が長すぎるのと、拡張子がうまく付いていないので下記コマンドを入れる。
ファイル名を変えているのとファイルサイズに応じて拡張子(jpgまたはmp4)を付けている

i=1
for file in `ls`
do
  size=`ls -l $file | awk '{print $5}'`
  if [ $size -lt 300000 ] ; then
    mv ${file} ${i}.jpg
  else
    mv ${file} ${i}.mp4
  fi
  i=$((i+1))
done
exit

何がまずかったのか

2つの悪さがあると考えられる

  1. アクセス制御がない(URLが分かればファイルが取得できてしまう)
    ファイルにアクセス制御がなく誰にでも公開された状態になってしまっている。URL情報からS3を使っていることが明確だが、折角のS3なので署名付きURLなどを使いアクセス制御すべきであるが、それがないところが問題。

  2. アクセス先URLが容易に推測できる
    たとえアクセス制御がなかったとしてもアクセス先URLが分からなければ容易にはファイルにたどり着けない。本件ではアクセス先URLが容易に推測できてしまうところが問題。

改善案の提示

ほぼ上記で記載している内容だが、最善策はS3の署名付きURLを使ってアクセス制御をすると誰でもファイルが取得できる状態が回避できる。
次策はアクセス先URLの生成を工夫し、推測できないようなURLを生成することを提案する。
また、ビジネスよりの話になるが、利用規約に同意していない人がファイルをダウンロードできてしまう状態なので、モザイク版についても利用規約に同意した人だけが実施できるようAPIGatewayの認可の仕組みを取り入れるという改善の余地があると考えている。

0
1
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?