
Ici, nous allons configurer notre laboratoire dans notre machine virtuelle SEED Ubuntu 16.04 et nous devons d'abord installer le Go Git Service (GOGS) sur notre VM avant de pouvoir passer à l'exploitation de la vulnérabilité d'injection SQL. Pour configurer la VM, voici les étapes :
Étape 1 : Installer la base de données Une fois connecté au système, nous devons exécuter la commande suivante pour nous assurer que nos bibliothèques et dépôts sont à jour : $ sudo apt-get -y update
Nous utilisons MySQL comme serveur backend et nous devons donc l'installer sur notre VM, ce que nous pouvons faire avec la commande suivante : $ sudo apt-get – y install mysql-server
Pendant l'installation de la base de données, le système demande un mot de passe pour l'utilisateur root de la base de données. Nous allons maintenant créer un fichier appelé gogs.sql. Nous avons utilisé nano, mais n'importe quel éditeur de fichiers fera l'affaire.
Nous collons ensuite les instructions SQL suivantes dans le fichier gogs.sql et le sauvegardons. DROP DATABASE IF EXISTS gogs; CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8 COLLATE utf8_general_ci;
Maintenant, nous exécutons le fichier gogs.sql avec MySQL pour créer la base de données GOGS à l'aide de la commande : $ mysql – u root -p < gogs.sql
Le mot de passe root créé lors de l'installation de la base de données nous est alors demandé ; nous le saisissons et parvenons à créer la base de données GOGS avec succès.
Pour installer GOGS à partir des sources, nous avons besoin d'outils de gestion de versions comme Git et Mercurial. Pour les installer sur notre VM, nous utilisons la commande suivante : $ sudo apt-get -y install mercurial git
Étape 2 : Installer Go GOGS est écrit en langage Go, nous devons donc l'installer avant de compiler GOGS.
Tout d'abord, nous devons définir quelques variables d'environnement. Pour les définir, nous modifions le fichier ~/.bashrc et ajoutons les lignes suivantes, puis sauvegardons le fichier : export GOPATH=/home/git/go export GOROOT=/usr/local/src/go export PATH=${PATH}:$GOROOT/bin
Pour nous assurer que nos modifications ont bien été appliquées, nous exécutons la commande suivante : $ source ~/.bashrc
Maintenant, nous utilisons la commande wget pour installer l'une des versions compilées de Go. La commande est la suivante : $ wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz
Ensuite, nous la décompressons avec la commande suivante : $ tar zxf go1.4.2.linux-amd64.tar.gz
Une fois le fichier décompressé, nous changeons notre répertoire de travail vers $GOROOT défini dans ~/.bashrc. La commande pour ce faire est : $ sudo mv go $GOROOT
Maintenant, nous vérifions l'installation de Go sur notre VM avec la commande : $ go
Pour accéder au dossier Gogs avec tous les documents requis, il suffit de cloner le dépôt Gogs dans le chemin $GOPATH/src/github.com/gogits/gogs. Cela peut être fait avec la commande suivante : $ cd $GOPATH/src/github.com/gogits/gogs
Nous allons maintenant installer Supervisor pour gérer le service Gogs à l'aide de la commande : $ sudo apt-get -y install supervisor
Une fois Supervisor installé sur notre VM, nous créons un démon Gogs en ajoutant une section de configuration pour Supervisor. Pour ce faire, nous devons d'abord définir un emplacement pour les fichiers journaux. L'emplacement des fichiers journaux est /var/log/gogs. La commande pour ce faire est : $ sudo mkdir -p /var/log/gogs
Avec un emplacement défini pour stocker les journaux, nous modifions le fichier de configuration de Supervisor situé dans /etc/supervisor/supervisord.conf. La commande pour ce faire est : $ sudo nano /etc/supervisor/supervisord.conf
Nous ajoutons le contenu suivant au fichier pour créer la section Gogs :
[program:gogs] directory=/home/git/go/src/github.com/gogits/gogs/ command=/home/git/go/src/github.com/gogits/gogs/gogs web autostart=true autorestart=true startsecs=10 stdout_logfile=/var/log/gogs/stdout.log stdout_logfile_maxbytes=1MB stdout_logfile_backups=10 stdout_capture_maxbytes=1MB stderr_logfile=/var/log/gogs/stderr.log stderr_logfile_maxbytes=1MB stderr_logfile_backups=10 stderr_capture_maxbytes=1MB environment = HOME="/home/git", USER="git" user = git
Le code ci-dessus définit les commandes que nous souhaitons exécuter pour démarrer Gogs, démarrer Supervisor, fournir l'emplacement des fichiers journaux et les variables d'environnement correspondantes. Maintenant, nous redémarrons Supervisor pour que nos modifications prennent effet en utilisant la commande : $ sudo service supervisor restart
Pour vérifier que Gogs est bien en cours d'exécution, nous utilisons la commande suivante : $ ps -ef | grep gogs La commande ps affiche des informations sur les processus actifs et nous filtrons ces résultats pour obtenir les informations relatives à Gogs.
Une autre méthode pour vérifier que le serveur est en cours d'exécution consiste à consulter le fichier stdout.log à l'aide de la commande : $ tail /var/log/gogs/stdout.log
Maintenant, nous pouvons même visiter la page web qui affichera la page d'installation. L'URL correspondante sera : http://10.0.2.15:3000
Étape 4 : Configurer Nginx comme proxy inverse Tout d'abord, nous devons installer Nginx, ce que nous faisons avec la commande suivante : $ sudo apt-get -y install nginx
Maintenant, nous créons un fichier de configuration Nginx pour Gogs, qui sera situé dans /etc/nginx/sites-available/gogs. Nous ajoutons également le code suivant au fichier :
server { listen 80; server_name "AJOUTER L'ADRESSE IP ICI!!!";
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location / {
proxy_pass http://localhost:3000;
}
} Nous devons également créer un lien symbolique pour que Nginx puisse accéder au fichier. Le lien symbolique est créé entre /etc/nginx/sites-available/gogs et /etc/nginx/sites-enabled/gogs. Nous pouvons créer le lien symbolique à l'aide de la commande suivante :
$ sudo ln -s /etc/nginx/sites-available/gogs /etc/nginx/sites-enabled/gogs Enfin, nous devons redémarrer le service Nginx pour activer les configurations des hôtes virtuels. La commande de redémarrage est : $ sudo service nginx restart
Maintenant, nous pouvons visiter l'URL précédemment utilisée sans le numéro de port. L'URL est : http://10.0.2.15
Étape 5 : Initialiser Gogs Avant de pouvoir initialiser Gogs, nous devons remplir certaines informations sur la page web du serveur dont l'URL est : http://10.0.2.15/install
Dans la première section, nous renseignons les informations concernant la base de données, qui dans notre cas est MySQL. Les champs sont les suivants :
Type de base de données : MySQL Hôte : 127.0.0.1:3306 Utilisateur : root Mot de passe : seedubuntu Nom de la base de données : gogs
Dans la deuxième section, nous renseignons les paramètres généraux de Gogs. Les champs correspondants sont : Chemin racine du dépôt : /home/git/gogs-repositories Utilisateur d'exécution : git Domaine : 10.0.2.15 Port HTTP : 300 URL de l'application : http://10.0.2.15:3000
Ensuite, nous modifions les paramètres du nom d'utilisateur et du mot de passe de l'administrateur dans la section Paramètres du compte administrateur.
Maintenant, nous cliquons sur "Installer Gogs" et nous nous connectons.
Étape 6 : Tester Gogs Pour nous assurer que Gogs fonctionne comme prévu, nous effectuons un test trivial de pull/push. Tout d'abord, nous allons à l'URL http://10.0.2.15/repo/create et créons un dépôt nommé my-test-repo.
Une fois toutes les informations requises remplies, nous pouvons procéder à la création du dépôt en cliquant sur le bouton vert "Créer un dépôt".
Maintenant, nous pouvons également cloner ce dépôt à l'aide de la commande : $ git clone http://10.0.2.15//my-test-repo.git
Nous nous rendons ensuite à l'emplacement du dépôt sur notre VM et mettons à jour le fichier README.md. Enfin, nous commitons toutes les modifications et les poussons à l'aide de la commande : $ git add –-all && git commit -m "init command" && git push origin master
Notre dépôt est créé avec succès et maintenant, lorsque nous visitons l'URL http://10.0.2.15/iammuskaan/my-test-repo, nous pouvons voir notre contenu ajouté au fichier README.md.