> For the complete documentation index, see [llms.txt](https://olb.gitbook.io/thm-ctf-write-ups/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://olb.gitbook.io/thm-ctf-write-ups/vulniversity.md).

# Vulniversity

{% embed url="<https://tryhackme.com/room/vulnversity?ref=blog.tryhackme.com>" %}

Site Gitbook: <https://olb.gitbook.io/thm-ctf-write-ups/vulniversity>

## Reconnaissance

```
export IP=10.10.107.33
```

```
nmap -sC -sV -oN nmap-report.txt $IP
```

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FjW2XN9hfCrToG3xRyjFZ%2Fimage.png?alt=media&amp;token=d3ff0276-9499-488d-a9b9-85e417a07545" alt=""><figcaption></figcaption></figure>

Ports / services ouverts:

* ftp (21)
* ssh (23)
* samba (139/445)
* proxy Squid (3128)
* Serveur web Apache (3333)

Petit tour sur le site <http://10.10.107.33:3333/>

* code source : c'est un site sous Wordpress (pas d'info visible de sa version ...)
* pas d'accès à `/wp-admin` ou `/admin`
* pas d'accès au `robots.txt` ou au `sitemap.xml`
* On lance un Directory Brute Force pour voir...

{% code overflow="wrap" %}

```
gobuster dir -u http://$IP:3333 -w /usr/share/wordlists/dirbuster/directory-list-1.0.txt
```

{% endcode %}

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FMTv43ZsopXupXtO7shGo%2Fimage.png?alt=media&amp;token=f0353377-0600-4207-aa5e-13c691fb8bac" alt=""><figcaption></figcaption></figure>

* le répertoire `/internal` attire l'attention:

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FJhFhFpP9rtTv0rdRNtnL%2Fimage.png?alt=media&amp;token=1075f237-3262-40ae-8437-2a8add532dd9" alt=""><figcaption></figcaption></figure>

* C'est un formulaire d'upload de fichier

* Ici on est bien aidé par l'auteur de la Box qui nous invite a tester les extensions suivantes

  * .php
  * .php3
  * .php4
  * .php5
  * .phtml

* On soumet donc un fichier de test et on intercepte la requête avec `Burp Suite proxy`

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2Fw8jzkIbBZ53K3zGiVaau%2Fimage.png?alt=media&amp;token=e1ff7cf5-7036-496b-987f-2de91bcc94a7" alt=""><figcaption></figcaption></figure>

on envoie la requête dans l'intruder pour faire du fuzzing sur l'extension du fichier soumis  comme indiqué&#x20;

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FTZj95JZCdhEWgRtd3b99%2Fimage.png?alt=media&amp;token=f56be952-c686-4fbe-94f6-a5e032a4b385" alt=""><figcaption></figcaption></figure>

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2Fcurf1cue1Zn6sHmdXl4J%2Fimage.png?alt=media&amp;token=b9bd6dbe-2512-4d5d-8fea-8e46e43aaae4" alt=""><figcaption></figcaption></figure>

On lance l'attaque

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2Fe0QPdaN1LmUufjoQppbO%2Fimage.png?alt=media&amp;token=f07df643-4bc4-475a-b9c6-90048471f209" alt=""><figcaption></figcaption></figure>

* Ici la longueur de la réponse pour l'extension `.phtml` attire l'attention ...
* En vérifiant la réponse on a bien un message `"Success"`

On va donc pouvoir uploader un reverse-shell en php par exemple [celui-ci](https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php) . Avant bien sûr on le renomme en .phtml et on s'assure de renseigner dans le fichier son IP et son port d'écoute:

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FCcH0AcfEEssyJupdw6YC%2Fimage.png?alt=media&amp;token=8a472a53-eec1-4c59-aeba-e5d84785c1a7" alt=""><figcaption></figcaption></figure>

Une fois chargé via le formulaire, on va le retrouver dans <http://10.10.107.33:3333/internal/uploads/> \
NB: l'auteur de la box nous aide en indiquant ce sous-répertoire mais en relançant gobuster (qui n'est pas récursif) sur `'http://10.10.107.33/internal'` on découvre facilement ce répertoire )

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FpewrmG2ld109k1Imf6Pw%2Fimage.png?alt=media&amp;token=32f0268f-296c-4a35-a2b6-168b26fc6cdd" alt=""><figcaption></figcaption></figure>

on lance sur notre Kali un netcat en écoute sur le port indiqué dans le fichier&#x20;

```
nc -lnvp 1234
```

et on demande au serveur web d’exécuter le fichier:  <http://10.10.107.33:3333/internal/uploads/php-reverse-shell.phtml>

Normalement on se retrouve immédiatement  avec un shell actif sur la cible en tant que user `www-data`

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2F9JAOiX6O3GblNLExbCL3%2Fimage.png?alt=media&amp;token=3a9303ea-e3c1-4496-9712-62c047a93110" alt=""><figcaption></figcaption></figure>

On nous demande le flag du user `bill`.

Pas besoin d'escalade de privilège pour trouver le flag puisque le répertoire `home` de bill est accessible en lecture à tous les utilisateurs

```
cat /home/bill/user.txt
```

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FSSOVS5IEvatJpFkSw769%2Fimage.png?alt=media&amp;token=fbb0ef8b-0081-4f26-a4ee-ca6f0305ff07" alt=""><figcaption></figcaption></figure>

Et voila :v:
