ただのメモです

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

Curling -Writeup-

nmapから

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

 sshとhttpが稼働している。

 サイトにアクセスするとログインページと3つほど記事があるのみ。ソースコードを見てみるとsecret.txtがあるので表示してみるとパスワードらしき文字列が見つかる。これをbase64 -dしてみるとCarling2018!というパスワードが得られる。記事からユーザーはflorisと推測してログインしてみると、SuperUserでログインに成功した。

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

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

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

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

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

 サイト上には特に変化なし。試しにgobusterしてみると、administratorがあるようだ。先ほどの認証情報でログインできた。

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

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

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

 Super Userなのでリバースシェルをアップロードできそう。しばらくサイトを探してみるとTemplates/Beez3にアップロードできる箇所があった。ちなみに下のTemplateでも同様にできる。

 アップロードしたシェルのパスは、先ほどのgobusterからTemplateフォルダだと推測できる。Template/shell.phpは無理だったので、試しにTemplates/Beez3/shell.phpにアクセスしてみるとリバースシェルが得られた。

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

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

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

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

 www-dataのuser.txtはないのでflorisに昇格する必要がある。florisのフォルダを見てみるとpassword_backupというファイルがある。中身はASCII.textに16進数が書かれた内容だった。これをダウンロードしてみる。

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

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


 xxdを使って16進ダンプをしてみるとbzip形式だとわかる。ファイル形式をbz2に変えてbzi2でdecompressすると、形式がgz形式に代わる。ファイル形式をgz...と繰り返していくと最終的にパスワードを入手できた。ssh接続にも成功した。

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

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

 florisのフォルダにはpassword_backupの他にadmin-areaというディレクトリがある。見てみるとinput reportという二つのファイルがあり、それぞれroot権限がある。

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

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

単純にroot.txtを見るだけなら以下の方法で済む。

 

①outputはinputの情報をもとに表示していると考えられる。ルート権限を持っているのでrootフォルダにもアクセスできる。つまりinputをroot.txtのパスに設定すればroot.txtの中身を見ることができる。

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

もしくは

②ncを使って自分のターミナルにデータを送信させる(root.txtが見えるので下の画像には表示していない)

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

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



番外編 そもそも何をしているのか

 input outputが何をしているかを見るにはプロセスを見る必要がある。しかしcrontabやlinenumでは見ることができないのでpspyを使用する。

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

少し見にくいが、1分毎に以下のコマンドが実行されている。

/bin/sh -c sleep 1; cat /root/default.txt > /home/floris/admin-area/input

curl -K /home/floris/admin-area/input -o /home/floris/admin-area/report
/root/default.txtの内容をinputにコピーし、その内容をcurlを用いて表示させている。先ほどのurlを変更すると出力されたのはcurlコマンドのおかげだった。

 

③つまり先程のファイルを利用してsudoをパスワードなしで使えるようにすればよい。

florisのディレクトリにinput用のファイルを作りviで以下のように設定。inputのurlをfile:///home/floris/exploit/sudoersに変更ししばらく待つとsudo suがパスワードなしで実行できる。

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

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

ちなみにsudoer以外にもrootのid_rsaを出力させる手もある。

 

 

④実はboxが古いからかlinux脆弱性をついてroot権限を得ることができる。snap versionのsnapdを検索するとdirty sock(CVE-2019-7304)という脆弱性が見つかるのでこれを利用する。

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

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

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

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

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




まとめるにあたって以下のサイトを参考にした。
 

netosec.com

0xdf.gitlab.io