Skip to content

Instantly share code, notes, and snippets.

@fvln
Created December 18, 2024 20:46
Show Gist options
  • Save fvln/5e8679f47dc5b1157126ca7fe6a41b29 to your computer and use it in GitHub Desktop.
Save fvln/5e8679f47dc5b1157126ca7fe6a41b29 to your computer and use it in GitHub Desktop.

BSI - DS du semestre 1

Aspects techniques

Connectez-vous en SSH au serveur indiqué en début de séance (avec putty, la commande ssh ou autre). Vingt comptes sont disponibles, de user01 à user20 ; le mot de passe est égal au login. Utilisez bien chacun un compte différent.

Instructions

  • Toutes les ressources techniques sont autorisées.
  • La plupart des questions acceptent plusieurs réponses, car il y a souvent plusieurs manières de faire sous Linux.
  • Certaines questions ne nécessitent aucune manipulation dans la session SSH. Mais vous avez le droit de tester tout ce que vous voulez !
  • Pour chaque réponse, il faut fournir :
    1. Une réponse rédigée
    2. Une capture d'écran ou un copier-coller texte des manipulations effectuées
    3. Une explication du rôle de ces manipulations

Questions avec manipulations dans la VM

Démons et Logs

  1. Le programme sleep infinity tourne en tâche de fond, exécuté par votre utilisateur. Comment faire pour lui envoyer un signal SIGKILL afin de l'arrêter ?

Exécution de commandes

  1. Dans votre répertoire utilisateur, taper précisément la commande suivante : compute_pi.sh. Pourquoi avez-vous une erreur command not found? (exemple ci-dessous)
user25@pc-91:~$ compute_pi.sh
-bash: compute_pi.sh: command not found
  1. Proposer deux méthodes permettant d'exécuter ce script sans avoir l'erreur ci-dessus.

  2. Qu'exécute le shell lorsque vous tapez la commande hello (script, binaire exécutable, alias, commande du shell, etc.) ? Comment l'avez-vous vérifié ?

  3. Exécutez la commande ./strange_script.sh dans votre répertoire utilisateur. Qu'affiche-t-elle ?

Manipulation de fichiers

  1. Un stagiaire a malencontreusement créé un fichier nommé $HOME dans votre répertoire utilisateur. Avec quelle commande pouvez-vous le supprimer sans que $HOME soit interprété comme une variable ? (justifiez votre réponse)

  2. Dans votre répertoire utilisateur : taper précisément la commande suivante : ./compute_euler.sh (qui calcule les décimales de la constante d'Euler), elle ne semble pas fonctionner. Comment résoudre le problème ci-dessus ?

user25@pc-91:~$ ./compute_euler.sh
-bash: ./compute_euler.sh: Permission denied

Paquets

  1. Avec apt, comment savoir quelles sont les dépendances du paquet libreoffice ?

  2. Avec dpkg, extraire le nom du mainteneur du paquet beef_1.0.2-3_amd64.deb présent dans votre répertoire personnel.

Droits d'accès et utilisateurs

  1. Un hacker péruvien a obtenu un accès au serveur et a créé un compte sur le système pour pérenniser son accès. Où peut-on identifier ce compte ?

  2. Comment savoir à quel(s) groupe(s) appartient votre utilisateur ?

Divers

  1. Que contient le fichier caché ?

  2. En utilisant par exemple la configuration des dépôts APT, identifiez la version de Debian installée sur le serveur.

  3. En utilisant systemctl : le service emergency est-il en cours d'exécution ?

Questions théoriques sans manipulation nécessaire dans la VM

(Mais vous pouvez quand même tester tout ce que vous voulez dans la VM)

  1. Vous souhaitez sauvegarder votre répertoire utilisateur toutes les semaines sur un serveur distant. Comment ajouter une tâche planifiée (avec cron) qui exécute la commande duplicity full /home/userXX tous les lundis à 2h du matin ?

  2. En jetant un coup d'oeil par-dessus l'épaule du sysadmin, vous apercevez que son PATH est défini ainsi. Comment pouvez-vous exploiter cette configuration pour obtenir un accès root sur le serveur ?

root@pc-473:~# echo $PATH
/tmp:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  1. Vous cherchez un fichier de configuration contenant le mot-clé "PermitRootLogin" mais la commande grep -R PermitRootLogin / affiche trop d'erreurs "Permission non accordée" que vous ne souhaitez pas voir. Comment modifier cette commande pour ne plus voir les erreurs ?

  2. En jetant un coup d'oeil par-dessus l'épaule du sysadmin, vous apercevez ce contenu dans son répertoire utilisateur. Décrivez les bits de mode (permissions) accordés au fichier run_backup.sh.

root@pc-473:~# ls -la /root/
total 48
drwxr-xr-x  3 root root 4096 janv.  5 23:20 .
drwxr-xr-x 18 root root 4096 déc.  26 23:20 ..
-rw-------  1 root root    5 déc.  26 23:51 .bash_history
-rw-r--r--  1 root root  570 janv. 31  2010 .bashrc
-rw-r--r--  1 root root  148 août  17  2015 .profile
-rwsrwxrwx  1 root root   39 Jan  6  2022 run_backup.sh
-rw-------  1 root root 9355 janv.  5 23:20 .viminfo
  1. Suite de la question précédente : proposez un moyen pour obtenir les droits root (pas besoin de tester sur le serveur, la faille n'est pas présente).

  2. Qui peut modifier le fichier /var/log/lastlog ci-dessous ?

user25@pc-91:~$ ls -la /var/log/lastlog
-rw-rw-r-- 1 root utmp 299884 Jan  9 21:07 /var/log/lastlog
  1. Comment afficher la liste des utilisateurs ayant ouvert une session sur le serveur ?

  2. Si vous exécutez le script suivant qui appartient à l'utilisateur root, sera-t-il exécuté avec ou sans les privilèges du root ? Pourquoi ?

user25@pc-91:~$ ls -la /tmp/script.sh
-rwxrwxr-x 1 root root 215 Jan  9 21:07 /tmp/script.sh
  1. Expliquer pourquoi le fichier /etc/passwd est accessible en lecture pour tous les utilisateurs.

  2. Pourquoi le script suivant, qui sera exécuté en root, est-il très (très) risqué à utiliser ?

#!/bin/bash

if [[ $# -ne 2 ]]
then
    echo "Usage: $0 <user to delete>"
    echo "A nice tool to delete all the file of a specified user"
    exit 1
fi

# Get the user home directory from /etc/passwd (6th field of the line)
user_dir = $(grep $1 /etc/passwd | cut -d ":" -f 6)

# Recursively remove this home directory
rm -rf $user_dir/
  1. Comment afficher les dernières lignes des logs systemd du service "ssh" ?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment