9200 - Pentesting Elasticsearch

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Taarifa Msingi

Elasticsearch ni injini ya utafutaji na uchambuzi iliyosambazwa, ya chanzo wazi kwa aina zote za data. Inajulikana kwa kasi, uwezo wa kupanuka, na REST APIs rahisi. Iliyoundwa kwenye Apache Lucene, ilizinduliwa kwanza mnamo 2010 na Elasticsearch N.V. (sasa inajulikana kama Elastic). Elasticsearch ni sehemu kuu ya Elastic Stack, mkusanyiko wa zana za chanzo wazi kwa kuingiza data, kuiboresha, kuihifadhi, kuichambua, na kuivizualisha. Stack hii, inayojulikana kama ELK Stack, pia inajumuisha Logstash na Kibana, na sasa ina mawakala wa usafirishaji wa data nyepesi wanaitwa Beats.

Ni nini index ya Elasticsearch?

Index ya Elasticsearch ni mkusanyiko wa hati zinazohusiana zilizohifadhiwa kama JSON. Kila hati inajumuisha funguo na thamani zake zinazolingana (herufi, nambari, boolean, tarehe, mizunguko, geolocations, n.k.).

Elasticsearch hutumia muundo wa data wenye ufanisi unaoitwa inverted index kurahisisha utafutaji wa maandishi kamili haraka. Indeksi hii inaorodhesha kila neno pekee katika hati na kutambua hati ambazo kila neno linaonekana.

Wakati wa mchakato wa kuweka alama, Elasticsearch huhifadhi hati na kujenga inverted index, kuruhusu utafutaji karibu wa wakati halisi. API ya index hutumiwa kuongeza au kusasisha hati za JSON ndani ya index maalum.

Bandari ya chaguo: 9200/tcp

Uchunguzi wa Kuelekezwa kwa Mkono

Bango

Itifaki inayotumiwa kufikia Elasticsearch ni HTTP. Unapofikia kwa njia ya HTTP utapata habari za kuvutia: http://10.10.10.115:9200/

Ikiwa huoni majibu hayo ukiingia / tazama sehemu ifuatayo.

Uthibitishaji

Kwa chaguo-msingi Elasticsearch haina uthibitishaji ulioanzishwa, kwa hivyo kwa chaguo-msingi unaweza kupata kila kitu ndani ya hifadhidata bila kutumia anwani yoyote ya kuingia.

Unaweza kuthibitisha kuwa uthibitishaji umefungwa kwa ombi kwa:

curl -X GET "ELASTICSEARCH-SERVER:9200/_xpack/security/user"
{"error":{"root_cause":[{"type":"exception","reason":"Security must be explicitly enabled when using a [basic] license. Enable security by setting [xpack.security.enabled] to [true] in the elasticsearch.yml file and restart the node."}],"type":"exception","reason":"Security must be explicitly enabled when using a [basic] license. Enable security by setting [xpack.security.enabled] to [true] in the elasticsearch.yml file and restart the node."},"status":500}

Hata hivyo, ikiwa utatuma ombi kwa / na kupokea jibu kama ifuatavyo:

