
cve-2023-1671 のエクスプロイト。テスト機能とエクスプロイト機能があります。テスト機能は、脆弱なサイトから dnslog ドメインに ping リクエストを送信します。ping が成功した場合、脆弱性が存在します。失敗した場合、cve-2023-1671 は存在しません。一方、エクスプロイト機能は、指定したコマンドを含むリクエストをサーバーに送信します。
/opt/ws/bin/ftsblistpack は Perl スクリプトで、別の Perl スクリプトである /opt/ws/bin/sblistpack を呼び出します。
その中のシェルコマンドの引数は一重引用符で囲まれています:
$rc += system("$sblistpack '$uri' '$user' '$filetype' '$filein' '$fileout'");
これは将来重要になります。脆弱性につながる要因の一つとなるでしょう。
次に /opt/ui/apache/htdocs/controllers/UsrBlocked.php は、ユーザー指定のパラメータ(args_reason、url、filetypeser、user_encoded)を ftsblistpack に渡します。
ユーザー入力は引き続き PHP 関数 escapeshellarg() によって処理されます。この関数は、文字列の周囲または既存の一重引用符に一重引用符を追加します。
これにより、文字列をシェル関数に直接渡し、ユーザーパラメータと一緒に処理することができます。
これにより何が起こるかを確認できます:
次のように入力すると:
';echo 1 #
次のようになります:
'shell user' ' ';echo 1 #'
そしてこれにより、このコマンドでシステムに損害を与えることが可能になります。 エンコードされた値を user_encoded に追加します。
UsrBlocked.php は /index.php?c=blocked 経由でリダイレクトされ、必要な GET および POST パラメータが入力されます。user_encoded パラメータは Base64 でエンコードされているため、インジェクションに理想的です。
https://github.com/ohnonoyesyes/CVE-2023-1671 - シェルエクスプロイト
https://vulncheck.com/blog/cve-2023-1671-analysis - pos cve-2023-1671
https://nvd.nist.gov/vuln/detail/CVE-2023-1671 - NIST の cve-2023-1671 情報
テスト機能とエクスプロイト機能があります。
テストは、脆弱なサイトから dnslog(http://www.dnslog.cn) ドメインに ping リクエストを送信します。ping が成功すれば脆弱性が存在し、成功しなければ cve-2023-1671 は存在しません。
一方、エクスプロイト機能は、指定したコマンドを含むリクエストをサーバーに送信します。
-h
使用法パラメータを取得します
--exploit
cve-2023-1671 をエクスプロイトする機能を呼び出します。
脆弱性が存在するかどうかを確認せずに、任意のコマンドを実行します。
--test
脆弱性テスト機能を呼び出します。
これは、脆弱なサーバーから dnslog ドメインに ping を送信することで行われます。
ping が発生した場合、脆弱性 cve-2023-1671 が存在します。
-u
これは対象サイトの IP または URL です。
形式は 192.168.0.1 または site.com であることに注意してください。
-p
脆弱なサイトのポートです。必須パラメータです。https://site.ocm の場合でも、-u site.com -p 443 を指定する必要があります。
-c
これは --exploit 機能のパラメータです。
サイトをエクスプロイトするために実行したい任意のコマンドです。
形式:-c 'echo cve'
python cve-2023-1671.py --exploit -u 192.168.0.1 -p 443 -c 'echo 1'
python cve-2023-1671.py --test -u 192.168.0.1 -p 443
このエクスプロイトは教育目的で書かれており、あなたの行動に対して私は一切責任を負いません。
このエクスプロイトは、自身のシステムをテストし保護する目的でのみ使用してください。