9200 - Pentesting Elasticsearch
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Get a hacker's perspective on your web apps, network, and cloud
Find and report critical, exploitable vulnerabilities with real business impact. Use our 20+ custom tools to map the attack surface, find security issues that let you escalate privileges, and use automated exploits to collect essential evidence, turning your hard work into persuasive reports.
Elasticsearch는 분산형, 오픈 소스 검색 및 분석 엔진으로 모든 유형의 데이터를 처리합니다. 속도, 확장성, 간단한 REST API로 잘 알려져 있습니다. Apache Lucene을 기반으로 하여 2010년에 Elasticsearch N.V. (현재 Elastic로 알려짐)에서 처음 출시되었습니다. Elasticsearch는 데이터 수집, 보강, 저장, 분석 및 시각화를 위한 오픈 소스 도구 모음인 Elastic Stack의 핵심 구성 요소입니다. 이 스택은 일반적으로 ELK Stack이라고 하며, Logstash와 Kibana를 포함하고 있으며, 현재 Beats라는 경량 데이터 전송 에이전트를 가지고 있습니다.
Elasticsearch의 인덱스는 관련 문서의 모음으로 JSON 형식으로 저장됩니다. 각 문서는 키와 해당 값(문자열, 숫자, 불리언, 날짜, 배열, 지리적 위치 등)으로 구성됩니다.
Elasticsearch는 빠른 전체 텍스트 검색을 용이하게 하기 위해 역 인덱스라는 효율적인 데이터 구조를 사용합니다. 이 인덱스는 문서 내의 모든 고유 단어를 나열하고 각 단어가 나타나는 문서를 식별합니다.
인덱싱 과정에서 Elasticsearch는 문서를 저장하고 역 인덱스를 구성하여 거의 실시간 검색을 가능하게 합니다. 인덱스 API는 특정 인덱스 내에서 JSON 문서를 추가하거나 업데이트하는 데 사용됩니다.
기본 포트: 9200/tcp
Elasticsearch에 접근하는 데 사용되는 프로토콜은 HTTP입니다. HTTP를 통해 접근하면 흥미로운 정보를 찾을 수 있습니다: http://10.10.10.115:9200/
/
에 접근할 때 해당 응답이 보이지 않으면 다음 섹션을 참조하십시오.
기본적으로 Elasticsearch는 인증이 활성화되어 있지 않으므로, 기본적으로 자격 증명 없이 데이터베이스 내의 모든 것에 접근할 수 있습니다.
인증이 비활성화되어 있는지 확인하려면 다음 요청을 사용하십시오:
그러나, /
에 요청을 보내고 다음과 같은 응답을 받으면:
그것은 인증이 구성되어 있으며 유효한 자격 증명이 필요하다는 것을 의미합니다. 그런 다음 브루트포스를 시도할 수 있습니다 (HTTP 기본 인증을 사용하므로 BF HTTP 기본 인증을 사용할 수 있습니다). 여기 기본 사용자 이름 목록이 있습니다: elastic (슈퍼유저), remote_monitoring_user, beats_system, logstash_system, kibana, kibana_system, apm_system, _anonymous_._ 이전 버전의 Elasticsearch는 이 사용자에 대해 기본 비밀번호 changeme를 가지고 있습니다.
다음은 elasticsearch에 대한 정보를 얻기 위해 GET을 통해 접근할 수 있는 몇 가지 엔드포인트입니다:
이 엔드포인트는 문서에서 가져온 것입니다 여기에서 더 많은 정보를 찾을 수 있습니다.
또한, /_cat
에 접근하면 응답에는 인스턴스에서 지원하는 /_cat/*
엔드포인트가 포함됩니다.
/_security/user
에서 (인증이 활성화된 경우) 어떤 사용자가 superuser
역할을 가지고 있는지 확인할 수 있습니다.
http://10.10.10.115:9200/_cat/indices?v
에 접근하여 모든 인덱스를 수집할 수 있습니다.
To obtain information about which kind of data is saved inside an index you can access: http://host:9200/<index>
from example in this case http://10.10.10.115:9200/bank
If you want to dump all the contents of an index you can access: http://host:9200/<index>/_search?pretty=true
like http://10.10.10.115:9200/bank/_search?pretty=true
잠시 시간을 내어 은행 인덱스 내 각 문서(항목)의 내용과 이전 섹션에서 본 이 인덱스의 필드를 비교해 보세요.
So, at this point you may notice that there is a field called "total" inside "hits" that indicates that 1000 documents were found inside this index but only 10 were retried. This is because by default there is a limit of 10 documents.
But, now that you know that this index contains 1000 documents, you can dump all of them indicating the number of entries you want to dump in the size
parameter: http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000
asd
참고: 더 큰 숫자를 지정하면 모든 항목이 어쨌든 덤프됩니다. 예를 들어 size=9999
를 지정할 수 있으며, 더 많은 항목이 있을 경우 이상할 것입니다(하지만 확인해야 합니다).
In order to dump all you can just go to the same path as before but without indicating any indexhttp://host:9200/_search?pretty=true
like http://10.10.10.115:9200/_search?pretty=true
Remember that in this case the default limit of 10 results will be applied. You can use the size
parameter to dump a bigger amount of results. Read the previous section for more information.
If you are looking for some information you can do a raw search on all the indices going to http://host:9200/_search?pretty=true&q=<search_term>
like in http://10.10.10.115:9200/_search?pretty=true&q=Rockwell
If you want just to search on an index you can just specify it on the path: http://host:9200/<index>/_search?pretty=true&q=<search_term>
검색 콘텐츠에 사용되는 q 매개변수는 정규 표현식을 지원합니다.
You can also use something like https://github.com/misalabs/horuz to fuzz an elasticsearch service.
You can check your write permissions trying to create a new document inside a new index running something like the following:
그 명령은 _bookId_
, _author_
, _publisher_
및 _name_
속성을 가진 books
유형의 문서로 bookindex
라는 새 인덱스를 생성합니다.
새 인덱스가 이제 목록에 나타나는지 확인하세요:
그리고 자동으로 생성된 속성을 주목하세요:
일부 도구는 이전에 제시된 데이터 중 일부를 얻습니다:
port:9200 elasticsearch
웹 앱, 네트워크 및 클라우드에 대한 해커의 관점을 얻으세요.
실제 비즈니스에 영향을 미치는 중요한, 악용 가능한 취약점을 찾아보고 보고하세요. 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내며, 자동화된 익스플로잇을 사용하여 필수 증거를 수집하여 귀하의 노력을 설득력 있는 보고서로 전환하는 20개 이상의 맞춤형 도구를 사용하세요.
_cat | /_cluster | /_security |
---|---|---|
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
/_cat/segments
/_cluster/allocation/explain
/_security/user
/_cat/shards
/_cluster/settings
/_security/privilege
/_cat/repositories
/_cluster/health
/_security/role_mapping
/_cat/recovery
/_cluster/state
/_security/role
/_cat/plugins
/_cluster/stats
/_security/api_key
/_cat/pending_tasks
/_cluster/pending_tasks
/_cat/nodes
/_nodes
/_cat/tasks
/_nodes/usage
/_cat/templates
/_nodes/hot_threads
/_cat/thread_pool
/_nodes/stats
/_cat/ml/trained_models
/_tasks
/_cat/transforms/_all
/_remote/info
/_cat/aliases
/_cat/allocation
/_cat/ml/anomaly_detectors
/_cat/count
/_cat/ml/data_frame/analytics
/_cat/ml/datafeeds
/_cat/fielddata
/_cat/health
/_cat/indices
/_cat/master
/_cat/nodeattrs
/_cat/nodes