대상 서비스 및 사용자/비밀번호 목록 설정
이 단계에서는 가상 HTTP 로그인 서비스를 설정하고 Hydra 가 사용할 필요한 사용자 이름 및 비밀번호 목록을 만듭니다. 이를 통해 Hydra 의 출력 저장 연습을 위한 제어된 환경을 제공합니다.
먼저 프로젝트 디렉토리로 이동합니다.
cd ~/project
다음으로, HTTP 로그인 서비스를 시뮬레이션하는 간단한 Python 스크립트를 작성합니다. 이 스크립트는 80 번 포트에서 수신하고 /login.php로 보내진 POST 요청에 응답합니다. admin을 올바른 사용자 이름, password를 올바른 비밀번호로 간주합니다.
nano를 사용하여 login.py 파일을 만듭니다.
nano login.py
다음 Python 코드를 nano 편집기에 붙여넣습니다.
from http.server import BaseHTTPRequestHandler, HTTPServer
import urllib.parse
import os
class LoginHandler(BaseHTTPRequestHandler):
def do_POST(self):
if self.path == '/login.php':
content_length = int(self.headers['Content-Length'])
post_data = self.rfile.read(content_length).decode('utf-8')
parsed_data = urllib.parse.parse_qs(post_data)
username = parsed_data.get('username', [''])[0]
password = parsed_data.get('password', [''])[0]
if username == 'admin' and password == 'password':
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(b"Login successful!")
else:
self.send_response(401)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(b"Invalid username or password")
else:
self.send_response(404)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(b"Not found")
def run(server_class=HTTPServer, handler_class=LoginHandler, port=80):
server_address = ('', port)
httpd = server_class(server_address, handler_class)
print(f"Starting httpd server on port {port}")
httpd.serve_forever()
if __name__ == "__main__":
run()
Ctrl+X, Y, Enter를 눌러 파일을 저장합니다.
이제 Python HTTP 서버를 백그라운드에서 실행합니다. 이는 Hydra 를 위한 대상 서비스를 시뮬레이션합니다.
nohup python3 login.py > /dev/null 2>&1 &
nohup 명령은 터미널을 닫아도 프로세스가 계속 실행되도록 하고, > /dev/null 2>&1 &는 모든 출력을 /dev/null로 리디렉션하고 백그라운드에서 프로세스를 실행합니다.
다음으로, Hydra 가 공격에 사용할 사용자 이름 및 비밀번호 목록을 만듭니다.
~/project 디렉토리에 users.txt 파일을 만듭니다.
nano users.txt
다음 사용자 이름을 파일에 추가합니다.
admin
user
test
Ctrl+X, Y, Enter를 눌러 파일을 저장합니다.
마지막으로, ~/project 디렉토리에 passwords.txt 파일을 만듭니다.
nano passwords.txt
다음 비밀번호를 파일에 추가합니다.
password
123456
test
Ctrl+X, Y, Enter를 눌러 파일을 저장합니다.
이제 대상 HTTP 서비스를 성공적으로 설정하고 사용자 및 비밀번호 목록을 준비했습니다.