{"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401}

Hii inamaanisha kwamba uthibitishaji umewekwa na unahitaji anwani za siri halali ili kupata habari yoyote kutoka kwa elasticserach. Kisha, unaweza jaribu kuvunja (inatumia HTTP basic auth, kwa hivyo chochote kinachoweza kuvunja HTTP basic auth kinaweza kutumika). Hapa una orodha ya majina ya mtumiaji ya chaguo-msingi: elastic (mtumiaji wa juu), remote_monitoring_user, beats_system, logstash_system, kibana, kibana_system, apm_system, _anonymous_._ Toleo za zamani za Elasticsearch zina nenosiri la chaguo-msingi changeme kwa mtumiaji huyu

curl -X GET http://user:password@IP:9200/

Uchambuzi wa Msingi wa Mtumiaji

#List all roles on the system:
curl -X GET "ELASTICSEARCH-SERVER:9200/_security/role"

#List all users on the system:
curl -X GET "ELASTICSEARCH-SERVER:9200/_security/user"

#Get more information about the rights of an user:
curl -X GET "ELASTICSEARCH-SERVER:9200/_security/user/<USERNAME>"

Taarifa za Elastic

Hapa kuna baadhi ya vituo vya mwisho ambavyo unaweza kupata kupitia GET ili kupata baadhi ya taarifa kuhusu elasticsearch:

Vituo hivi vilitolewa kutoka kwenye hati ya maelezo ambapo unaweza kupata zaidi. Pia, ukikagua /_cat jibu litajumuisha vituo vya /_cat/* vinavyoungwa mkono na kifaa.

Katika /_security/user (ikiwa uthibitishaji umewezeshwa) unaweza kuona ni mtumiaji yupi ana jukumu la superuser.

Viashiria

Unaweza kusanya viashiria vyote kwa kufikia http://10.10.10.115:9200/_cat/indices?v

health status index   uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .kibana 6tjAYZrgQ5CwwR0g6VOoRg   1   0          1            0        4kb            4kb
yellow open   quotes  ZG2D1IqkQNiNZmi2HRImnQ   5   1        253            0    262.7kb        262.7kb
yellow open   bank    eSVpNfCfREyYoVigNWcrMw   5   1       1000            0    483.2kb        483.2kb

Kupata taarifa kuhusu aina gani ya data imehifadhiwa ndani ya index unaweza kupata: http://host:9200/<index> kama vile katika kesi hii http://10.10.10.115:9200/bank

Dump index

Ikiwa unataka kudump yaliyomo yote ya index unaweza kupata: http://host:9200/<index>/_search?pretty=true kama vile http://10.10.10.115:9200/bank/_search?pretty=true

Chukua muda wa kulinganisha yaliyomo ya kila hati (entry) ndani ya index ya bank na mashamba ya index hii tuliyoyaona katika sehemu iliyopita.

Kwa hivyo, kufikia wakati huu unaweza kugundua kwamba kuna shamba linaloitwa "jumla" ndani ya "hits" ambalo linaonyesha kwamba hati 1000 zilipatikana ndani ya index hii lakini ni 10 tu zilizopatikana. Hii ni kwa sababu kwa chaguo-msingi kuna kikomo cha hati 10. Lakini, sasa unajua kwamba index hii ina hati 1000, unaweza kudump zote ukionyesha idadi ya hati unazotaka kudump kwenye parameter ya size: http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000asd Nota: Ikiwa unaonyesha idadi kubwa zaidi, hati zote zitadump bado, kwa mfano unaweza kuonyesha size=9999 na itakuwa ajabu ikiwa kulikuwa na hati zaidi (lakini unapaswa kuhakiki).

Dump all

Kwa lengo la kudump zote unaweza tu kwenda kwenye njia ile ile kama awali lakini bila kuonyesha index yoyote http://host:9200/_search?pretty=true kama vile http://10.10.10.115:9200/_search?pretty=true Kumbuka kwamba katika kesi hii kikomo cha chaguo-msingi cha 10 kitatumika. Unaweza kutumia parameter ya size kudump idadi kubwa ya matokeo. Soma sehemu iliyopita kwa maelezo zaidi.

Tafuta

Ikiwa unatafuta taarifa fulani unaweza kufanya utafutaji wa moja kwa moja kwenye indices zote kwa kwenda http://host:9200/_search?pretty=true&q=<search_term> kama vile http://10.10.10.115:9200/_search?pretty=true&q=Rockwell

Ikiwa unataka kutafuta kwenye index unaweza tu kuweka wazi kwenye njia: http://host:9200/<index>/_search?pretty=true&q=<search_term>

Tafadhali elewa kwamba parameter ya q iliyotumika kutafuta maudhui inakubali mizani ya kawaida

Unaweza pia kutumia kitu kama https://github.com/misalabs/horuz kufanya utafutaji wa elasticsearch.

curl -X POST '10.10.10.115:9200/bookindex/books' -H 'Content-Type: application/json' -d'
{
"bookId" : "A00-3",
"author" : "Sankaran",
"publisher" : "Mcgrahill",
"name" : "how to get a job"
}'

Hicho cmd kitazalisha index mpya inayoitwa bookindex na hati ya aina books ambayo ina sifa "bookId", "author", "publisher" na "name"

Tambua jinsi index mpya inavyoonekana sasa kwenye orodha:

Na uzingatie mali zilizoundwa kiotomatiki:

Uchambuzi wa Kiotomatiki

Baadhi ya zana zitapata baadhi ya data iliyotajwa hapo awali:

msf > use auxiliary/scanner/elasticsearch/indices_enum

Shodan

  • port:9200 elasticsearch

Jifunze kuhusu kuvamia AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Last updated