Настройка базового HTTP-сервера с аутентификацией
На этом шаге вы настройте простой HTTP-сервер, требующий базовой аутентификации. Этот сервер будет нашей целью для атаки Hydra на следующем шаге. Мы будем использовать для этого скрипт на Python.
Сначала убедитесь, что вы находитесь в каталоге ~/project:
cd ~/project
Теперь создайте новый Python-файл с именем webserver.py с помощью nano:
nano webserver.py
Вставьте следующий код Python в редактор:
import http.server
import socketserver
import base64
PORT = 8000
class AuthHandler(http.server.SimpleHTTPRequestHandler):
def do_HEAD(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
def do_AUTHHEAD(self):
self.send_response(401)
self.send_header('WWW-Authenticate', 'Basic realm="My Realm"')
self.send_header('Content-type', 'text/html')
self.end_headers()
def do_GET(self):
auth = self.headers.get('Authorization')
if auth == None:
self.do_AUTHHEAD()
self.wfile.write(b"Authentication Required")
elif auth == 'Basic YWRtaW46cGFzc3dvcmQ=': ## admin:password base64 encoded
http.server.SimpleHTTPRequestHandler.do_GET(self)
else:
self.do_AUTHHEAD()
self.wfile.write(b"Authentication Failed")
Handler = AuthHandler
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("serving at port", PORT)
httpd.serve_forever()
Этот скрипт создаёт базовый HTTP-сервер на порту 8000. Он требует базовой аутентификации. Правильное имя пользователя — admin, а пароль — password. Строка YWRtaW46cGFzc3dvcmQ= в кодировке base64 представляет собой admin:password.
Сохраните файл (Ctrl+O, затем Enter) и выйдите из nano (Ctrl+X).
Теперь запустите Python-скрипт, чтобы запустить HTTP-сервер. Мы запустим его в фоновом режиме, чтобы вы могли продолжить работу в терминале:
nohup python3 webserver.py > /dev/null 2>&1 &
Команда nohup позволяет процессу продолжать работу даже после закрытия терминала. > /dev/null 2>&1 перенаправляет стандартный вывод и стандартную ошибку в /dev/null, предотвращая захламление вашего терминала выводом сервера. & в конце запускает команду в фоновом режиме.
Чтобы подтвердить, что сервер работает, вы можете проверить, слушает ли процесс на порту 8000:
ss -ltn | grep ':8000'
Вы должны увидеть вывод, подобный этому, указывающий, что процесс слушает на порту 8000:
LISTEN 0 4096 0.0.0.0:8000 0.0.0.0:*
Держите этот сервер работающим для следующего шага.