
Qui allestiremo il nostro laboratorio nella VM SEED Ubuntu 16.04 e dobbiamo installare il Go Git Service (GOGS) sulla nostra VM prima di poter sfruttare la vulnerabilità di SQL injection. Per configurare la VM, ecco i passaggi:
Passo 1: Installare il Database Una volta effettuato l'accesso al sistema, eseguiamo il seguente comando per assicurarci che le librerie e i repository siano aggiornati $ sudo apt-get -y update
Utilizziamo MySQL Server come backend e quindi dobbiamo installarlo sulla nostra VM, cosa che possiamo fare con il seguente comando: $ sudo apt-get – y install mysql-server
Durante l'installazione del database, il sistema richiede una password per l'utente root del database. Ora creeremo un file chiamato gogs.sql. Abbiamo usato nano, ma qualsiasi editor di file funziona.
Quindi incolliamo le seguenti istruzioni SQL nel file gogs.sql e lo salviamo. DROP DATABASE IF EXISTS gogs; CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8 COLLATE utf8_general_ci;
Ora eseguiamo il file gogs.sql con MySQL per creare il database GOGS usando il comando: $ mysql – u root -p < gogs.sql
Ci viene quindi richiesta la password root creata durante la fase di installazione del database, che inseriamo e riusciamo a creare con successo il database GOGS.
Per installare GOGS dal sorgente abbiamo bisogno di strumenti di version control come Git e Mercurial e per installarli sulla nostra VM, usiamo il seguente comando: $ sudo apt-get -y install mercurial git
Passo 2: Installare Go GOGS è scritto usando il linguaggio di programmazione Go e quindi dobbiamo installarlo prima di compilare GOGS.
Innanzitutto, ci sono alcune variabili d'ambiente che dobbiamo impostare e per impostarle modifichiamo il file ~/.bashrc e aggiungiamo le seguenti righe e salviamo il file: export GOPATH=/home/git/go export GOROOT=/usr/local/src/go export PATH=${PATH}:$GOROOT/bin
Per assicurarci che le nostre modifiche siano state applicate correttamente, eseguiamo il seguente comando: $ source ~/.bashrc
Ora usiamo il comando wget per installare una delle versioni compilate di Go e il comando è il seguente: $ wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz
Quindi lo decomprimiamo usando il seguente comando: $ tar zxf go1.4.2.linux-amd64.tar.gz
Una volta decompresso il file, cambiamo la nostra directory di lavoro in $GOROOT definito in ~/.bashrc, il comando per farlo è: $ sudo mv go $GOROOT
Ora, verifichiamo l'installazione di Go nella nostra VM usando il comando: $ go
Per accedere alla cartella Gogs con tutti i documenti necessari, basta clonare la cartella Gogs nel percorso $GOPATH/src/github.com/gogits/gogs Si può fare con il seguente comando: $ cd $GOPATH/src/github.com/gogits/gogs
Ora installeremo Supervisor per gestire il servizio Gogs usando il comando: $ sudo apt-get -y install supervisor
Con Supervisor installato nella nostra VM, ora creiamo un demone Gogs creando una sezione di configurazione di Supervisor. Per farlo, dobbiamo prima definire una posizione per i file di log. La posizione dei file di log è /var/log/gogs. Il comando per farlo è: $ sudo mkdir -p /var/log/gogs
Con una posizione definita per i log da memorizzare, procediamo a modificare il file di configurazione di Supervisor che si trova in /etc/supervisor/supervisord.conf e il comando per farlo è: $ sudo nano /etc/supervisor/supervisord.conf
Aggiungiamo il seguente contenuto al file per creare la sezione 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
Il codice sopra definisce i comandi che vogliamo eseguire per avviare Gogs, avviare Supervisor, fornire la posizione dei file di log e le corrispondenti variabili d'ambiente. Ora riavviamo Supervisor affinché le nostre modifiche abbiano effetto usando il comando: $ sudo service supervisor restart
Per verificare che Gogs sia effettivamente in esecuzione, usiamo il seguente comando: $ ps -ef | grep gogs Il comando ps mostra informazioni sui processi attivi e filtriamo (grep) tra questi risultati per ottenere informazioni su Gogs.
Un altro metodo per verificare che il server sia in esecuzione è guardare il file stdout.log usando il comando: $ tail /var/log/gogs/stdout.log
Ora possiamo anche visitare la pagina web che mostrerà la pagina di installazione. L'URL per farlo sarà: http://10.0.2.15:3000
Passo 4: Configurare Nginx come Proxy Inverso Innanzitutto, dobbiamo installare Nginx e lo facciamo usando il seguente comando: $ sudo apt-get -y install nginx
Ora creiamo un file di configurazione Nginx per Gogs che si troverà in etc/nginx/sites-available/gogs. Aggiungiamo anche il seguente codice al file:
server { listen 80; server_name “INSERISCI QUI L'INDIRIZZO IP!!!”;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location / {
proxy_pass http://localhost:3000;
}
} Dobbiamo anche creare un collegamento simbolico affinché Nginx possa accedere al file. Il collegamento simbolico viene creato tra /etc/nginx/sites-available/gogs e /etc/nginx/sites-enabled/gogs. Possiamo creare il collegamento simbolico usando il seguente comando:
$ sudo ln -s /etc/nginx/sites-available/gogs /etc/nginx/sites-enabled/gogs Infine, dobbiamo riavviare il servizio Nginx per attivare le configurazioni degli host virtuali. Il comando per riavviare è: $ sudo service nginx restart
Ora possiamo visitare l'URL precedentemente usato senza il numero di porta. L'URL è: http://10.0.2.15
Passo 5: Inizializzare Gogs Prima di poter inizializzare Gogs, dobbiamo compilare alcune informazioni sulla pagina web del server il cui URL è: http://10.0.2.15/install
Nella prima sezione, inseriamo informazioni sul database, che nel nostro caso è MySQL. I campi sono i seguenti:
Database Type: MySQL Host: 127.0.0.1:3306 User: root Password: seedubuntu Database Name: gogs
Nella seconda sezione, inseriamo le impostazioni generali di Gogs e i campi per farlo sono: Repository Root Path: /home/git/gogs-repositories Run User: git Domain: 10.0.2.15 HTTP Port: 300 Application URL: http://10.0.2.15:3000
Quindi, modifichiamo le impostazioni del nome utente e della password dell'amministratore nella sezione Admin Account Settings.
Ora, clicchiamo su "Install Gogs" ed effettuiamo l'accesso.
Passo 6: Testare Gogs Per assicurarci che Gogs funzioni come previsto, eseguiamo un semplice test di pull/push. Innanzitutto, andiamo all'URL http://10.0.2.15/repo/create e creiamo un repository con il nome my-test-repo.
Con tutte le informazioni richieste compilate, possiamo procedere alla creazione del repository cliccando sul pulsante verde "Create Repository".
Ora possiamo anche clonare questo repository usando il comando: $ git clone http://10.0.2.15//my-test-repo.git
Ci spostiamo quindi nella posizione del repository sulla nostra VM e aggiorniamo il file README.md. Infine, eseguiamo il commit di tutte le modifiche e le spingiamo usando il comando: $ git add –-all && git commit -m “init command” && git push origin master
Il nostro repository è stato creato con successo e ora, quando visitiamo l'URL http://10.0.2.15/iammuskaan/my-test-repo, possiamo vedere il nostro contenuto aggiunto al file README.md.