Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ODBParser — 검색, 파싱 및 덤프를 수행하여 노출에 관심 있는 데이터를 가진 공개된 Elasticsearch 및 MongoDB 디렉토리만을 대상으로 하는 OSINT 도구 | Kitploit
도구/GitHubGitHub/citcheese/odbparser
OSINT (Open Source Intelligence)Vulnerability ScannersData ExfiltrationInformation GatheringDatabase Security
GitHubcitcheese/odbparser

ODBParser

검색, 파싱 및 덤프를 수행하여 노출에 관심 있는 데이터를 가진 공개된 Elasticsearch 및 MongoDB 디렉토리만을 대상으로 하는 OSINT 도구

저장소 보기
4776년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

ODBParser

TL;DR

ODBParser는 열린 데이터베이스에 노출된 개인 식별 정보(PII)를 검색하는 도구입니다.

노출된 PII를 식별하고 서버 소유자에게 부주의한 데이터베이스 유지 관리에 대해 경고하기 위한 용도로만 사용하세요.
또는 액세스 권한이 있는 데이터베이스를 쿼리할 때만 사용하세요!

책임감 있게 사용해 주십시오.

이게 뭐죠?

원스톱 OSINT 도구를 만들어서 타사 서버에서 PII 유출을 식별하고, 열린 데이터베이스를 검색/파싱/분석하고자 이 도구를 작성했습니다. 다른 도구들은 보통 열린 데이터베이스를 검색하거나, 식별한 후 무차별적으로 데이터를 덤프하는 방식입니다. 처음에는 한두 가지 기능에서 시작했지만, 이 리포지토리에 있는 수준까지 확장되었습니다. 그래서 코드가 이상적일 정도로 깔끔하지는 않습니다.

기능

열린 데이터베이스를 식별하려면 다음을 수행할 수 있습니다:

  • Shodan과 BinaryEdge를 모든 가능한 매개변수(국가, 포트 번호 등으로 필터링)로 쿼리
  • 단일 IP 주소 지정
  • IP 주소 목록이 있는 파일 로드
  • 클립보드에서 IP 주소 목록 붙여넣기

덤프 옵션:

  • 모든 데이터베이스/컬렉션을 파싱하여 사용자가 지정한 데이터 식별
  • 서버에 있는 모든 내용 가져오기
  • 하나의 인덱스/컬렉션만 가져오기
  • ctrl+c를 사용하여 특정 인덱스 덤프 건너뛰기

후처리:

  • JSON 덤프를 CSV로 변환
  • CSV에서 불필요한 열 제거

기타 기능:

  • 쿼리한 모든 IP 주소와 데이터베이스, 각 서버에 대한 정보를 추적
  • 쿼리한 IP 수, 파싱한 데이터베이스 수, 덤프한 레코드 수를 기록하는 stats 파일 유지
  • 이미 가지고 있는 JSON 덤프를 CSV로 변환
  • 총 레코드 수가 설정한 제한을 초과하는 모든 데이터베이스에 대해 특수 파일에 항목을 생성하고 샘플 레코드 5개를 함께 저장하여, 사용자가 데이터베이스를 가져올 가치가 있는지 검토하고 결정할 수 있도록 함
  • 기본 출력은 각 줄에 JSON 객체가 있는 줄 구분 JSON 파일입니다. "properjson" 플래그를 사용하여 "올바른 JSON" 파일로 출력하도록 선택할 수 있습니다.
  • 파일을 즉시 CSV로 변환하거나, 실행이 완료된 후 특정 파일만 변환할 수 있습니다 (후자를 권장). 변환된 JSON 파일은 같은 디렉토리의 "JSON backups" 폴더로 이동됩니다. 참고: CSV로 변환할 때, 스크립트는 정확히 중복된 행을 제거하고 모든 값이 NaN인 열과 행을 제거합니다. 이것이 의도된 동작입니다. JSON 파일의 정확한 복사본을 원한다면 함수를 자유롭게 수정하세요.
  • Windows 전용 스크립트가 사용자가 관심 있는 필드를 포함하는 인덱스를 대량으로 반환할 경우, 데이터베이스 이름을 나열하고 10초 동안 멈춰서 모든 인덱스에서 데이터를 가져올지 결정할 시간을 줍니다. 원하는 필드를 지정한 후에도 너무 많은 데이터베이스가 반환되면 데이터가 가짜이거나 쓸모없는 로그일 가능성이 높으며, 이름만으로도 그 여부를 판단할 수 있는 경우가 많습니다. 10초 내에 조치를 취하지 않으면 스크립트는 모든 인덱스를 덤프합니다.
  • 아시다시피, 많은 사람들이 MongoDB 데이터베이스를 스캔하여 인질로 잡고, 이름을 "TO_RESTORE_EMAIL_XXXRESTORE.COM" 같은 것으로 변경하는 경우가 많습니다. MongoDB 스크래퍼는 DB/컬렉션 이름을 pwnage를 나타내는 문자열 목록과 비교하여 탈취당한 데이터베이스와 컬렉션을 무시합니다.
  • 스크립트는 상당히 장황합니다(너무 장황할 수도 있음). 하지만 진행 상황을 보는 것을 선호합니다. 원한다면 print 문을 비활성화해도 됩니다.

