PostgreSQL은 오픈소스 객체-관계형 데이터베이스 관리 시스템(RDBMS)이다. 다양한 기능과 확장성을 지원하여 다양한 응용 프로그램에서 데이터 관리를 위해 사용되는 서비스이다.
테스트 환경은 Ubuntu 20.04이며, 아래 명령어를 사용하여 PostgreSQL을 설치할 수 있다.
$ sudo apt update
$ sudo apt install postgresql postgresql-contrib
설치를 마친 postgreSQL은 기본적으로 localhost에서만 접근 가능하도록 설정되어 있다. 통신 테스트를 위해 외부로부터 들어오는 트래픽을 허용하도록 설정 파일을 수정해야 한다. 시스템 내에서 postgresql.conf 파일을 찾아 파일 내 listen_addresses 값을 아래와 같이 변경한다.
$ sudo nano /etc/postgresql/12/main/postgresql.conf
listen_addresses = "*"
그 후 5432 포트에 대한 방화벽을 설정하고 postgresql을 재시작 하면 서버 구축이 완료된다.
$ sudo ufw allow proto tcp from any to any port 5432
$ sudo systemctl restart postgresql
구축된 서버와의 통신을 위해 클라이언트 프로그램으로 python의 ‘psycopg2’ 라이브러리를 사용하였다. 이 라이브러리를 이용하여 postgreSQL 서버에 접속 요청을 보낸 후 응답 결과에 따라 5432 포트에서 서비스 실행 여부를 식별하였다. 테스트를 위해 작성한 코드는 아래와 같다.
코드 작성 시 Connection refused 오류를 반환할 경우 서비스되고 있지 않은 것으로 판단하였으며, 그 이외에 연결 성공하거나 인증 오류가 날 경우에는 서비스 중인 것으로 판단하였다.
import psycopg2
def test_PostgreSQL(server_ip):
result = ""
try:
db = psycopg2.connect(host=server_ip, dbname="testdb",
user="postgres", password="password", port=5432)
except psycopg2.OperationalError as e:
message = e.args[0]
if "FATAL: no pg_hba.conf entry" in message:
result = "authentification error"
elif "Connection refused" in message:
result = "no service"
else:
result = "on service"
return result
if __name__ == "__main__":
server_ip = "ip address"
print(test_PostgreSQL(server_ip))
'Penetration testing' 카테고리의 다른 글
서비스 식별: Submissions (587) (0) | 2023.09.01 |
---|---|
서비스 식별: SMTPS (465) (0) | 2023.09.01 |
서비스 식별: HTTPS (443) (0) | 2023.09.01 |
서비스 식별: LDAP (389) (0) | 2023.09.01 |