
1. Target Overview (머신 요약)
- Target Name: Sequel
- OS: Linux
- Difficulty: Tier 0 (Starting Point)
- Vulnerability: Unauthenticated Database Access (비인가 데이터베이스 접근 허용)
- Attack Vector: MariaDB Misconfiguration (초기 비밀번호 누락 및 원격 접속 허용)
2. 핵심 개념 총정리
① MySQL과 MariaDB 아키텍처
- MySQL
- 전 세계 웹 애플리케이션 백엔드에서 가장 널리 사용되는 관계형 데이터베이스 관리 시스템(RDBMS)
- MariaDB
- 오라클(Oracle)의 MySQL 인수 이후, 오리지널 개발자들이 독립하여 만든 커뮤니티 주도형 오픈소스 포크(Fork) 프로젝트
- MySQL과 완벽한 구조적 호환성을 유지하며 성능이 강화
- 두 시스템 모두 기본적으로 3306/tcp 포트를 사용하여 클라이언트-서버 간 통신을 수행
② SQL (Structured Query Language) 필수 구문
- 관계형 데이터베이스를 제어하기 위한 국제 표준 질의 언어
- 와일드카드(*)
- SELECT 쿼리문에서 특정 컬럼이 아닌 테이블 내의 '모든 컬럼(열)'을 한 번에 지정하여 덤프(Dump)할 때 사용하는 메타 문자
- 명령어 종료자(;)
- SQL 엔진에게 단일 쿼리(Query) 구문의 끝을 알리는 종결 기호(Semicolon)
- 쿼리 작성 후 반드시 세미콜론을 붙여야 명령이 실행됨.
③ 최신 CLI 클라이언트 보안 정책 및 SSL 인증 우회
- mysql 명령어를 통해 터미널 환경에서 데이터베이스 데몬에 원격으로 접속가능
- [보안 이슈] 최근 업데이트된 Kali Linux 등 최신 운영체제는 보안 정책이 강화됨
- 유효한 인증서가 없는 구형(취약한) DB 서버에 접속을 시도할 경우 SSL Connection Error(인증서 협상 오류)를 뿜어내며 연결을 강제 종료
- 이를 해결하기 위해 연결 시 --skip-ssl 플래그를 명시
- 클라이언트 단에서 암호화 보안 연결 검증을 의도적으로 비활성화(평문 통신 강제)하고 서버에 진입
[Task 1] During our scan, which port do we find serving MySQL?
- 정답: 3306
- 분석: Nmap 스캐닝(nmap -p- [Target IP])을 통해 타겟 인프라에서 활성화된 데이터베이스 데몬의 표준 TCP 통신 포트를 식별
nmap -p [Target IP]

[Task 2] What community-developed MySQL version is the target running?
- 정답: MariaDB
- 분석: -sV 옵션을 통한 서비스 버전 핑거프린팅 결과, 구동 중인 RDBMS가 MySQL과 호환되는 완전 오픈소스 기반의 MariaDB임을 확인
nmap -sV -p 3306 [Target IP]

[Task 3] When using the MySQL command line client, what switch do we need to use in order to specify a login username?
- 정답: -u
- 분석: 터미널에서 mysql 클라이언트로 원격 연결을 시도할 때, 인증을 수행할 계정명(Username)을 지정하는 파라미터 (예: -u root)
[Task 4] Which username allows us to log into this MariaDB instance without providing a password?
- 정답: root
- 분석: 시스템 및 데이터베이스의 최고 관리자 권한을 가진 기본 계정
- 관리자의 치명적인 설정 오류(Misconfiguration)로 인해 패스워드 인증 로직이 무력화된 상태
[Task 5] In SQL, what symbol can we use to specify within the query that we want to display everything inside a table?
- 정답: *
- 분석: SELECT * FROM [테이블명]; 형태로 사용
- 필터링 없이 테이블 내의 전체 데이터 스키마를 출력할 때 사용하는 기호
SELECT * FROM [테이블명]
[Task 6] In SQL, what symbol do we need to end each query with?
- 정답: ;
- 분석: 데이터베이스 엔진에 쿼리 파싱 명령을 전달하기 위해 문장 끝에 반드시 포함되어야 하는 세미콜론(구문 종료 기호)
[Task 7] There are three databases in this MySQL instance that are common across all MySQL instances. What is the name of the fourth that's unique to this host?
- 정답: htb
- 분석: 데이터베이스 접속 후 SHOW DATABASES; 구문을 실행한 결과, 시스템 기본 내장 데이터베이스(information_schema, mysql, performance_schema) 외에 관리자가 임의로 생성한 타겟 데이터베이스 명칭을 식별했습니다.

[Root Flag] 시스템 침투 및 플래그 추출
- 분석: 로컬 공격자 터미널을 이용하여 타겟의 3306/tcp 포트로 원격 접속을 시도합니다. 최고 관리자(root) 계정에 패스워드가 없는 취약점을 악용하되, 앞서 핵심 개념에서 다룬 --skip-ssl 옵션을 적용하여 최신 칼리 리눅스의 SSL 연결 거부 정책을 우회합니다.
- 세션 장악 후, 데이터베이스 내부를 탐색하여 중요 정보(Flag)를 덤프합니다.
sudo apt update
sudo apt install mysql*
sudo systemctl start mysql
sudo systemctl enable mysql
mysql -h <타겟 ip> -u root --ssl-mode=DISABLED
SHOW databases;
SHOW tables;
SELECT * FROM config;

Discussion 0