hhkb.dev

BLOG

2025-11-29 / 호스트기반모의해킹 · 17

MySQL 취약점 진단

1. 개요

MySQL은 가장 널리 쓰이는 오픈소스 관계형 데이터베이스 관리 시스템(RDBMS) 중 하나다.

  • 포트: 기본적으로 TCP 3306을 사용한다.
  • 주요 위협: 오래된 버전의 RCE보다, 접근 제어 미흡(Misconfiguration)이나 데이터 평문 저장 문제가 더 자주 발견된다.

2. 주요 진단 항목

2.1 접근 제어 및 기본 계정(Default Credentials)

가장 먼저 보는 건 접근 제어와 기본 계정 설정이다.

  • 원격 접속 허용: root 계정이 로컬(Localhost)만이 아니라 외부 IP에서도 접속 가능하게 열려 있는지 확인한다.
  • 빈 비밀번호(Empty Password): 일부 설정은 root 비밀번호가 비어 있어도 접속이 될 수 있다.
    예시 확인은 mysql -u root -h [Target_IP] -p 입력 후 비밀번호 없이 진행하는 방식으로 설명된다.

2.2 중요 데이터 저장 방식(Data At Rest)

데이터베이스 안의 데이터가 어떤 형태로 저장되는지도 중요하다.

  1. 평문 저장(Clear Text)
    개인정보나 비밀번호가 암호화 없이 그대로 저장되는지 본다.
    예를 들어 SELECT * FROM users; 결과에 password123이 그대로 보인다면 즉시 문제로 본다.
  2. 취약한 해시 알고리즘(Weak Hashing)
    해시를 쓰더라도 MD5, SHA-1처럼 오래된 알고리즘이면 쉽게 무력화될 수 있다.
    hash-identifier 같은 도구로 해시 유형을 먼저 식별할 수 있다.

3. 실무에서는?

실무에서는 결과 해석이 특히 중요하다.

  1. Nmap 스크립트(mysql-empty-password)가 로그인 성공처럼 보여도, 실제 mysql 클라이언트로 다시 보면 아닌 경우가 있다. 그래서 수동 검증(Manual Verification)이 꼭 필요하다.
  2. DB에서 확인된 평문 비밀번호나 약한 해시는 다른 서비스와의 계정 재사용 위험으로 이어질 수 있다.
  3. 버전별 RCE 이슈보다, 데이터베이스의 접근 제어와 저장 방식 같은 기본 설정을 점검하는 쪽이 실제 결과물 도출에 더 유효한 경우가 많다.