Try Hack Me:Pickle Rick - Writeup
0. はじめに
「リックとモーティのCTF。リックを人間に戻すのを手伝おう!」とのことです。
1. Task1
とりあえずNmapでポートスキャンを試してみます。
22番(SSH)と80番(HTTP)のポートが開いているのが分かりました。
ブラウザで検索して、Webページで検証ツールを開いてみると、以下の記述がありました。
Username:R1ckRul3s
Usernameは分かりましたが、引き続き手がかりを探る必要があります。
とりあえずGobusterでディレクトリスキャンを試してみます。
/robots.txtを覗いてみると、何かの文字列がありました。こちらがPasswordなのでしょうか。
先ほどのディレクトリスキャンの結果から/login.phpがあるということが分かるので、
Username:R1ckRul3s、Password:Wubbalubbadubdubとしてログインしていきましょう。
「Command Panel」と表示されたページに遷移しました。
コマンドを入力して実行できるようなので、とりあえずlsを入れてみます。
Sup3rS3cretPickl3Ingred.txtというファイルが気になります。
catでは開けなさそうでしたが、lessで開けたので、1つ目のフラグをゲットです。
ここで詰まってしまったので、Writeupをチラ見しました。。。
リバースシェルを試すといいそうですが、リバースシェルとは何ぞやという状態です。
軽く調べて、リバースシェルを以下のようなモノだと理解しました。
通常のリモート接続は、クライアントからサーバーに接続しに行きます。
サーバーはクライアントからの接続をlistenして待ち構えており、
クライアントからの接続が来た場合に、処理をしてレスポンスを返します。
リバースシェルは、これらが逆になります。
クライアントがサーバーからの接続をlistenして待ち構えており、サーバーに接続しに来させます。
もう少し具合的にいうと、リバースシェルはサーバーで悪意のあるスクリプトを実行させ、
攻撃者のクライアントに戻るトンネルを作成することでクライアントからの操作を可能にします。
PythonやPHPの実行環境がないかを調べるのがリバースシェルの定石だそうなので、
「Command Panel」にpython3 --versionを入れてみると、Python3の実行環境がありました。
Attack Boxのターミナルでncコマンドを入力し、サーバーからの接続を待ち構えます。
「Command Panel」に入力するリバースシェルはOnline - Reverse Shell Generatorで生成します。
待ち構える攻撃者のクライアント(自分)のIPアドレスとポートを入れて、
生成されたexport. . . のコードをそのままコピーして、「Command Panel」に入力しました。
サーバーへの侵入が成功しました。
sudo -lを試し、特権ユーザーで実行できる/できないプログラムを確認します。
なお、sudo -lについても知識がなかったのですが、以下の記事が参考になりました。
既に全てのsudo権限を持っているようなので、sudo suでrootに昇格します。
色々とフォルダを漁っていると、2つ目と3つ目のフラグが見つかりました。
2. おわりに
手始めにnmapやgobusterを試すのは、やはり基本でしょうか。
本問題ではリバースシェルの概念を知り、手法を試すことができたのがポイントかなと思います。
Discussion