
Несмотря на то, что основной инструментарий Kali Linux предназначен, чтобы ломать, я сторонник теории, что лучше всех «ломает» тот, кто строил. Уж эти так ломают, как другие никогда не справятся. Ведь не зря говорят «ломать не строить, душа не болит», вот и будем строить с душой то, что в будущем придётся ломать (а там и знать, как защищать).
Первая задача – написать простой сайт на python3. Но, прежде чем у нас будет возможность приступить к самому сайту надо сначала запустить сервер, на котором он будет работать. Для этого мы создадим каталог (папку) в которой будем работать. Свой каталог я назвал «sites».
«По умолчанию» python3 уже имеет свой сервер и нам нужно лишь запустить его, это делается простой командой:
python3 -m http.server --cgi
Но стоит закрыть терминал, как придётся снова и снова вводить эту команду, что не очень-то удобно (особенно человеку привыкшему всё решать путём двух кликов мыши).
Это тоже решаемо, для начала перейдём в каталог:
cd sites
Теперь нам надо создать файл содержимое, которого будет выше написанная строка, в Linux пишем команду:
touch server.py
Вместо server.py Вы можете назвать файл как-нибудь иначе. Я думаю, открыть и добавить текст у Вас проблемы не возникнет, а вот чтобы файл был «исполняемым» (чтобы запускался с двух кликов мыши по нему, это так же требует команды.
При попытке запуска:
./server.py
Получите ответ:
Bash: ./server.py: Отказано в доступе
Причина тому не установленные атрибуты файла, поэтому следующая наша команда:
sudo chmod +x server.py
И запустив:
./server.py
Получаем результат:
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) …
Кстати, localhost и 127.0.0.1 так же будут доступны.
С настройкой и запуском сервера (одним кликом мыши) мы закончили, приступаем к созданию простой страницы сайта (после перейдём к более сложным процедурам). Работать мы будем с CGI-скриптами, а значит сначала создадим каталог (внутри каталога sites) cgi-bin.
Внутри каталога cgi-bin создаём файл hello.py, если у Вас всё ещё запущен сервер, то откройте новое окно терминала:
cd sites/cgi-bin
touch hello.py
Теперь редактируем hello.py:
#!/usr/bin/env python3
print("Content-type: text/html")
print()
print("<h1>Привет мир!</h1>")
Осталось сделать скрипт исполняемым, иначе сервер откажется его запускать:
chmod +x hello.py
Теперь запустите сервер из каталога sites (папка cgi-bin должна лежать внутри него) и откройте в браузере адрес:
http://localhost:8000/cgi-bin/hello.py
Если всё сделано правильно, на странице появится заголовок «Привет мир!». Первый сайт на Python 3 готов.
Если вместо русских букв Вы видите «кракозябры», добавьте кодировку в заголовок ответа:
print("Content-type: text/html; charset=utf-8")
Если страница не открывается, проверьте три самых частых причины. Ошибка 404 означает, что сервер запущен не из каталога sites. Ошибка 403 или сообщение о неисполняемом скрипте значит, что вы забыли chmod +x. Ошибка 500 чаще всего возникает из-за первой строки #!/usr/bin/env python3 или из-за пропущенного пустого print() после заголовка.
Заметьте, что наш server.py на самом деле обычный shell-скрипт с одной командой. Чтобы система точно знала, чем его запускать, добавьте первой строкой интерпретатор:
#!/bin/bash
python3 -m http.server --cgi
И последнее про безопасность: по умолчанию сервер слушает 0.0.0.0, то есть ваш сайт виден всем устройствам в локальной сети. Для упражнений достаточно доступа только с вашего компьютера:
python3 -m http.server --cgi --bind 127.0.0.1
Встроенный сервер годится только для обучения. CGI в Python вообще считается устаревшей технологией (модуль cgi удалён в Python 3.13), поэтому дальше мы перейдём к более современным инструментам, например к Flask.