사용자 정의

odbconfig.py 파일을 참조하여 매개변수를 지정하세요. 이름에서 알 수 있듯이, 관심 있는 데이터를 노출하는 것이 핵심입니다. 구성 파일에 몇 가지 예제를 제공했습니다. 직접 실험해 보세요!

다음을 수행할 수 있습니다:

  • 수집할 인덱스 또는 컬렉션 이름을 구성 파일에서 부분 문자열로 지정. 예를 들어 "client"라는 용어가 있으면 "clients" 또는 "client_data"라는 인덱스를 가져옵니다. 관심 있는 데이터베이스의 이름을 알 수 없으므로 이러한 목록을 비워 두고 대신 관심 있는 필드를 지정하는 것이 좋습니다.
  • 관심 있는 필드 지정: "email"이 필드 이름에 포함된 ES 인덱스만 가져오려면(예: "user_emails") 그렇게 할 수 있습니다. 인덱스에 관심 있는 필드가 최소 2개 이상 있는지 확인할 수도 있습니다. 또는 필드에 관계없이 모든 것을 가져오도록 할 수도 있습니다.
  • 원하지 않는 인덱스 지정(예: 시스템 인덱스 이름 및 일반적인 로깅에 사용되는 기타 이름). 구성 파일에 예제가 제공됩니다.
  • 구성을 무시하고 서버의 모든 것을 가져오기
  • 출력 형식 지정(기본값은 JSON, CSV 선택 가능)
  • 스크립트가 기본적으로 덤프할 데이터베이스의 최소 및 최대 크기 설정, 케이스별로 최대 문서 수를 무시하는 플래그 설정 가능

설치 및 요구 사항

  • 시스템에 클론 또는 다운로드
  • Shodan 및/또는 BinaryEdge용 API 키 획득
  • ODBconfig.py 파일에서 매개변수 구성
  • 파일에서 요구 사항 설치

ODBParser에 가상 환경을 생성하여 모듈 버전 문제를 방지하는 것이 좋습니다. 참고: Python 3.7.3 및 Windows 10에서만 테스트되었습니다.

책임감 있게 사용해 주십시오.

다음 단계 및 알려진 문제

  • 코드를 좀 더 정리
  • 여러 프로세스에 멀티스레딩 적용
  • 다른 데이터베이스 유형으로 확장
  • 다른 오픈 디렉토리 검색 엔진 추가(Zoomeye 등)
  • ES 2.0 미만의 방식으로 인해 특정 ES 인스턴스의 첫 페이지 이상 스크롤이 불가능. 도움을 주시면 감사하겠습니다! 이 문제는 수정했다고 생각합니다. scrollid 오류가 발생하면 이슈를 열어주세요.

