
Aqui iremos configurar nosso laboratório em nossa VM SEED Ubuntu 16.04 e precisamos instalar o Go Git Service (GOGS) em nossa VM antes de podermos prosseguir para explorar a vulnerabilidade de injeção SQL. Para configurar a VM, aqui estão os passos:
Passo 1: Instalar o Banco de Dados Assim que fizermos login no sistema, devemos executar o seguinte comando para garantir que nossas bibliotecas e repositórios estejam atualizados: $ sudo apt-get -y update
Estamos usando MySQL como servidor de banco de dados e, portanto, precisamos instalá-lo em nossa VM, o que podemos fazer com o seguinte comando: $ sudo apt-get – y install mysql-server
Durante a instalação do banco de dados, o sistema solicita uma senha para o usuário root do banco de dados. Agora criaremos um arquivo chamado gogs.sql. Usamos nano, mas qualquer editor de arquivos funciona.
Em seguida, colamos as seguintes instruções SQL no arquivo gogs.sql e o salvamos. DROP DATABASE IF EXISTS gogs; CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8 COLLATE utf8_general_ci;
Agora executaremos o arquivo gogs.sql com MySQL para criar o banco de dados GOGS usando o comando: $ mysql – u root -p < gogs.sql
Somos então solicitados a informar a senha root criada durante a fase de instalação do banco de dados, que inserimos e conseguimos criar o banco de dados GOGS com sucesso.
Para instalar o GOGS a partir do código-fonte, precisamos de ferramentas de controle de versão como Git e Mercurial. Para instalá-los em nossa VM, usamos o seguinte comando: $ sudo apt-get -y install mercurial git
Passo 2: Instalar o Go O GOGS é escrito na linguagem de programação Go e, portanto, precisamos instalá-lo antes de compilar o GOGS.
Primeiramente, existem algumas variáveis de ambiente que precisamos configurar. Para configurá-las, editamos o arquivo ~/.bashrc e adicionamos as seguintes linhas, salvando o arquivo: export GOPATH=/home/git/go export GOROOT=/usr/local/src/go export PATH=${PATH}:$GOROOT/bin
Para garantir que nossas alterações foram aplicadas com sucesso, executamos o seguinte comando: $ source ~/.bashrc
Agora usamos o comando wget para instalar uma das versões compiladas do Go. O comando é o seguinte: $ wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz
Em seguida, descompactamos usando o seguinte comando: $ tar zxf go1.4.2.linux-amd64.tar.gz
Assim que nosso arquivo for descompactado, alteramos nosso diretório de trabalho para $GOROOT definido em ~/.bashrc. O comando para isso é: $ sudo mv go $GOROOT
Agora, verificamos a instalação do Go em nossa VM usando o comando: $ go
Para acessar a pasta do Gogs com todos os documentos necessários, basta clonar a pasta do Gogs para o caminho $GOPATH/src/github.com/gogits/gogs. Isso pode ser feito com o seguinte comando: $ cd $GOPATH/src/github.com/gogits/gogs
Agora instalaremos o Supervisor para gerenciar o serviço do Gogs usando o comando: $ sudo apt-get -y install supervisor
Com o Supervisor instalado em nossa VM, agora criamos um daemon do Gogs criando uma seção de configuração do Supervisor. Para fazer isso, primeiro precisamos definir um local para os arquivos de log. O local dos arquivos de log é /var/log/gogs. O comando para isso é: $ sudo mkdir -p /var/log/gogs
Com um local definido para os logs serem armazenados, prosseguimos editando o arquivo de configuração do Supervisor, localizado em /etc/supervisor/supervisord.conf. O comando para isso é: $ sudo nano /etc/supervisor/supervisord.conf
Adicionamos o seguinte conteúdo ao arquivo para criar a seção do 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
O código acima define os comandos que queremos executar para iniciar o Gogs, iniciar o Supervisor, fornecer o local dos arquivos de log e as variáveis de ambiente correspondentes. Agora reiniciamos o Supervisor para que nossas alterações entrem em vigor usando o comando: $ sudo service supervisor restart
Para verificar se o Gogs está realmente em execução, usamos o seguinte comando: $ ps -ef | grep gogs O comando ps exibe informações sobre os processos ativos e filtramos esses resultados para obter informações do Gogs.
Outro método para verificar se o servidor está em execução é visualizar o arquivo stdout.log usando o comando: $ tail /var/log/gogs/stdout.log
Agora podemos até acessar a página web, que exibirá a página de instalação. A URL para isso será: http://10.0.2.15:3000
Passo 4: Configurar o Nginx como Proxy Reverso Primeiramente, precisamos instalar o Nginx, o que fazemos usando o seguinte comando: $ sudo apt-get -y install nginx
Agora, criamos um arquivo de configuração do Nginx para o Gogs, que estará localizado em etc/nginx/sites-available/gogs. Também adicionamos o seguinte código ao arquivo:
server { listen 80; server_name “ADICIONE O ENDEREÇO IP AQUI!!!”;
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location / {
proxy_pass http://localhost:3000;
}
} Também precisamos criar um link simbólico para que o Nginx possa acessar o arquivo. O link simbólico é criado entre /etc/nginx/sites-available/gogs e /etc/nginx/sites-enabled/gogs. Podemos criar o link simbólico usando o seguinte comando:
$ sudo ln -s /etc/nginx/sites-available/gogs /etc/nginx/sites-enabled/gogs Finalmente, precisamos reiniciar o serviço do Nginx para ativar as configurações do host virtual. O comando para reiniciar é: $ sudo service nginx restart
Agora, podemos acessar a URL usada anteriormente sem usar o número da porta. A URL é: http://10.0.2.15
Passo 5: Inicializar o Gogs Antes de inicializar o Gogs, devemos preencher algumas informações na página web do servidor, cuja URL é: http://10.0.2.15/install
Na primeira seção, preenchemos informações sobre o banco de dados, que, no nosso caso, é MySQL. Os campos são os seguintes:
Tipo de Banco de Dados: MySQL Host: 127.0.0.1:3306 Usuário: root Senha: seedubuntu Nome do Banco de Dados: gogs
Na segunda seção, preenchemos as configurações gerais do Gogs. Os campos para isso são: Caminho Raiz do Repositório: /home/git/gogs-repositories Usuário de Execução: git Domínio: 10.0.2.15 Porta HTTP: 300 URL da Aplicação: http://10.0.2.15:3000
Em seguida, modificamos as configurações de nome de usuário e senha do administrador em Configurações da Conta de Administrador.
Agora, clicamos em "Instalar Gogs" e fazemos login.
Passo 6: Testar o Gogs Para garantir que o Gogs está realmente funcionando conforme o esperado, realizamos um teste trivial de pull/push. Primeiramente, acessamos a URL http://10.0.2.15/repo/create e criamos um repositório com o nome my-test-repo.
Com todas as informações necessárias preenchidas, podemos prosseguir com a criação do repositório clicando no botão verde "Criar Repositório".
Agora, também podemos clonar este repositório usando o comando: $ git clone http://10.0.2.15//my-test-repo.git
Em seguida, nos movemos para o local do repositório em nossa VM e atualizamos o arquivo README.md. Finalmente, fazemos commit de todas as alterações e as enviamos usando o comando: $ git add –-all && git commit -m “init command” && git push origin master
Nosso repositório foi criado com sucesso e agora, quando visitamos a URL http://10.0.2.15/iammuskaan/my-test-repo, podemos ver nosso conteúdo adicionado ao arquivo README.md.