> For the complete documentation index, see [llms.txt](https://2h4ck.gitbook.io/home/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://2h4ck.gitbook.io/home/ctf/tryhackme/vulnversity.md).

# Vulnversity

Olá, viajante! Neste artigo, trago um write-up do desafio Vulnversity.

## Reconhecimento

Ao realizar um portscan básico, encontrei as seguintes portas abertas:

```
PORT     STATE SERVICE     VERSION
21/tcp   open  ftp         vsftpd 3.0.3
22/tcp   open  ssh         OpenSSH 7.2p2 Ubuntu 4ubuntu2.7
139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
3128/tcp open  http-proxy  Squid http proxy 3.5.12
3333/tcp open  http        Apache httpd 2.4.18 ((Ubuntu))
Service Info: Host: VULNUNIVERSITY; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
```

Acessando a porta 3333 (Serviço Web), me deparei com a aplicação Vulnversity.

<figure><img src="https://2761915823-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1HmCASGp08H43yXrIGdx%2Fuploads%2FUsvLDga01wVpSAwrxaJn%2Fimage.png?alt=media&amp;token=91271585-5551-4aa0-b867-b69659962546" alt=""><figcaption><p>Página inicial</p></figcaption></figure>

Analisei o código-fonte da página e não encontrei nada muito relevante. Partindo para a enumeração de diretórios, encontrei um diretório interessante.

<figure><img src="https://2761915823-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1HmCASGp08H43yXrIGdx%2Fuploads%2FSqGsFTVSDV20LUw590Qi%2Fimage.png?alt=media&amp;token=c4088bb2-70db-4f38-a98e-9780b066c59b" alt=""><figcaption><p>Diretório encontrado</p></figcaption></figure>

Acessando o diretório encontrado, notei uma função de upload de arquivos.

<figure><img src="https://2761915823-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1HmCASGp08H43yXrIGdx%2Fuploads%2F7PRVeUs6pcg1aL3kkSIw%2Fimage.png?alt=media&amp;token=aebeff0a-787f-4518-9a4e-03d4c70a91c8" alt=""><figcaption><p>Página encontrada com função de upload de arquivos</p></figcaption></figure>

## Exploração

Eu poderia tentar subir uma shell reversa em PHP, levando em consideração que o site utiliza tal tecnologia...

<figure><img src="https://2761915823-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1HmCASGp08H43yXrIGdx%2Fuploads%2FauL4n9jQ8WsRCHsVOUj3%2Fimage.png?alt=media&amp;token=03cd8735-ea41-4206-916e-a18bc2fdc0f0" alt=""><figcaption><p>Operação não permitida</p></figcaption></figure>

O servidor não permite upload de arquivos com extensão `.php`... Posso tentar algumas outras alternativas, como `.php2`, `.php3`, `.php4`, `.php5` ou `.phtml`.

<div align="center"><figure><img src="https://2761915823-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1HmCASGp08H43yXrIGdx%2Fuploads%2FRI3v5PKwVmvD0yDgBvQ5%2Fimage.png?alt=media&amp;token=5f6cd999-c62e-4d16-bc12-42afd7046a98" alt=""><figcaption><p>Tentando subir uma shell reversa em <code>.phtml</code></p></figcaption></figure></div>

<div align="center"><figure><img src="https://2761915823-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1HmCASGp08H43yXrIGdx%2Fuploads%2FjrrqnB6Zk5PQgo3yMz6x%2Fimage.png?alt=media&amp;token=fe3fb88b-1187-4861-b011-5802c6f532ab" alt=""><figcaption><p>Sucesso!</p></figcaption></figure></div>

Agora só preciso acessar o arquivo que fiz o upload.

<figure><img src="https://2761915823-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1HmCASGp08H43yXrIGdx%2Fuploads%2FleLSjoR2MkPbvh1GuLks%2Fimage.png?alt=media&amp;token=7d88fe38-31a5-4509-81c0-8aea74b64eb9" alt=""><figcaption><p>Arquivo não encontrado</p></figcaption></figure>

Provavelmente o arquivo não está armazenado na mesma pasta... Então decidi realizar uma varredura de diretórios dentro da página encontrada inicialmente.

<figure><img src="https://2761915823-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1HmCASGp08H43yXrIGdx%2Fuploads%2F1oe24ae341MrkBA1yNPZ%2Fimage.png?alt=media&amp;token=a9aebd2f-157e-4d85-aa7e-5cdbb42d38c9" alt=""><figcaption><p>Diretório de upload de arquivos encontrados</p></figcaption></figure>

<figure><img src="https://2761915823-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1HmCASGp08H43yXrIGdx%2Fuploads%2Fdl0di8Flw6PeRRDQFq3R%2Fimage.png?alt=media&amp;token=529fa523-6a76-409e-b80d-70e72c2711c1" alt=""><figcaption><p>Shell reversa</p></figcaption></figure>

Subindo uma shell full PTY através do Python.

<figure><img src="https://2761915823-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1HmCASGp08H43yXrIGdx%2Fuploads%2FuNBQ81Cr72R860cbCF25%2Fimage.png?alt=media&amp;token=ced4183f-6d7c-4d93-aaa4-8b3c71426b3c" alt=""><figcaption><p><code>CTRL+Z</code> > <code>stty raw -echo</code> > <code>fg</code> > <code>export TERM=xterm</code></p></figcaption></figure>

Agora que possuo acesso ao servidor, procurei a flag `user.txt`.

<figure><img src="https://2761915823-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1HmCASGp08H43yXrIGdx%2Fuploads%2FD9sLH7zh4sL35wfkgAdN%2Fimage.png?alt=media&amp;token=1a43e987-88bd-4b40-875f-5ad07ffbdbf4" alt=""><figcaption><p>Captura da flag <code>user.txt</code></p></figcaption></figure>

## Escalação de Privilégio

Para tentar escalar privilégios, verifiquei a existência de executáveis com permissão SUID.

<figure><img src="https://2761915823-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1HmCASGp08H43yXrIGdx%2Fuploads%2FHpFAWNPCY0kz5chsMhpq%2Fimage.png?alt=media&amp;token=3bb98fa3-9d3a-46c8-98f5-8d077737e681" alt=""><figcaption><p>O executável <code>systemctl</code> pode ser executado com permissões SUID</p></figcaption></figure>

Com isso, criei um payload na pasta `/tmp` que simula um serviço, cujo qual chama uma shell.

<figure><img src="https://2761915823-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1HmCASGp08H43yXrIGdx%2Fuploads%2FJV3bItTJdwXjEDr0v88t%2Fimage.png?alt=media&amp;token=b40aa9a9-4015-4c15-beb6-5a6a614f34c6" alt=""><figcaption><p>Serviço forjado para executar uma shell reversa com permissões elevadas via <code>systemctl</code></p></figcaption></figure>

<figure><img src="https://2761915823-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1HmCASGp08H43yXrIGdx%2Fuploads%2FumcJGs5DkGeHx6wZTBTN%2Fimage.png?alt=media&amp;token=7f34b9f6-d78a-487f-b3fc-47895571b62a" alt=""><figcaption><p>Habilitação do serviço</p></figcaption></figure>

<figure><img src="https://2761915823-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1HmCASGp08H43yXrIGdx%2Fuploads%2Fr8Okb8HkFG26vn2tltNp%2Fimage.png?alt=media&amp;token=4cd402fc-9e79-4ecb-81d2-96b997f6ba51" alt=""><figcaption><p>Shell reversa com permissões elevadas obtida com sucesso</p></figcaption></figure>

<figure><img src="https://2761915823-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1HmCASGp08H43yXrIGdx%2Fuploads%2FxHFfxAGE6S9wQCUmGRTB%2Fimage.png?alt=media&amp;token=0c453313-dae8-4eee-a748-590e13f4ac15" alt=""><figcaption><p>Captura da flag <code>root.txt</code></p></figcaption></figure>
