Ahhhhh man so we are doing THM today it been long i know we try my possible best to keep upating the THM writeups without wasting to much of time let jump in already so the fun can begin.
We always start with an nmap scan…..
nmap -p- --min-rate 10000 -oN nmap/full.tcp -v 10.10.84.166
# Nmap 7.91 scan initiated Fri Feb 18 07:49:36 2022 as: nmap -p- --min-rate 10000 -oN nmap/full.tcp -v 10.10.84.166
Increasing send delay for 10.10.84.166 from 0 to 5 due to 11 out of 18 dropped probes since last increase.
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
adjust_timeouts2: packet supposedly had rtt of 8399426 microseconds. Ignoring time.
adjust_timeouts2: packet supposedly had rtt of 8399426 microseconds. Ignoring time.
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
adjust_timeouts2: packet supposedly had rtt of 8037721 microseconds. Ignoring time.
adjust_timeouts2: packet supposedly had rtt of 8037721 microseconds. Ignoring time.
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
Nmap scan report for 10.10.84.166
Host is up (4.3s latency).
Not shown: 65532 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
9090/tcp closed zeus-admin
Read data files from: /usr/bin/../share/nmap
# Nmap done at Fri Feb 18 07:55:24 2022 -- 1 IP address (1 host up) scanned in 347.80 seconds
No we know we have just 2 open ports let throw in some service detection and default nmap scripts to know what we are dealing with but we already know 22 is SSH
and 80 is HTTP
but no hard feeling in trying it.
nmap -sC -sV -oN nmap/normal.tcp -p 22,80 10.10.84.166
# Nmap 7.91 scan initiated Fri Feb 18 07:57:10 2022 as: nmap -sC -sV -oN nmap/normal.tcp -p 22,80 10.10.84.166
Nmap scan report for 10.10.84.166
Host is up (0.20s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.0 (protocol 2.0)
80/tcp open http nginx
| http-title: Hello, World
|_Requested resource was http://10.10.84.166/index.html
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Fri Feb 18 07:58:53 2022 -- 1 IP address (1 host up) scanned in 103.06 seconds
Now more better let check what we have on HTTP.
But strange just by opening the IP we got redirected to youtube damn we just got rickroll
XD let use curl
and see what we have in the source.
Now let add that to our /etc/hosts
file.
Now that is cool we have a gitea
when i try checking for version
seems it hidden let try and register.
Now we hit on sign up
and boom boom.
Now let click on Explore
to see what we have.
We have two repos
let see what we can dig out in the deleted commits it always cool to check that.
Five commits now that should be interesting everybody likes commits XD.
Now that is interesting but who does that hidding Password in an avatar ahhhh let confirm it.
So i downloaded it on my target to confirm if scones
is right about his password gotten hidden in an avatar.
Now that should be easy seems scones
password is Password
ahhhhhh let confirm it.
Boom we are in going through hydra
repo and found nothing but seems the version of the gitea
is hidden why not check if we have Git Hooks
enabled which should be possible to get RCE, how do you know?? WTF have some dignity and do some research XD lol just kidding.
Which was publish back in 2021, February got the exploit code but i decided to do it manully to know what am doing.
Now let click on settings >> Git Hooks >> post-receive
.
So let add our reverse shell payload and update the hooks
.
Now let move to the next step let start our ncat listener
and make a commit to trigger our payload.
touch shell.md
git init
git add shell.md
git commit -m "Initial commit"
git remote add origin http://git.git-and-crumpets.thm/scones/cant-touch-this.git
git push -u origin master --force
So we add scones
and Password
to push the commit which trigger the payload and boom we have a reverse shell. Let spawn a full tty shell.
Now let get the user.txt
in the home directory.
Privilege Escalation
Going through directories the only promising one is /var/lib/gitea/data
we found gitea.db
let check what we have on it using sqlite3
.
Now let type sqlite3
to open the db file.
Boom let drop the user
table.
we know user scones
is not an admin on gitea
but since we have all permission to the gitea.db
we can change all users to admin
or change each users password
let do that now.
select lower_name, is_admin from user;
Only hydra
have access has admin we can easily change scones
ID to 1
which he will also have admin privilege let update that now.
UPDATE user SET is_admin=1 WHERE lower_name="scones";
Now let log back in to gitea
.
We are admin
now time to reset all users Password
.
Now i added new password
for each users and reset 2FA
also XD.
Now let click on update user account
and we should be good i do it for all users. we should get user account has been updated.
Now we can easily use the password
to access each account to check there commits i firstly go for user hydra
but got nothing on the commits let check user root
now.
Boom we got a backup
repo with some pushed and deleted commits but the ssh
with a password
i guess caught my eyes let check it out.
Four commits let click on it and see what we have in store for us.
Ahhhhhhhh awesome let see what we have on the ssh
.
Boom we found a private key ahhhhhh finally some progress i quickly copy and save it on my attacking machine let try using it with the root
user on SSH.
Boom we are root and done for the private key password you already know it Sup3rS3****
just look close and that all.
Greeting From Muzec