# Vulnversity Writeup

\-- documentações ainda em revisão -- faltando partes - video ja gravado\ <br>

## Vulnversity

> ### Não vou conseguir lembrar a data certinha da primeira vez que fiz, mas estou recomeçando no tryhackme e este é o writeup q eu gostaria de trazer primeiro.

<br>

> #### --Vou pular as primeiras tasks que são sobre estar conectado a VPN, ter um sistema com NMAP instalado, estar conectado na máquina do desafio e também pularemos as perguntas que não precisam de resposta.

### Escaneando

#### Scan the box with nmap -sV < machines ip >

```shell
nmap -sV 10.10.84.129
```

![image](https://i.imgur.com/gZqOO8D.png)

O nmap é uma ferramenta gratuita, de código aberto e poderosa usada para descobrir hosts e serviços em uma rede de computadores. Utilizamos o nmap para escanear esta máquina para identificar todos os serviços que estão sendo executados em uma porta específica, mas podemos fazer o uso do programa de algumas formas, como:

#### nmap flag Description

| Nmap flag      | City                                                                                   |
| -------------- | -------------------------------------------------------------------------------------- |
| `-sV`          | `Attempts to determine the version of the services running`                            |
| `-p<x> or -p-` | `Port scan for port <x> or scan all ports`                                             |
| `Pn`           | `Disable host discovery and just scan for open ports`                                  |
| `-A`           | `Enables OS and version detection, executes in-build scripts for further enumeration.` |
| `-sC`          | `Scan with the default nmap scripts`                                                   |
| `-v`           | `Verbose mode`                                                                         |
| `-sU`          | `UDP port scan`                                                                        |
| `-sS`          | `TCP SYN port scan`                                                                    |

```yml
 nmap -sV -Pn 10.10.84.129
```

Podemos utilizar o HELP do shell para saber mais parâmetros e até ajudar a responder algumas questões.

Algumas coisas que gostaria de add aqui para utilizarmos, poderia ser o seguinte:

Usar o mais comum em TODAS as portas / entre as portas especificadas (NO EXEMPLO SÃO TODAS POR TERMOS POSTO AS 65535 PORTAS)

```shell
nmap -sS -p1-65535 10.10.84.129
```

Podemos utilizar uma forma de agilizar os pacotes com o -T4 (cuidado ao usar o -T5 por ter risco de se derrubar).

Podemos, também utilizar uma força maior no 'verbose' para mostrar tudo na tela de forma mais detalhada o q está acontecendo, nesse caso podemos por -vv

```shell
sudo nmap -sS -p1-65535 10.10.84.129 -T4 -vv
```

### Quantas portas estão abertas?

Eu fiz o exercício com o comando:

```shell
sudo nmap -sV -Pn 10.10.84.129
```

A saída sairia - resumidamente e objetivamente - mais ou menos como no exemplo abaixo;

```yaml
┌──(laidler㉿kali)-[~/Documents/seclab]
└─$ nmap -sV -Pn 10.10.84.129
PORT     STATE
21/tcp   open
22/tcp   open
139/tcp  open
445/tcp  open
3128/tcp open
3333/tcp open
```

Podemos ver que temos 6 portas abertas detectadas, o que responde a questão. Resposta>

```yaml
 6
```

### Versão do squid proxy?

No `nmap -sV -Pn 10.10.84.129` mostrado acima, ele não apenas mostra na saída qual a porta e seu estado (aberto), mas também mostra o serviço e qual a versão do mesmo.

Logo, a resposta fica clara na saída deste comando também:

```yaml
┌──(laidler㉿kali)-[~/Documents/seclab]
└─$ nmap -sV -Pn 10.10.84.129
PORT     STATE SERVICE     VERSION
22/tcp   open  ssh         OpenSSH 7.2p2 Ubuntu 4ubuntu2.7 (Ubuntu Linux; protocol 2.0)
3128/tcp open  http-proxy  Squid http proxy **3.5.12**
3333/tcp open  http        Apache httpd 2.4.18 ((Ubuntu))
```

`Squid http proxy **3.5.12**`

`Resposta>`

```yaml
 3.5.12
```

### NMap escanearia quantas portas com o parâmetro -p-400?

De acordo com o que foi explicado anteriormente, daria para responder numa boa, né? haha.

`Resposta>`

```yaml
 400
```

### Já o parâmetro -n, o que o nmap não irá resolver?

Usando a flag -n no nmap, ele não resolverá os nomes de domínio DNS. Isso significa que o nmap não tentará converter endereços IP em nomes de host. Isso pode ser útil para acelerar as varreduras. Podemos achar essa resposta se usarmos o `HELP` para ver o que cada parâmetro/flag faz.

`Resposta>`

```yaml
 DNS
```

### Qual sistema operacional provavelmente está sendo rodado? Qual porta está rodando o web server?

Ainda usando a mesma saída de `nmap -sV -Pn 10.10.84.129` podemos ver que estamos falando do Ubuntu, com web server na porta 3333, ou seja, temos um site em `http://10.10.84.129:3333`.

> Salvo engano, temos como detectar com o parãmetro -A

`Respostas>`

```yaml
 Ubuntu
```

```yaml
 3333
```

> ## GoBuster - DirBruteforce

GoBuster é uma ferramenta usada para forçar bruscamente URIs (diretórios e arquivos), subdomínios DNS e nomes de host virtual. Para esta máquina, vamos nos concentrar em usá-lo para forçar bruscamente os diretórios. Eu geralmente uso outras ferramentas, como o `dirb` ou `dirsearch`, mas esse é bem legal também.

Qualquer coisa só rodar o `sudo apt-get install gobuster`

Se também tiver no `Kali Linux`, tu vai achar umas wordlists em `/usr/share/wordlists`.

```shell
gobuster dir -u http://<ip>:3333 -w < word list location and/or name >
```

Vamos utilizar para encontrar um diretório que pode ser usado para fazer o upload de um shell.

#### Usando o GoBuster

Utilizei com uma wordlist baixada que se encontra no mesmo diretório.

```shell
gobuster dir -u http://10.10.84.129:3333 -w common.txt
```

> Você pode pesquisar pela wordlist 'directory-list-2.3-medium.txt' que resolverá o desafio.

Parâmetros do GoBuster;

| GoBuster Flag       | Description                                                    |
| ------------------- | -------------------------------------------------------------- |
| `-e`                | `Print the full URLs in your console`                          |
| `-u`                | `The target URL`                                               |
| `-w`                | `Path to your wordlist` `E.g: /usr/share/wordlists/dirbuster/` |
| `-U and -P`         | `Username and Password for Basic Auth`                         |
| `-p <x>`            | `Proxy to use for requests`                                    |
| `-c <http cookies>` | `Specify a cookie for simulating your auth`                    |

### Qual diretório é uma aba de upload?

Com o comando e uma saída mais ou menos como:

```yaml
┌──(laidler㉿kali)-[~/Documents/seclab]
└─$ gobuster dir -u "http://10.10.84.129:3333/" -w common.txt 

===============================================================
[+] Url:                     http://10.10.84.129:3333/
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                common.txt
===============================================================
images               (Status 301) [Size 320] [--> http://10.10.84.129:3333/images/]
css                  (Status 301) [Size 317] [--> http://10.10.84.129:3333/css/]
fonts                (Status 301) [Size 319] [--> http://10.10.84.129:3333/fonts/]
internal             (Status 301) [Size 322] [--> http://10.10.84.129:3333/internal/]
```

podemos perceber que desses diretórios, o único que parece ter algo é o 'internal', então se abrirmos a página `http://10.10.84.129:3333/internal/` iremos perceber que nela temos uma página de upload.

`Resposta>`

```yaml
 /internal/
```

> ## Comprometer o webserver - Exploração da falha


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://matheuslaidler.gitbook.io/home/wayofsec/desafios-hacker-writeups/tryhackme/vulnversity-writeup.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
