
Здесь мы настроим нашу лабораторию в виртуальной машине SEED Ubuntu 16.04. Для начала необходимо установить Go Git Service (GOGS) на нашу ВМ, прежде чем переходить к эксплуатации уязвимости SQL-инъекции. Для настройки ВМ выполните следующие шаги:
Шаг 1: Установка базы данных После входа в систему выполните следующую команду, чтобы убедиться, что библиотеки и репозитории обновлены: $ sudo apt-get -y update
В качестве бэкенда мы используем MySQL сервер, поэтому его необходимо установить на ВМ. Это можно сделать с помощью команды: $ sudo apt-get – y install mysql-server
Во время установки базы данных система запросит пароль для root-пользователя базы данных. Теперь создадим файл gogs.sql. Мы используем nano, но подойдёт любой текстовый редактор.
Затем вставьте следующие SQL-операторы в файл gogs.sql и сохраните его:
DROP DATABASE IF EXISTS gogs;
CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8 COLLATE utf8_general_ci;
Теперь выполним файл gogs.sql с помощью MySQL для создания базы данных GOGS командой:
$ mysql – u root -p < gogs.sql
После этого будет запрошен пароль root, созданный на этапе установки базы данных. Введите его — база данных GOGS будет успешно создана.
Чтобы установить GOGS из исходных кодов, необходимы инструменты управления версиями, такие как Git и Mercurial. Установите их на ВМ следующей командой: $ sudo apt-get -y install mercurial git
Шаг 2: Установка Go GOGS написан на языке программирования Go, поэтому перед компиляцией GOGS необходимо установить Go.
Сначала нужно задать несколько переменных окружения. Для этого отредактируйте файл ~/.bashrc, добавив в него следующие строки, и сохраните файл:
export GOPATH=/home/git/go
export GOROOT=/usr/local/src/go
export PATH=${PATH}:$GOROOT/bin
Чтобы убедиться, что изменения применились, выполните команду: $ source ~/.bashrc
Теперь используем wget для загрузки одной из скомпилированных версий Go:
$ wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz
Затем распакуйте архив: $ tar zxf go1.4.2.linux-amd64.tar.gz
После распаковки переместите содержимое в каталог $GOROOT, определённый в ~/.bashrc:
$ sudo mv go $GOROOT
Проверьте установку Go на ВМ командой: $ go
Чтобы получить папку Gogs со всеми необходимыми файлами, просто клонируйте репозиторий Gogs в путь $GOPATH/src/github.com/gogits/gogs. Это можно сделать следующей командой:
$ cd $GOPATH/src/github.com/gogits/gogs
Теперь установите Supervisor для управления сервисом Gogs: $ sudo apt-get -y install supervisor
После установки Supervisor на ВМ создайте демон Gogs, добавив соответствующую секцию в конфигурацию Supervisor. Для этого сначала определите расположение файлов журналов — /var/log/gogs. Создайте каталог:
$ sudo mkdir -p /var/log/gogs
Затем отредактируйте конфигурационный файл Supervisor, который находится по пути /etc/supervisor/supervisord.conf:
$ sudo nano /etc/supervisor/supervisord.conf
Добавьте в конец файла следующее содержимое для создания секции 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
Приведённый выше код определяет команды для запуска Gogs, запуска Supervisor, указывает расположение файлов журналов и соответствующие переменные окружения. Теперь перезапустите Supervisor, чтобы изменения вступили в силу: $ sudo service supervisor restart
Чтобы проверить, что Gogs действительно запущен, выполните:
$ ps -ef | grep gogs
Команда ps отображает информацию об активных процессах, а grep отфильтровывает строки, относящиеся к Gogs.
Другой способ проверить работу сервера — просмотреть файл stdout.log:
$ tail /var/log/gogs/stdout.log
Теперь можно даже перейти на веб-страницу, где отобразится страница установки. URL: http://10.0.2.15:3000
Шаг 4: Настройка Nginx в качестве обратного прокси Сначала установите Nginx: $ sudo apt-get -y install nginx
Создайте конфигурационный файл Nginx для Gogs по пути etc/nginx/sites-available/gogs и добавьте в него следующий код:
server { listen 80; server_name "УКАЖИТЕ IP АДРЕС!!!";
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
location / {
proxy_pass http://localhost:3000;
}
}
Также необходимо создать символическую ссылку, чтобы Nginx мог получить доступ к файлу. Ссылка создаётся между /etc/nginx/sites-available/gogs и /etc/nginx/sites-enabled/gogs. Для этого выполните:
$ sudo ln -s /etc/nginx/sites-available/gogs /etc/nginx/sites-enabled/gogs
Наконец, перезапустите службу Nginx для активации конфигураций виртуальных хостов: $ sudo service nginx restart
Теперь можно перейти по ранее использованному URL без указания порта: http://10.0.2.15
Шаг 5: Инициализация Gogs Перед инициализацией Gogs необходимо заполнить определённые данные на веб-странице сервера по адресу: http://10.0.2.15/install
В первом разделе укажите информацию о базе данных; в нашем случае это MySQL. Поля:
Database Type: MySQL Host: 127.0.0.1:3306 User: root Password: seedubuntu Database Name: gogs
Во втором разделе заполните общие настройки Gogs:
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
Затем измените имя администратора и пароль в разделе "Admin Account Settings".
После этого нажмите "Install Gogs" и войдите в систему.
Шаг 6: Тестирование Gogs
Чтобы убедиться, что Gogs работает корректно, выполните простой тест pull/push.
Сначала перейдите по URL http://10.0.2.15/repo/create и создайте репозиторий с именем my-test-repo.
Заполнив все необходимые поля, создайте репозиторий, нажав зелёную кнопку "Create Repository".
Теперь клонируйте этот репозиторий командой: $ git clone http://10.0.2.15//my-test-repo.git
Перейдите в каталог репозитория на ВМ и обновите файл README.md.
Затем зафиксируйте все изменения и отправьте их:
$ git add –-all && git commit -m "init command" && git push origin master
Репозиторий успешно создан. Теперь, перейдя по URL http://10.0.2.15/iammuskaan/my-test-repo, вы увидите добавленное содержимое в файле README.md.