Writeup -Writeup-
まずnmapから

80/httpがうまく表示されていない。tcpwrappedについて調べてみると-A -vvvは弾かれるようだ。このオプションを付けずに実行すると結果が表示された。

/writeup/というページにアクセスできる。ページやソースコードに気になる点はなかった。

curl -IL , whatwebで調べてみるとCMS Made Simpleで作られているようだ。searchsploitやgoogle検索してみるとSQL Injectionの脆弱性が見つかった。githubに公開されていたコードを用いるとsalt ,password, user情報を手に入れた。


passwordをそのままjohnやbase64にかけてみても上手くいかない。そこでsaltに注目してhashcatの-m 20(md5:salt)を実行するとパスワードが入手できた。
先ほど手に入ったuserとpasswordを用いてsshしてみると無事接続できた。



jkrのidを見ると多くのgroupに属しているようだ。またlinpeasで出てきた環境変数を見てみるとpathが通常と違ううえに、書き込み権限もあることがわかる。おそらく悪意のあるコマンドを自作してroot権限を得るパターンだろう。



var/www/htmlのフォルダには何もなかったのでppspyでプロセスを見てみるが特に変化がない。そこでプロセスを監視しつつ、別端末からさらに接続してみると興味深いプロセスが見つかった。
どうやらssh接続時にroot権限を持ったshが環境変数を変更し、その後runpartを実行していることがわかった。先ほどの情報から/usr/local/sbinに書き込み権限があり、さらにpathは一番最初に設定されている。つまり/usr/local/sbinにリバースシェルかroot.txtを見ることができるrunpartを作ればいい。
リバースシェルはなぜかうまくいかなかったので、今回はrunpartにcat /root/root.txtするコマンドに設定した。そしてもう一度ssh接続するとフラグが入手できる。
![]()

Active -Writeup-
まずnmapから

Kerberos認証があるのでおそらくActiveDirectry。とりあえずsmbclientでフォルダを見てみる。
Replicationにアクセスしてみるとactive.htbのフォルダがあったので、フォルダごとダウンロードした。中身を見てみるとGroups.xmlというファイルが興味深い。



Groups.xmlにはSVC_TGDというusernameと、暗号化されたCpasswordがある。Cpassword decryptで検索して出てきたgpp-decryptを使うとパスワードが入手できた。
smbmapを見るとUsersにアクセスできるようだ。まずuser.txtをゲット。





ImpacketにはKerberosユーザーやクラック可能なチケットを調べるGetUserSPNs.pyというツールがある。これを使って取得できるチケットがないか調べるとAdministarのパスワードが入手できた。
これはhashcat用なのでhashcatで復号化するとAdminの認証情報が手に入る。


Shoker -Writeup-
まずnmapから

80/http 2222/OpenSSHが稼働している。ホームページにアクセスするとただの画像しかない。gobusterで検索してみてもアクセスできるフォルダはない。


--script=vulnで出てきたCVEもすべて刺さらない。こうなると怪しいのはフォルダになる。server-statusはおそらく意味がないのでcgi-binフォルダを調べてみる。apacheのcgi-binフォルダにはsh cgi pl形式のファイルが置かれるので、これを検索してみるとuser.shが見つかった。

アクセスしてみるとuptimeらしき結果が出力されている。ボックスの名前とコマンドが実行されていることから推測すると、おそらくshellshockだろう。
nmapで試しに検索してみると確かに引っかかった。



shellshockのやり方は何通りかある。
①burpsuite
User-Agentの欄にpayloadを流す
User-Agentはcurlの-Aオプションで指定できるのでcurlを使ってもいい


②metasploitやスクリプトを使う
metasploit、searchsploitで下記のツールが出てくる。これが一番楽。


③nmap
nmapに--script-argでコマンドを渡す手もある。

権限昇格
sudo -lでコマンドを調べてみるとPerlがパスワードなしで使えるようだ。GTFObinsで検索して出てきたpayloadを用いるとrootが得られる。



Curling -Writeup-
nmapから

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





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



Super Userなのでリバースシェルをアップロードできそう。しばらくサイトを探してみるとTemplates/Beez3にアップロードできる箇所があった。ちなみに下のTemplateでも同様にできる。
アップロードしたシェルのパスは、先ほどのgobusterからTemplateフォルダだと推測できる。Template/shell.phpは無理だったので、試しにTemplates/Beez3/shell.phpにアクセスしてみるとリバースシェルが得られた。




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


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


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


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

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


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

少し見にくいが、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がパスワードなしで実行できる。


ちなみにsudoer以外にもrootのid_rsaを出力させる手もある。
④実はboxが古いからかlinuxの脆弱性をついてroot権限を得ることができる。snap versionのsnapdを検索するとdirty sock(CVE-2019-7304)という脆弱性が見つかるのでこれを利用する。





