kavi
Checking for sudo privileges after making a lateral movement to kavi user
kavi@seventeen:~$ sudo -l
[sudo] password for kavi: 
matching defaults entries for kavi on seventeen:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
 
user kavi may run the following commands on seventeen:
    (ALL) /opt/app/startup.shThe kavi user is able to execute the bash script, /opt/app/startup.sh, with sudo privileges
That bash script was already enumerated earlier. I failed to execute it due to the privilege limit
startup.sh
kavi@seventeen:~$ sudo -u root /opt/app/startup.sh
[=] Checking for db-logger
[+] db-logger already installed
[=] Checking for loglevel
[+] Installing loglevel
/opt/app
├── loglevel@1.8.0 
└── mysql@2.18.1 
 
[+] Starting the appExecuting the bash script now successfully installed the new loglevel package and proceeded to start the web app.
It should be now available at the 127.0.0.1:8000 socket
mark@seventeen:/dev/shm$ curl http://localhost:8000
<!DOCTYPE html>
<html>
<head>
<title>Under Construction</title>
</head>
<body>
<p>This page is under construction. Please come back soon!</p>
</body>
</html>It works.
While this is just a static html running, the important bit here is that it has successfully loaded the package and proceeded to start the web application. Additionally, the process is presumably running with the privileges of the root user (sudo).
There are 2 npm packages required; db-logger and loglevel
If I manage to hijack either of the packages above and load a malicious npm package, I might be able to get code execution
.npmrc
kavi@seventeen:~$ ll
total 44
drwxr-x--- 7 kavi kavi 4096 May 11  2022 ./
drwxr-xr-x 4 root root 4096 Apr  8  2022 ../
lrwxrwxrwx 1 kavi kavi    9 Apr 10  2022 .bash_history -> /dev/null
-rw-r--r-- 1 kavi kavi  220 Apr  4  2018 .bash_logout
-rw-r--r-- 1 kavi kavi 3771 Apr  4  2018 .bashrc
drwx------ 2 kavi kavi 4096 Feb 19  2022 .cache/
drwxrwxr-x 3 kavi kavi 4096 Feb 26  2022 .composer/
drwx------ 3 kavi kavi 4096 Feb 19  2022 .gnupg/
drwxrwxr-x 3 kavi kavi 4096 Feb 19  2022 .local/
drwxrwxr-x 2 kavi kavi 4096 jun 20 10:02 .npm/
-rw------- 1 kavi kavi   32 jun 20 10:10 .npmrc
-rw-r--r-- 1 kavi kavi  807 Apr  4  2018 .profilethe .npmrc file is a configuration file for npm instances of the current user
npm basically pull the config settings from the file to set up environment variables
kavi@seventeen:~$ cat .npmrc
registry=http://127.0.0.1:4873it has the registry variable set to the verdaccio instance at http://127.0.0.1:4873
I should be able to modify the file to point to a registry that I control and host the payload
Moving on to the Privilege Escalation phase