Sensitive Data Exposure(민감한 데이터 노출) 개념 및 실습

MIN·2025년 2월 3일
0

정보보안

목록 보기
6/8

웹 애플리케이션의 보안 취약점 중 하나인 Sensitive Data Exposure(민감한 데이터 노출)는 개발자가 실수로 웹페이지에 중요한 정보를 노출하는 경우 발생한다. 이는 단순히 애플리케이션의 버전 정보를 노출하는 것부터, 심각한 경우 데이터베이스 전체가 외부에 노출되는 상황까지 포함된다. 이러한 취약점은 비교적 쉽게 발견될 수 있으며, 누구든지 약간의 지식만 있어도 악용할 가능성이 높다.

1. 민감한 데이터 노출의 원인

  1. 개발자가 소스 코드에 중요한 정보를 주석으로 남김
  2. 데이터베이스 또는 중요한 파일을 공개 디렉토리에 저장
  3. 잘못된 디렉토리 설정으로 인해 민감한 파일이 외부에서 접근 가능함
  4. 로그 파일에 민감한 데이터가 포함되어 유출됨
  5. API 키, 데이터베이스 접속 정보 등 환경 설정 파일이 직접 노출

이러한 실수는 보통 여러 개발자가 협업하면서 발생하며, 사이트를 배포하기 전 보안 점검을 제대로 수행하지 않으면 쉽게 발견될 수 있다.

2. 실전 예제: TryHackMe 플랫폼을 활용한 사례

1) 웹페이지 분석

웹 애플리케이션을 분석할 때 가장 먼저 할 일은 페이지의 소스 코드(View Page Source)를 확인하는 것이다. 예제에서는 웹사이트의 로그인 페이지를 분석하는 과정에서, 주석을 통해 다음과 같은 정보를 발견할 수 있었다.

<!-- Must remember to do something better with the database, then store it in /assets -->

이 주석을 통해 데이터베이스가 /assets 디렉토리에 저장되어 있다는 사실을 알 수 있다.

2) 숨겨진 파일 및 디렉토리 탐색

웹사이트의 소스 코드에서 /assets 디렉토리를 확인한 후, 해당 디렉토리를 직접 방문하면 다음과 같은 파일 목록을 볼 수 있다.

/assets/webapp.db
/assets/style.css
/assets/script.js

여기서 webapp.db 파일은 데이터베이스 파일로 보이며, 이를 다운로드하여 분석할 수 있다.

3) 데이터베이스 분석

다운로드한 webapp.db 파일을 SQLite를 이용해 분석한다.

sqlite3 webapp.db
sqlite> .tables
sessions  users

users 테이블이 존재하며, 이를 조회하면 사용자 계정 정보가 포함되어 있을 가능성이 높다.

SELECT * FROM users;

이 결과를 통해 admin 계정과 그에 대한 해시된 비밀번호(hash password)를 확인할 수 있다.

4) 패스워드 크래킹

웹사이트에서 얻은 해시된 비밀번호를 온라인 해시 크래킹 사이트(예: CrackStation)에서 복호화할 수 있다.

  1. CrackStation(https://crackstation.net/) 에 접속
  2. 해시값 입력 후 복호화 시도
  3. 평문 패스워드 획득

이렇게 얻은 패스워드를 이용해 관리자 계정에 로그인하면 사이트의 주요 정보를 확인이 가능하며, 유저 정보 수정 등 민감정보를 관리할 수 있다.

3. 민감한 데이터 노출을 예방하는 방법

  • 배포 전에 철저한 보안 점검을 수행
  • 환경 설정 파일(.env, config.json 등)을 외부에서 접근할 수 없도록 설정
  • 주석에 중요한 정보를 포함하지 않도록 주의
  • 디렉토리 접근을 제한하고, 불필요한 파일은 삭제
  • 데이터베이스 및 중요한 파일을 웹 서버 내부에 안전하게 저장
  • 로그 파일에서 민감한 정보가 노출되지 않도록 관리

4. 결론

민감한 데이터 노출은 기술적인 보안 취약점이라기보다는 개발자의 실수로 인해 발생하는 경우가 많다. 따라서 보안 점검과 코드 리뷰를 철저히 수행하는 것이 중요하다.

이번 예제에서는 단순한 주석 한 줄이 결국 데이터베이스 파일 노출로 이어지는 위험한 상황을 보여주었다. 실무에서도 이러한 실수를 방지하려면 보안 모범 사례를 준수하고, 배포 전에 반드시 점검하는 습관을 들여야 한다.

profile
코딩에 빠짐

0개의 댓글