Visual

IP of kali machine: 10.10.15.101
Scanning
Nmap
HTTP


Fuzzing directories reveal only uploads directory:

Try to upload a git project to test webapp:

After submit of GIT link we have a redirect to URL with this pattern: http://visual.htb/uploads/ae27098c16b9bddc8abd36eb1c64cc/
Info
PHP 8.1.17
Apache 2.4.56
Windows Server 2019
Gaining Access
Github url seems to not work, so create a GIT server and expose it using Apache on Kali linux attacker machine.
Install Git and Apache:
sudo apt install git apache2 apache2-utilsConfiguring Apache HTTP Server for Git:
sudo a2enmod env cgi alias rewriteCreate a new directory /var/www/git for keeping all the Git repositories:
sudo mkdir /var/www/gitCreate a new Apache site configuration /etc/apache2/sites-available/git.conf for Git:
sudo nano /etc/apache2/sites-available/git.confDisable the default Apache site configuration:
sudo a2dissite 000-default.confEnable the Git site configuration:
sudo a2ensite git.confRestart Apache HTTP server
sudo systemctl restart apache2In order to bootstrap a new Git repository accessible over the Apache HTTP server, you will have to run a few commands. You don’t want to do the same thing over and over again just to create a new Git repository. So, I decided to write a shell script for that purpose.
sudo nano /usr/local/bin/git-create-repo.shAdd execute permission to the shell script:
sudo chmod +x /usr/local/bin/git-create-repo.shCreate a new Git repository test in the Git project root
/var/www/gitusing thegit-create-repo.sh:sudo git-create-repo.sh evilNow you can clone the test Git repository as follows:
git clone http://ip.of.kali.machine/git/evil.git
Prepare evil code
A quick review of Visual Code documentation revealed that it is possible to execute a predefined command before the actual build happens.
MSBuild's PreBuildEvent can be manipulated to execute custom commands before the actual build process starts. This is done by defining a custom target (PreBuild) that runs before the PreBuildEvent. Create a simple C# console project in Visual Studio and then modify the Pre-build event as follow:

Prepare exploit tools
Run a python server inside /usr/share/windows-resources/binaries in order to deliver netcat to windows machine:
Prepare the Evil git repository
Copy evil directory from Visual Studio Code project on Kali Machine
Copy all the contents from evil directory to evil.git directory:
cp -Rf /home/kali/Downloads/evil/* evil.git
Temporary change ownership of evil.git:
chown -Rf root:root evil.gitInitialize git inside evil.git:
git initgit checkout -b maingit add .git config user.email "[email protected]"git config user.name "test"git commit -m "first commit"Now we can upload it!

The payload force the Apache to grab netcat and then we will obtain a reverse shell:



Privilege Escalation
Typically, web and database services possess "ImpersonatePrivilege" permissions. These permissions can potentially be exploited to escalate privileges. Given that a PHP application is running on this machine, I decided to upload and trigger a PHP reverse shell insideC:\xampp\htdocs\uploads.

Inspecting the privileges, I noticed the absence of ImpersonatePrivilege:

Upon further research, I came across FullPowers.
This tool allows the recovery of the default privilege set for LOCAL or NETWORK SERVICE accounts:

With the required privileges in hand, I turned to
a tool known for elevating a service user with low privileges to NT AUTHORITY\SYSTEM privileges:

And finally we will get root flag:

Last updated