まとめるにあたって以下のサイトを参考にした。
Openadmin -writeup-
nmapから

20/ssh 80/httpが開いている。まずサイトにアクセスしてみる。

apacheのデフォルトページが出てくるということは、他のページを探す必要がありそう。gobusterでディレクトリを探してみる。

/music /sierra が気になる。それぞれのフォルダを探してみるとmusicのloginからonaに飛ばされることに気づいた。さらにonaのDOWNLOADリンクからOpenNetAdmin Ver18.1.1が使用されていることが判明した。



searchsploitで検索するとヒットしたので使えるものがないか探す。すると以下のサイトにちょうどよさそうなものを見つけた。

これを用いるとwww-dataとして侵入できた。

cdがうまく機能しないがcatやlsは絶対参照で指定することができる。何か使えるデータがないか探すとlocal/config/database_settings.inc.phpからパスワードを見つけた。

試しにona_sysで色々試してみるがログインできない。ユーザー名を探すために/etc/passwdを探してみるとjimmyとjoannaのユーザー名が見つかる。

ssh接続で試してみると、jimmy/n1nj4W4rri0R!で接続に成功した。
idを見てみるとinternalグループに属しているのが分かる。var/www/internalというフォルダがあり、main.php logout.php index.phpを見つけた。


main.phpにはjimmyの別パスワードがありmain.phpにはjoannaの秘密鍵を表示するページが見つかる。試しにphpで実行してみても表示されないこと、URLにinternalを入力してもページが表示されないことから、おそらくlocalhostで閲覧できるページだと考えられる。


/etc/apache2/sites-availableにあるinternal.confを見てみるとポート52846で稼働している。linpeasにも同様に情報がある。


jimmyはアクセス権限があるのでcurlを使って表示させることができる。またsshの-Lからlocalhost:52846に接続することでブラウザに表示させることができる。



main.phpにあったパスワードはRevealedとわかった(johnを使用)ので、jimmy/Revealedでログインすることもできる

ssh接続しようとするとパスワードが求められる。これもjohnで解読しbloodninjasとわかるのでこれでログインができる。
sudo -lすると/bin/nano /opt/privがroot権限で実行できる。

GTFOBinsでnanoを検索するとCtrl+R Ctrl+Xの後 reset; sh 1>&0 2>&0でroot権限を取得できるようだ。


Heist -Write up-
まずnmapから

80/httpと445はおそらくsmbclient、5985はwinRMのデフォルト。情報を集めるためにsmbclientで接続してみるがNT_STATUS_ACCESS_DENIEDとでるので認証情報が必要。
次にサイトにアクセスしてみる。

ログイン画面が出てくる。適当なパスワードを打ってもログインできずソースコードにも目立った情報はない。
右下のLogin as guestにアクセスしてみると、AdminとHazardのやり取りとパスワードが書かれているページが見つかる。


$1$から始まるパスワードはjohnで解読できた。ただしどこで必要かは分からない。

次に下二つのパスワードだが、オンラインデコーダで探しても見つからない。johnも時間がかかるのみでおそらく見つからない。
そこでコメントをよく見てみると以下の文面に気づく。

おそらくcisco関連で検索すれば見つかるだろう。以下のサイトを使うと解読できた。


ここで今持っているユーザーとパスワードは以下の通り。
User:Hazard rout3r admin
pass:stealth1agent $uperP@ssword Q4)sju\Y8qz*A3?d
この組み合わせのうちどれかがsmbclientの認証情報だろう。試しにHazard/stealth1agentを使いpsexecでアクセスできると、共有フォルダはないが表示された。

番外編 crackmapexec
先ほどのuser情報をuser.txtに、passwordをpass.txtに保存した上でブルートフォースする方法もある。

この認証情報を使って他ユーザーの情報を探すことができる。impacketのlookupsidを使う。

ChaseとJasonのユーザー情報が見つかった。なお先ほどのcrackmapexecを使って同じことができる。

先ほどのユーザー情報とパスワードを使ってもう一度認証情報を探ってみる。

Chase/Q4)sJu\Y8qz*A3?dが見つかった。おそらくこれを使えばwinRMにアクセスできるはず。ポート自体は先にみたように開いているのでevil-winrmで接続してみる。

デスクトップを見るとtodo.txtが見つかる。

Chaseはissues listをチェックしているようだ。しかしフォルダを探してもlistは見つからない。appdataやprocessを見るとFirefoxの履歴が目立つ。

procdumpを使って一番CPU使用量の多いID6648の情報を集めてみる。



login.phpのページからlogin_passwordで文字列検索すれば見つかるはず。

少し見づらいが4dD!5}x/re8]FBuZがパスワード。Administrator/4dD!5}x/re8]FBuZを利用してevil-winrmでアクセスすればrootが得られる。



