본문 바로가기
CTF/HTB

Redeemer

 

1. Target Overview (머신 요약)

  • Target Name: Redeemer
  • OS: Linux
  • Difficulty: Tier 0 (Starting Point)
  • Vulnerability: Unauthenticated Database Access (비인가 데이터베이스 접근 허용)
  • Attack Vector: Redis Misconfiguration (인증 정책 누락 및 외부 네트워크 노출)

2. 핵심 개념 총정리

① Redis (Remote Dictionary Server)

  • Key-Value(키-값) 구조를 가지며, 비관계형(NoSQL) 데이터베이스 시스템으로 분류되는 오픈소스 기반의 데이터 스토어
  • 주로 캐싱(Caching), 세션 관리, 실시간 분석 등을 위해 널리 사용
  • 기본적으로 6379/tcp 포트에서 대기(Listen)

 

② 인메모리 데이터베이스 (In-Memory Database)

  • 디스크(HDD/SSD)가 아닌 주 기억장치(RAM)에 모든 데이터를 저장하고 관리하는 데이터베이스 형태
  • 디스크 I/O 병목 현상이 없어 데이터 조회 및 쓰기 속도가 압도적으로 빠름
  • 시스템 종료 시 데이터가 휘발될 수 있다는 특징

 

③ Redis-cli (Redis Command Line Interface)

  • Redis 서버와 통신하고 제어 명령을 내리기 위해 사용하는 기본 터미널 클라이언트 유틸리티
  • 관리자의 설정 오류로 인증(Password)이 걸려있지 않은 Redis 서버의 경우
    • 공격자가 이 도구를 통해 원격으로 접속하여 데이터베이스 내부의 모든 값을 열람, 변조, 삭제할 수 있음

[Task 1] Which TCP port is open on the machine?

  • 정답: 6379
  • 분석:
    • Nmap 포트 스캐닝(nmap -p- [Target IP]) 결과
    • 타겟 시스템에서 유일하게 활성화된 TCP 포트를 식별했습니다.
nmap -p- [Target IP]
 

[Task 2] Which service is running on the port that is open on the machine?

  • 정답: redis
  • 분석: 6379/tcp 포트에서 매핑되어 동작 중인 서비스 데몬을 확인했습니다.

[Task 3] What type of database is Redis? Choose from the following options: (i) In-memory database, (ii) Traditional database

  • 정답: In-memory Database
  • 분석: Redis의 핵심 아키텍처적 특징으로, 데이터를 메모리(RAM)에 상주시켜 고속의 처리 성능을 제공하는 데이터베이스 유형입니다.

[Task 4] Which command-line utility is used to interact with the Redis server? Enter the program name you would enter into the terminal without any arguments.

  • 정답: redis-cli
  • 분석: 로컬 터미널 환경에서 타겟의 Redis 서비스에 접속하고 제어하기 위해 사용하는 클라이언트 애플리케이션 명칭입니다.

[Task 5] Which flag is used with the Redis command-line utility to specify the hostname?

  • 정답: -h
  • 분석: redis-cli 도구 실행 시, 대상 서버의 IP 주소(Hostname)를 지정하기 위해 사용하는 옵션 플래그입니다.
redis-cli -h [Target IP]
 

 

 

[Task 6] Once connected to a Redis server, which command is used to obtain the information and statistics about the Redis server?

  • 정답: info
  • 분석: 서버 접속 후, Redis의 버전, 메모리 사용량, 클라이언트 연결 수 등 구동 상태 및 통계 데이터를 출력하는 명령어입니다.

 

 

[Task 7] What is the version of the Redis server being used on the target machine?

  • 정답: 5.0.7
  • 분석: 터미널에서 info 명령어 입력 후 출력된 정보(Server 섹션) 내 redis_version 파라미터 값을 통해 타겟의 서비스 버전을 식별했습니다.

 

 

[Task 8] Which command is used to select the desired database in Redis?

  • 정답: select
  • 분석: Redis는 인덱스 번호(기본 0~15)로 구분된 논리적 데이터베이스를 지원하며, 특정 데이터베이스 공간으로 진입하기 위해 사용하는 명령어입니다.

[Task 9] How many keys are present inside the database with index 0?

  • 정답: 4
  • 분석: select 0 명령으로 0번 인덱스 DB에 진입한 후 데이터를 탐색할 수 있습니다. (info 명령어의 Keyspace 섹션에서도 db0:keys=4 형태로 확인 가능합니다.)

[Task 10] Which command is used to obtain all the keys in a database?

  • 정답: keys *
  • 분석: 현재 선택된 데이터베이스 내에 저장된 모든 Key 값의 목록을 열거(Enumeration)할 때 사용하는 와일드카드 명령어입니다.

 

 

[Root Flag] 시스템 침투 및 플래그 추출

  • 분석:
    • Redis 서버에 인증 절차 없이 진입
    • 데이터베이스 내부의 Key 값들을 덤프(Dump)하여 민감한 정보를 탈
    • keys * 명령으로 flag라는 이름의 Key를 식별
    • get flag 명령을 사용하여 Value(해시값)를 추출
# 타겟 Redis 서버 접속
redis-cli -h [Target IP]

# 서버 정보 조회 (버전, 데이터베이스 통계 등 확인)
[Target IP]:6379> info

# 0번 인덱스 데이터베이스 선택
[Target IP]:6379> select 0
OK

# 저장된 전체 Key 목록 열거
[Target IP]:6379> keys *
1) "temp"
2) "stor"
3) "numb"
4) "flag"

# 플래그 데이터(Value) 추출
[Target IP]:6379> get flag
 
 

 

 

 

 

'CTF > HTB' 카테고리의 다른 글

Preignition  (0) 2026.04.06
Explosion  (0) 2026.04.06
Dancing  (0) 2026.04.06
Fawn  (0) 2026.04.06
Meow  (0) 2026.04.06

Discussion 0