사용법

root@kitploit:~
    Examples: python ODBParser.py -cn US -p 8080 -t users --elastic --shodan --csv --limit 100
              python ODBParser.py -ip 192.168.2:8080 --mongo --ignorelogs --nosizelimits

    Damage to-date: 0 servers parsed | 0 databases dumped | 0 records pulled
    _____________________________________________________________________________


optional arguments:
  -h, --help            도움말 메시지를 표시하고 종료

Query Options:
  --shodan, -sh         Shodan 사용 시 이 플래그를 추가하세요. ES 또는 MDB를 플래그와 함께 지정하세요.
  --binary, -be         BinaryEdge 사용 시 이 플래그를 추가하세요. ES 또는 MDB를 플래그와 함께 지정하세요.
  --ip , -ip            단일 서버를 쿼리합니다. 포트는 '192.165.2.1:8080' 형식으로 추가하거나 각 DB 유형의 기본 포트를 사용합니다. ES 또는 MDB 플래그를 추가하여 파서를 지정하세요.
  --file , -f           파일에서 줄 구분된 IP 목록을 로드합니다. 포트를 추가하거나 각 DB 유형의 기본 포트를 사용합니다. ES 또는 MDB 플래그를 추가하여 파서를 지정하세요.
  --paste, -v           클립보드에서 줄 구분된 IP 목록을 쿼리합니다. 포트를 추가하거나 각 DB 유형의 기본 포트를 사용합니다(예: ES의 경우 9200). ES 또는 MDB 플래그를 추가하여 파서를 지정하세요.

Shodan/BinaryEdge Options:
  --limit , -l          쿼리당 최대 결과 수. 기본값은 500입니다.
  --port , -p           포트로 필터링합니다.
  --country , -cn       국가로 필터링합니다(두 글자 국가 코드).
  --terms , -t          추가 쿼리 용어를 입력하세요(예: 'users').

Dump Options:
  --mongo, -mdb         IP, Shodan, BinaryEdge 및 Paste 방법에 파서를 지정할 때 사용합니다.
  --elastic, -es        IP, Shodan, BinaryEdge 및 Paste 방법에 파서를 지정할 때 사용합니다.
  --properjson, -pj     출력을 올바른 JSON 파일로 만들려면 이 플래그를 추가하세요. 기본값은 한 줄에 하나의 JSON 문자열 객체입니다.
  --database , -db      가져올 데이터베이스를 지정합니다. MDB의 경우 'db:collection' 형식이어야 합니다. IP 인수와 'es' 또는 'mdb' 플래그와 함께 사용하세요.
  --getall, -g          필드와 컬렉션/인덱스 이름에 관계없이 모든 인덱스를 가져옵니다(구성 파일의 선택을 무시).
  --ignorelogs          이미 확인한 서버에 연결합니다.
  --nosizelimits, -n    크기에 관계없이 인덱스를 덤프합니다. 기본 최대 문서 수는 800,000개입니다.
  --csv                 JSON 덤프를 즉시 CSV 형식으로 변환합니다.(변환 문제가 있을 경우 JSON 파일을 백업 폴더에 보관)

CSV/Post-processing Options:
  --convertToCSV , -c   나중에 JSON 파일 또는 JSON 덤프 폴더를 CSV로 변환합니다. 전체 경로 또는 현재 작업 디렉토리 내 폴더 이름을 입력하세요.
  --dontflatten         후처리 중 JSON 파일을 CSV로 변환할 때 메모리 문제가 발생하면 사용하세요.
  --basic               JSON 덤프가 실제 JSON 파일이 아닌, 다른 소스에서 얻은 줄 구분 JSON 객체인 경우 --convertToCSV 플래그와 함께 사용하세요.
  --dontclean, -dc      CSV로 변환할 때 불필요한 데이터를 유지하려면 선택하세요. 자세한 내용은 문서를 참조하세요.
도구 다운로드