워게임/Hack The Box

[Starting Point] TIER 0 - Mongod

  • -

Question

How many TCP ports are open on the machine?

번역: 가상머신에서 열린 TCP 포트는 몇 개인가요?

상세 풀이

정답: 2

 

Which service is running on port 27017 of the remote host?

번역: 원격 호스트의 포트 27017에서 실행 중인 서비스는 무엇입니까?

상세 풀이

정답: MongoDB 3.6.8

 

What type of database is MongoDB? (Choose: SQL or NoSQL)

번역: MongoDB는 어떤 유형의 데이터베이스인가요? (선택: SQL 또는 NoSQL)

상세 풀이

MongoDB는 NoSQL(Not only SQL) 데이터베이스 중 하나로, 관계형 데이터베이스가 아닌 비관계형 데이터베이스입니다. 기존의 관계형 데이터베이스는 테이블 구조로 데이터를 저장하는데 반해, MongoDB는 도큐먼트 지향적 구조를 가집니다.

이러한 도큐먼트 구조는 JSON 형식과 유사한 BSON(Binary JSON) 형태로 데이터를 저장하고, 각 도큐먼트는 유연한 스키마를 가질 수 있습니다. 이는 데이터 구조 변경이 쉽고 확장성이 높다는 장점을 가지고 있습니다.

MongoDB는 빅 데이터 처리, 실시간 분석, 컨텐츠 관리 및 배포 등 다양한 분야에서 활용되며, 수평적 확장이 용이하여 대규모 데이터를 처리할 때 효율적입니다.

정답: NoSQL

 

What is the command name for the Mongo shell that is installed with the mongodb-clients package?

번역: mongodb-clients 패키지로 설치된 Mongo 쉘의 명령 이름은 무엇입니까?

상세 풀이

mongodb-clients 패키지를 통해 설치되는 몽고 쉘(Mongo shell)의 명령어 이름은 mongo입니다. 몽고 쉘은 MongoDB 서버와 상호작용할 수 있는 인터랙티브한 JavaScript 인터페이스를 제공합니다. 사용자는 이를 통해 데이터베이스에 질의를 수행하거나, 데이터를 삽입, 수정, 삭제할 수 있습니다.

mongo 명령어를 사용하여 MongoDB 서버에 연결하려면, 콘솔에서 다음과 같이 입력합니다:

mongo

 

특정 데이터베이스에 연결하려면 다음과 같이 입력합니다:

mongo <데이터베이스_이름>

 

또한, 원격 서버에 있는 MongoDB 인스턴스에 연결하려면 다음과 같이 입력합니다:

mongo --host <주소> --port <포트>

이렇게 하면, 사용자는 몽고 쉘을 통해 MongoDB 서버에 연결하고, 데이터베이스 관리 작업을 수행할 수 있습니다.

최신 버전의 mongoDB는 mongosh이라는 도구를 사용함.

정답: mongo

 

What is the command used for listing all the databases present on the MongoDB server? (No need to include a trailing ;)

번역: 몽고디비 서버에 있는 모든 데이터베이스를 나열하는 데 사용되는 명령은 무엇입니까? (마지막에 ;를 포함할 필요 없음)

상세 풀이

정답: show dbs

 

 

What is the command used for listing out the collections in a database? (No need to include a trailing ;)

번역: 데이터베이스에서 컬렉션을 나열하는 데 사용되는 명령어는 무엇인가요? (마지막에 ;을 포함할 필요가 없습니다)

상세 풀이

정답: show collections

 

What is the command used for dumping the content of all the documents within the collection named flag in a format that is easy to read?

번역: 컬렉션 이름이 flag인 모든 문서의 내용을 읽기 쉬운 형식으로 덤프하는 데 사용되는 명령은 무엇인가요?

상세 풀이

컬렉션(collection)의 이름이 'flag'인 모든 문서(document)의 내용을 읽기 쉬운 형식으로 덤프(dump)하려면, 몽고 쉘(Mongo shell)에서 다음 명령어를 사용할 수 있습니다:

db.flag.find().pretty()

 

이 명령어는 'flag'라는 이름의 컬렉션에서 모든 문서를 검색한 후, .pretty() 메소드를 사용하여 결과를 보기 쉬운 형태로 출력합니다. 이렇게 하면 JSON 형식과 유사한 구조로 데이터를 확인할 수 있으며, 이를 통해 각 문서의 내용을 쉽게 읽을 수 있습니다.

정답: db.flag.find().pretty()

 

Submit root flag

상세 풀이

nmap을 통해 공격 대상의 열려있는 Port를 스캔하였다.

확인해보니, SSH와 mongoDB가 열려있는 것을 확인할 수 있다.

 

mongosh를 이용하여 공격 대상의 MongoDB에 접근 시도하였다.

계정 인증 설정이 되어 있지 않아, 별도의 인증 없이 접근할 수 있었다.

 

기본 DB 외 sensitive_information과 users이라는 이름을 가진 DB가 존재하는 것을 확인하였다.

그 중 sensitive_infomation에서 flag이라는 컬렉션이 존재하는 것을 확인하였다.

 

컬렉션의 내용을 확인할 수 있는 find()를 이용하여 확인하니, flag 값을 얻을 수 있었다.

정답: nmap > mongsh > show dbs > show tables > find()

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.