
Aquí configuraremos nuestro laboratorio en nuestra máquina virtual SEED Ubuntu 16.04 y necesitamos instalar el Servicio Git de Go (GOGS) en nuestra máquina virtual antes de poder pasar a explotar la vulnerabilidad de inyección SQL. Para configurar la máquina virtual, estos son los pasos:
Paso 1: Instalar la base de datos Una vez que hayamos iniciado sesión en el sistema, debemos ejecutar el siguiente comando para asegurarnos de que nuestras librerías y repositorios estén actualizados $ sudo apt-get -y update
Estamos usando el servidor MySQL en el backend y, por lo tanto, debemos instalarlo en nuestra máquina virtual, lo cual podemos hacer con el siguiente comando: $ sudo apt-get – y install mysql-server
Durante la instalación de la base de datos, el sistema solicita una contraseña de usuario root para la base de datos. Ahora crearemos un archivo llamado gogs.sql. Hemos usado nano, pero cualquier editor de archivos funcionará.
Luego pegamos las siguientes sentencias SQL en el archivo gogs.sql y lo guardamos. DROP DATABASE IF EXISTS gogs; CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8 COLLATE utf8_general_ci;
Ahora ejecutaremos el archivo gogs.sql con MySQL para crear la base de datos GOGS usando el comando: $ mysql – u root -p < gogs.sql
A continuación, se nos solicita la contraseña de root creada durante la fase de instalación de la base de datos, la cual ingresamos y logramos construir exitosamente la base de datos GOGS.
Para instalar GOGS desde el código fuente necesitamos herramientas de control de versiones como Git y Mercurial y, para instalarlas en nuestra máquina virtual, usamos el siguiente comando: $ sudo apt-get -y install mercurial git
Paso 2: Instalar Go GOGS está escrito usando el lenguaje de programación Go y, por lo tanto, debemos instalarlo antes de compilar GOGS.
En primer lugar, hay algunas variables de entorno que necesitamos configurar y, para configurarlas, editamos el archivo ~/.bashrc y le añadimos las siguientes líneas y guardamos el archivo: export GOPATH=/home/git/go export GOROOT=/usr/local/src/go export PATH=${PATH}:$GOROOT/bin
Para asegurarnos de que nuestros cambios se hayan aplicado correctamente, ejecutamos el siguiente comando: $ source ~/.bashrc
Ahora usamos el comando wget para instalar una de las versiones compiladas de Go y el comando es el siguiente: $ wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz
Luego lo descomprimimos usando el siguiente comando: $ tar zxf go1.4.2.linux-amd64.tar.gz
Una vez que nuestro archivo ha sido descomprimido, cambiamos nuestro directorio de trabajo a $GOROOT definido en ~/.bashrc, el comando para ello es: $ sudo mv go $GOROOT
Ahora, verificamos la instalación de Go en nuestra máquina virtual usando el comando: $ go
Para acceder a la carpeta Gogs con todos los documentos requeridos, simplemente clone el repositorio de Gogs en la ruta $GOPATH/src/github.com/gogits/gogs Se puede hacer con el siguiente comando: $ cd $GOPATH/src/github.com/gogits/gogs
Ahora instalaremos Supervisor para gestionar el servicio Gogs usando el comando: $ sudo apt-get -y install supervisor
Con Supervisor instalado en nuestra máquina virtual, ahora creamos un daemon de Gogs creando una sección de configuración de Supervisor. Para hacerlo, primero debemos definir una ubicación para los archivos de registro. La ubicación de los archivos de registro es /var/log/gogs. El comando para ello es: $ sudo mkdir -p /var/log/gogs
Con una ubicación definida para almacenar los registros, procedemos a editar el archivo de configuración de Supervisor que se encuentra en /etc/supervisor/supervisord.conf y el comando para ello es: $ sudo nano /etc/supervisor/supervisord.conf
Añadimos el siguiente contenido al archivo para crear la sección de 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
El código anterior define los comandos que queremos ejecutar para iniciar Gogs, iniciar Supervisor, proporcionar la ubicación de los archivos de registro y las variables de entorno correspondientes. Ahora reiniciamos Supervisor para que nuestros cambios surtan efecto usando el comando: $ sudo service supervisor restart
Para verificar que Gogs realmente se está ejecutando, usamos el siguiente comando: $ ps -ef | grep gogs El comando ps muestra información sobre los procesos activos y filtramos esos resultados con grep para obtener información sobre Gogs.
Otro método para verificar que el servidor está en ejecución es revisando el archivo stdout.log usando el comando: $ tail /var/log/gogs/stdout.log
Ahora incluso podemos visitar la página web que mostrará la página de instalación. La URL para ello será: http://10.0.2.15:3000
Paso 4: Configurar Nginx como proxy inverso En primer lugar, necesitamos instalar Nginx y lo hacemos usando el siguiente comando: $ sudo apt-get -y install nginx
Ahora, creamos un archivo de configuración de Nginx para Gogs que se ubicará en etc/nginx/sites-available/gogs. También añadimos el siguiente código al archivo:
server { listen 80; server_name “AÑADE LA DIRECCIÓN IP AQUÍ!!!”;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location / {
proxy_pass http://localhost:3000;
}
} También necesitamos crear un enlace simbólico para que Nginx pueda acceder al archivo. El enlace simbólico se crea entre /etc/nginx/sites-available/gogs y /etc/nginx/sites-enabled/gogs. Podemos crear el enlace simbólico usando el siguiente comando:
$ sudo ln -s /etc/nginx/sites-available/gogs /etc/nginx/sites-enabled/gogs Finalmente, necesitamos reiniciar el servicio de Nginx para activar las configuraciones del host virtual. El comando para reiniciar es: $ sudo service nginx restart
Ahora, podemos visitar la URL utilizada anteriormente sin usar el número de puerto. La URL es: http://10.0.2.15
Paso 5: Inicializar Gogs Antes de poder inicializar Gogs, debemos completar cierta información en la página web del servidor cuya URL es: http://10.0.2.15/install
En la primera sección, completamos la información sobre la base de datos, que en nuestro caso es MySQL. Los campos son los siguientes:
Database Type: MySQL Host: 127.0.0.1:3306 User: root Password: seedubuntu Database Name: gogs
En la segunda sección, completamos la configuración general de Gogs y los campos para ello son: 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
Luego, modificamos el nombre de usuario y la contraseña del administrador en Admin Account Settings.
Ahora, hacemos clic en "Install Gogs" e iniciamos sesión.
Paso 6: Probar Gogs Para asegurarnos de que Gogs realmente funciona como se diseñó, realizamos una prueba trivial de pull/push. En primer lugar, vamos a la URL http://10.0.2.15/repo/create y creamos un repositorio con el nombre my-test-repo.
Con toda la información requerida completada, podemos continuar con la creación del repositorio haciendo clic en el botón verde "Create Repository".
Ahora, también podemos clonar este repositorio usando el comando: $ git clone http://10.0.2.15//my-test-repo.git
Luego nos movemos a la ubicación del repositorio en nuestra máquina virtual y actualizamos el archivo README.md. Finalmente, confirmamos todos los cambios y los enviamos usando el comando: $ git add –-all %% git commit -m “init command”” && git push origin master
Nuestro repositorio se creó exitosamente y ahora, cuando visitamos la URL http://10.0.2.15/iammuskaan/my-test-repo podemos ver nuestro contenido añadido al archivo README.md.