# HACKTHEBOX REDPANDA - WriteUp #
```
Auteur: Abdellah EL ASRI
Date: 22/09/2022
```
---
# Infos HTB
IP:10.10.11.170
#
# Enumération des services #
Pour avoir des informations sur la machine cible et les ports ouverts ainsi que les services et leurs versions.
J'utilise un scanneur de ports nmap avec la commande suivante:
```
nmap -sS -sV -O -p- 10.10.11.170
```
* 22 ssh
* 8080 http-server (Spring boot)
fichier nmap1.txt
# Http-sever
Dans un premier temps je lance une énumération web avec dirbuster pour savoir les pages et les répertoires de mon site:
J'ouvre le site : http://10.10.11.170:8080

Je saisi une lettre au hasard dans la barre de recherche d'obtiens la page suivante:

J'ai déjà deux auteurs:
* woodenk
* damien
Je cherche un panda avec son nom, j'obtiens la page suivante:

On parle d'injections:
Quel type d'injections ?
Du coté du dirbuster, j'ai une page /stats/


Chaque lien renvoie sur une page avec les statistiques des images de chaque auteur.

## Recheche de vulnérabilités ##
Puisque le site web utilise le framework SpringBoot, je regarde sur internet pour des CVE.
Il existe une vulnérabilité mais malheureusement on a pas les conditions pour l'exploiter.
[CVE-2022-22965
](https://www.kaspersky.com/blog/spring4shell-critical-vulnerability-in-spring-java-framework/44034/)
## SSTI Injections ##
J'ai testé des injections sql, XSS, Injection commande
J'utilise le github suivant: [PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings)

Le texte mis dans le template #{} est exécuté. Il s'agit donc d'une injection SSTI.
[SSTI](https://)https://www.acunetix.com/blog/web-security-zone/exploiting-ssti-in-thymeleaf/
J'execute le commande suivante pour lister les fichiers de mon serveur.
${T(java.lang.Runtime).getRuntime().exec('....')}

Certains carcatères ne sont pas autorisés.
Je modifie ma commande pour contourner ce problème.

Un processus est crée, ma commande s'execute.
Je peux donc faire du reverse shell
# Reverse shell #
1. Je génère un reverse shell avec [Reverse Shell generator](https://www.revshells.com/)
2. Je crée un serveur http avec python3
3. Je télécharge mon reverse shell sur la cible 
4. Je donne droit d'exécution
5. Je lance un écoute avec netcat sur le port que j'ai mis dans mon reverse shell
6. J'exécute mon reverse shell 
La connexion est réussie, je suis connecté au serveur en tant que woodenk.

# Trouver le premier drapeau #
En regardant dans les répertoires je trouve le premier drapeau:

exiftool /author /../../tmp/aelasr
XXE https://portswigger.net/web-security/xxe
echo "200||1||2/../../../../../../../../../tmp/test.jpg" > /opt/panda_search/redpanda.log


