
Webmin バージョン 1.890 から 1.920 における C 言語ベースの単純な脆弱性
はじめに:
Webmin Exploitは、Webminサービスの旧バージョンで悪用可能な、標的型のエクスプロイトです。このエクスプロイトは、悪意のあるコードを実行し、標的システムへの不正アクセスを得るために、さまざまな技術を使用します。
これには以下が含まれます:
C言語とアセンブリコードの両方を使用して、標的システム上でコマンドを実行します。
アンチデバッグ、XOR復号、execveやprctlなどのシステムコールを利用して、リバースシェルを起動します。
特徴: アンチデバッグ: ptraceシステムコールを使用して、エクスプロイトのデバッグを防止します。
XOR復号: XOR暗号化を使用して、kthreaddや/bin/shなどの暗号化された文字列をメモリ内で復号します。
prctlシステムコール: プロセス名をkthreaddに変更し、プロセス一覧からエクスプロイトを隠します。
execveシステムコール: 標的システム上で/bin/shリバースシェルを実行し、システムへの完全なアクセスを取得します。
Cとアセンブリの組み合わせ: このエクスプロイトは、Cの柔軟性と、カスタムシステムコールのためのアセンブリ言語のパワーを融合させています。
要件: オペレーティングシステム: Linuxまたは任意のUnixベースのディストリビューション。
必要なライブラリ:
クライアントとサーバー間の接続を確立するためのlibcurl。
エクスプロイトをコンパイルするためのGCC。
Cでcurlライブラリを読み込むための-lcurlライブラリ。
使用方法: 環境のセットアップ: execveのような一部の操作には昇格された権限が必要なため、root権限を持っていることを確認してください。
必要なライブラリをインストールします:
sudo apt-get install libcurl4-openssl-dev
エクスプロイトのコンパイル: webmin_exploit.cファイルをあなたのマシンにダウンロードします。
-no-pieオプションを指定してGCCを使用し、PIE(Position Independent Executable)を無効にしてエクスプロイトコードをコンパイルします:
gcc -no-pie webmin_exploit.c -o webExploit -lcurl
注: PIEに関連する問題が発生した場合は、上記のように-no-pieを使用してください。
エクスプロイトの実行: エクスプロイト設定を構成します: 必要に応じてコード内のターゲットURL、LHOST(ローカルホスト)、LPORT(ローカルポート)を変更します。
エクスプロイトを実行します: コンパイル後、標的マシン上でエクスプロイトを実行します:
./webExploit リバースシェルの受信:
エクスプロイトが正常に実行されると、指定したLHOSTとLPORT(例: 192.168.0.174:4444)へのリバースシェル接続が確立されます。
Netcatまたは同様のツールを使用して、指定されたポートで待ち受けていることを確認してください:
nc -lvnp 4444
技術的な詳細: コード内の主要な命令: アンチデバッグ: ptraceシステムコールを使用して、gdbなどのツールによるエクスプロイトのデバッグを防止します。これにより、アナリストがエクスプロイトをリバースエンジニアリングすることが難しくなります。
XOR復号: 文字列kthreaddと/bin/shは、バイナリ内でキー0x41(ASCII 'A')を使用してXOR暗号化されています。これらの文字列は実行時にメモリ内で復号されます。
システムコール:
prctl(PR_SET_NAME, "kthreadd"): プロセス名をkthreaddに変更し、エクスプロイトが検出されるのを防ぎます。
execve("/bin/sh"): /bin/shへのリバースシェルを実行し、攻撃者にシステムへの完全なアクセスを提供します。
主要な命令: mov: 値をレジスタにロードします。
xor: データに対してXOR演算を実行します。
syscall: シェル起動とプロセス名変更のために、execveやprctlなどのシステムコールを実行します。
lea: アドレスをレジスタにロードします。
トラブルシューティング: コンパイル中に問題が発生した場合は、Position Independent Executable(PIE)を無効にする-no-pieフラグを使用していることを再確認してください。
問題が解決しない場合は、開発環境が必要なライブラリで最新の状態であることを確認してください。
警告: このエクスプロイトはテスト環境でのみ使用してください。本番システムや、テストする明示的な許可を得ていないシステムでこのエクスプロイトを実行しないでください。
リバースシェルが正常に接続できるように、必要に応じてターゲットマシンのファイアウォールを無効にしてください。
リバースシェル接続を受け取るために、Netcatまたは同様のツールを使用してポートで待ち受けていることを確認してください。