TP sysres IMA5sc 2020/2021 G10 : Différence entre versions
(→Intrusion sur un serveur d’application Web) |
(→Intrusion sur un serveur d’application Web) |
||
Ligne 192 : | Ligne 192 : | ||
Nous sommes entrés dans la ''Gestion des Manuels'' et nous avons ajouter un nouveau manuel : nom : nom ; path : /etc/phpmyadmin/config-db. | Nous sommes entrés dans la ''Gestion des Manuels'' et nous avons ajouter un nouveau manuel : nom : nom ; path : /etc/phpmyadmin/config-db. | ||
Une fois ajouté, nous somme allé dans ''Recherche de manuels'' et nous avons téléchargé le fichier de config précédemment ajouté. | Une fois ajouté, nous somme allé dans ''Recherche de manuels'' et nous avons téléchargé le fichier de config précédemment ajouté. | ||
+ | |||
+ | À ce niveau là, on a aucun fichier directement utile. | ||
+ | Néanmoins, en utilisant nos connaissances du système UNIX, on peut avoir se servir de deux fichiers très utiles: | ||
+ | |||
+ | '''/etc/passwd''' et '''/etc/shadow'''. En effet, | ||
+ | le premier c'est celui qui contient généralement des informations sur les utilisateurs qui peuvent se connecter au système (le nom, l'identifiant, répertoire personnel...), | ||
+ | mais il ne contient pas les mots de passe de ces utilisateurs. | ||
+ | En revanche, le second fichier, lui, contient une version hashée des mots de passe et seuls des utilisateurs très privilégiés peuvent y avoir accès. | ||
[METTRE IMAGE FICHIER CONFIG] | [METTRE IMAGE FICHIER CONFIG] |
Version du 18 novembre 2020 à 15:51
TP PRA : MALTI Hind & AHOUASSOU Loris
Séance 1
Installation des systèmes d'exploitation
Pour installer la machine virtuelle, il faut se connecter en SSH sur le serveur 'capbreton'et se mettre en root
ssh capbreton.plil.info
Puis lancer la commande marquée ci dessous.
xen-create-image --hostname=pleurote --dist=buster --ip=100.64.0.20 --netmask=255.255.255.240 --dir=/usr/local/xen/ --password=XXXXXXX --gateway=100.64.0.5 --force
Nous avions acheté un nom de domaine sur Gandi, le thème étant les champignons, nous avons choisi "Pleurote".
Toutefois, il convient de préciser que si nous lançons cette commande en étant simplement en 'su',
cela ne fonctionnera pas et renverra une erreur de binaire "mkswap absent".
Pour corriger cela, il convient au préalable de se mettre en 'su -' plutôt qu'un simple 'su' qui chargerait uniquement les variables d'environnement de l'utilisateur qui l'a invoqué,
au lieu de celles du root véritable. En effet, le binaire 'mkswap' est présent dans le dossier /sbin qui n'est présent que dans les variables d'environnement de 'su -', d'où l'erreur.
Nous avons donc nos informations machine, que l'on retrouve dans le fichier /etc/xen/pleurote.cfg:
- Nom de domaine: pleurote
- @IP : 100.64.0.20
- Netmask: 255.255.255.240
- @MAC : 00:16:3E:64:5D:88
Nous avons modifier ce fichier afin d'apporter le bridge : IMA5sc
Par la suite, nous devions modifier le fichier de configuration de la machine virtuelle pour faire en sorte que les répertoires var et home de la machine virtuelle soient sur des partitions LVM de l’hôte. Cependant, avant de réaliser cette action, il nous fallait disposer de nos partitions logiques alloués. L'un des binômes de la promo s'est chargé de créer d'abord un volume de groupe 'storage' avec la commande suivante
vgcreate storage /dev/sde /dev/sdf
Dans ce volume de groupe, il nous a assigné chacun (binôme) deux volumes logiques de 10Giga
lvcreate -L10G LorisHind1 storage lvcreate -L10G LorisHind2 storage
À partir de là, nous pouvions modifier le fichier de configuration de notre machine virtuelle ( /etc/xen/pleurote.cfg ). Pour se faire, nous avons rajouté deux lignes au niveau de la section 'disks'.
'phy:/.../LorisHind1,xvdav3,w' 'phy:/.../LorisHind2,xvdav4,w'
La ligne avec '...xvdav3...' nous servira pour le répertoire 'var' et '...xvdav4...' pour le répertoire 'home'.
- Pour mettre le répertoire /var sur notre première partition, il faut réaliser les étapes suivantes :
D'abord accéder à la console de notre VM.
xl create -c etc/xen/pleurote.cfg xl console pleurote
Un fois dans notre VM, on va commencer par formater notre partition censée accueillir le répertoire /var
mkfs -t ext4 /dev/xvdav3
Ensuite on monte cette partition sur le répertoire '/mnt' afin de récupérer ce qui se trouve sur le répertoire /var :
mount /dev/xvdav3 /mnt mv /var/* /mnt
On rajoute la ligne suivante dans le fichier /etc/fstab
/dev/xvdav3 /var ext4 defaults 0 2
On démonte '/mnt'
umount /mnt
Avant de remonter suivant le /etc/fstab
mount -a
- Nous faisons de même pour le répertoire /home sur notre seconde partition
Pour l'installation des paquetages SSH, apache2 et bind, cela nécessitait un accès internet dépendant de la configuration des VLANs (qui n'était pas encore complètement opérationnelle)
Séance 2
Cassage de clef WEP d’un point d’accès WiFi
Pour commencer, nous installons d'abord le packet "aircrack-ng" Ensuite afin de lister ce que contient le réseau Wifi,
airmon-ng start wlp2s0mon airomon-ng --encrypt wep wlp2s0mon
Nous avons besoin de cette dernière commande pour avoir les informations nécessaire à notre wifi à craquer On note le bssId 04:DA:D2:9C:5050:59 et le channel 3
Nous choisissons de casser la clé WEP de la cracotte10 sur le channel 3, on enregistre les paquets dans webPack.
airodump-ng -c 3 –-bssid 04:DA:D2:9C:5050:59 -w paquets wlp2s0mon
La commande suivante permet de se faire passer pour un client afin de générer de l'activité sur le réseau.
aireplay-ng --fakeauth 30 -a 04:DA:D2:9C:5050:59 wlp2s0mon
Un fichier paquets_01.cap est créé. On utilise les paquets enregistrés pour réaliser le cassage:
aircrack-ng -z paquets_01.cap
On parvient à avoir la clé au bout de 50.000 de paquets, la dernière commande teste chaque 5000 paquets pour essayer de trouver le mot de passe. Voici le résultat trouvé :
A la toute fin il est nécessaire de faire un : airmon-ng stop wlp2s0mon
Ajout et configuration d'un serveur DNS sur la VM
Pour commencer nous avons installé les packages bind9 et apache2 puis nous avons fait l'acquisition du nom de domaine pleurote.site sur le site gandi.net qui nous servira tout au long du TP.
Dans le dossier de configuration de bind9 à l'emplacement /etc/bind, on créé le fichier de zone db.pleurote.site et on ajoute :
BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns1.pleurote.site. postmaster.pleurote.site. ( 3 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.pleurote.site. @ IN NS ns6.gandi.net. ns1 IN A 193.48.57.179
Dans le fichier named.conf.local :
zone "pleurote.site" IN { type master; file "/etc/bind/db.pleurote.site"; allow-transfer {217.70.177.40;}; };
Dans le fichier named.conf.options :
options { directory "/var/cache/bind"; dnssec-enable yes; dnssec-validation auto; listen-on-v6 { any; }; allow-recursion { localhost; }; };
Ensuite on se rend sur le site gandi.net puis dans "Domains" :
Dans l'onglet "Glue Record", on ajoute :
namespace : ns1.pleurote.site l'adresse IP de notre VM : 193.48.57.179
Dans l'onglet "Serveur de noms" on ajoute le DNS principal et secondaire :
DNS1 : ns1.pleurote.site DNS2 : ns6.gandi.net
Séance 3
Attaque de type "homme au milieu" par usurpation ARP
Intrusion sur un serveur d’application Web
Le but de cette partie, est de réussir à s'introduire sur le serveur honey.plil.info en exploitant d'éventuelles failles de sécurité. L'idée première que nous avons eu a été de faire des injections SQL dans le formulaire présenté.
Nous avons donc tester l'injection suivante aussi bien dans le champ d'identifiant
'OR 1=1#
Le caractère # à la fin représente un commentaire et permet donc d'ignorer tout ce qui suivra après dans la requête. Ainsi, cela correspond à faire
SELECT * FROM admins WHERE login= OR 1=1
Même s'il n'y a pas de Login clairement entré, l'expression 1=1 étant toujours vraie, la requête nous a renvoyée une table contenant des identifiants et des mots de passe.
[METTRE IMAGE TABLE]
Nous avons donc pris l'identifiant "admin" son mot de passe "jesuislechef" que nous avons ensuite entré naturellement dans le formulaire du site honey.plil.info. Cela a eu pour effet de nous donner l'accès à l'application Web. Nous avons un peu exploré l'application. Nous voulions pouvoir lire le fichier de configuration de base de données de phpmyadmin. Nous sommes entrés dans la Gestion des Manuels et nous avons ajouter un nouveau manuel : nom : nom ; path : /etc/phpmyadmin/config-db. Une fois ajouté, nous somme allé dans Recherche de manuels et nous avons téléchargé le fichier de config précédemment ajouté.
À ce niveau là, on a aucun fichier directement utile. Néanmoins, en utilisant nos connaissances du système UNIX, on peut avoir se servir de deux fichiers très utiles:
/etc/passwd et /etc/shadow. En effet, le premier c'est celui qui contient généralement des informations sur les utilisateurs qui peuvent se connecter au système (le nom, l'identifiant, répertoire personnel...), mais il ne contient pas les mots de passe de ces utilisateurs. En revanche, le second fichier, lui, contient une version hashée des mots de passe et seuls des utilisateurs très privilégiés peuvent y avoir accès.
[METTRE IMAGE FICHIER CONFIG]
Nous avons alors utilisé le mot de passe de la base de données sur phpmyadmin. Identifiant : root, Password : gencovid19. Suite à quoi on a eu l'accès. Après avoir un peu exploré, on est rentré dans la table users de la base test, ce qui nous a fournit le login rex et le mot de passe plainpassword.
[METTRE IMAGE TEST USERS]
Nous sommes retourné dans un terminal et nous avons lancée une connexion SSH.
ssh rex@honey.plil.info