banner
言心吾

言心吾のBlog

吾言为心声

HackMyVM ユニバース ターゲット場の復盤

概要#

難易度:困難

靶場地址:https://hackmyvm.eu/machines/machine.php?vm=Universe

初期アクセス#

簡単にスキャン

21 ポートは匿名ログインできない

1212 ポートは http で、nmap スキャン結果から user パラメータがあることがわかる

image

適当にアクセスすると user がランダムに変動することがわかる

直接 fuzz 大法で、ウェブページをすべてダウンロードしてみる

最後に 9 が成功した

image

さらに wfuzz も試したが、成功しなかった。しかし理論的には fuzz ツールでうまくいくはずなので、皆さんに試してもらいましょう~

image

ウェブページの表示によると、cookie を渡す必要があるようだが、exec に直接値を渡すとエラーが出る

そこで base64 にエンコードして、コマンドを正常に実行できるようにする(この部分は考えにくいが、靶機には何のヒントもない)

ここでは wget rev.sh を使い、その後 bash rev.sh の方法を用いた

image

image

最後に問題のソースコードを添付します:

権限昇格#

ポート転送#

ss -plntuを使うと、ローカルからしかアクセスできない 8080 ポートが見える

そこでポートを転送することにし、socat を使うこともできるが、ssh のリモートポート転送を使う方が適用性が広いので好む

これで直接アクセスできるようになる

LFI#

ページには明らかに LFI が存在するが、制限があり、いくつかのバイパスを試した後、二重書き込みバイパスができることがわかり、…//…//…// を使って上位ディレクトリに戻ることができる

image

忘れずにシェルを持っているので、まず tmp ディレクトリに php のリバースシェルを作成し、その後含める

http://127.0.0.1:18080/?file=..././..././....//tmp/shell.phpにアクセスすれば void ユーザーのシェルを取得できる
image

同様にソースコードも添付します:

Quasar 逆向#

sudo -l で開始

image

image

Quasar の他にも、このディレクトリには print.sh スクリプトがある

まず Quasar を外して具体的に見てみる

image

プログラムは password が正しいかどうかを確認し、その後 print.sh を実行する

今昔異なり、直接 ida+mcp 自動化逆向で完了です~

image

演算ロジックの再現#

逆コンパイルされたコードから、キー生成の数学演算は決定的であることがわかる。Python スクリプトを使って再現できる:

image

image

パスワードは 9740252204 です

書き込み競争#

print.sh スクリプトの内容は以下の通り:

このスクリプトは以下の操作を実行します:

  1. mktempコマンドを使用して、/tmpディレクトリに一時ファイルを作成し、その名前はread-で始まり、後に 5 つのランダムな文字が続きます。
  2. 子シェル(() で囲まれた)内で、まずumaskコマンドを使用してファイル作成マスクを110に設定し、これにより新しく作成されたファイルは 556 の権限を持ちます。
  3. 主シェルに戻り、文字列 test を一時ファイルに書き込みます。
  4. catコマンドを使用して一時ファイルの内容を読み取り、その内容をdata変数に格納します。
  5. 最後に、evalコマンドを使用してdata変数内の内容を実行し、一時ファイルを削除します。

スクリプト内では、コマンドは逐次実行されるため、eval が実行される前に時間的な間隔が存在します。この間隔内に一時ファイルの内容を上書きできれば、任意のコマンドを注入して実行することができます。

別の端末を開き、次のコマンドを実行します

原理は非常に簡単で、死ループを使って tmp ディレクトリ内の一時ファイルを監視し、存在する場合はその中に権限昇格コマンドを書き込むというものです。

最後に競争に成功し、root 権限を取得しました!
image

image

後記#

Universe 靶機は非常によく設計されており、非常に包括的な靶機です。「困難」とマークされていますが、全体的な難易度は特に高くはなく、攻撃プロセスは比較的スムーズで、一歩ずつ進めば問題ありません。exec の部分で base エンコードが必要な点を除けば、他に特に考えにくい点はありません。特に最後の権限昇格段階では、print.shスクリプトの競争条件脆弱性が非常に巧妙に設計されており、全体の挑戦にさらなる魅力を加えています。総じて、これは非常に試す価値のある包括的な靶機です!

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。