hacktricks/network-services-pentesting/9200-pentesting-elasticsearch.md
2024-02-11 02:13:58 +00:00

15 KiB

9200 - Kupima Usalama wa 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 wa kugawanywa, chanzo wazi kwa aina zote za data. Inajulikana kwa kasi, uwezo wa kupanuka, na API rahisi za REST. Iliyotengenezwa kwa kutumia Apache Lucene, ilizinduliwa kwa mara ya kwanza mwaka 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, kuongeza thamani, kuhifadhi, uchambuzi, na kuonyesha. Stack hii, inayojulikana kama ELK Stack, pia inajumuisha Logstash na Kibana, na sasa ina mawakala wa usafirishaji wa data nyepesi yanayoitwa Beats.

Ni nini Elasticsearch index?

Elasticsearch index ni mkusanyiko wa hati zinazohusiana zilizohifadhiwa kama JSON. Kila hati ina funguo na thamani zake zinazolingana (herufi, nambari, boolean, tarehe, mizunguko, nk).

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

Wakati wa mchakato wa kuunda indeksi, 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 indeksi maalum.

Bandari ya chaguo-msingi: 9200/tcp

Uchunguzi wa Kujitegemea

Bango

Itifaki inayotumiwa kupata Elasticsearch ni HTTP. Unapoiingia kupitia HTTP utapata habari za kuvutia: http://10.10.10.115:9200/

Ikiwa huoni jibu hilo ukiingia /, angalia sehemu ifuatayo.

Uthibitishaji

Kwa chaguo-msingi Elasticsearch haina uthibitishaji ulioamilishwa, kwa hivyo kwa chaguo-msingi unaweza kupata kila kitu ndani ya hifadhidata bila kutumia kitambulisho chochote.

Unaweza kuthibitisha kuwa uthibitishaji umewezeshwa 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 linalofuata:

{"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 kuwa uwakiki umewekwa na unahitaji sifa halali ili kupata habari yoyote kutoka kwa elasticserach. Kisha, unaweza jaribu kuvunja nguvu (inatumia HTTP msingi wa uwakiki, kwa hivyo chochote kinachovunja nguvu ya HTTP msingi wa uwakiki kinaweza kutumika).
Hapa una orodha ya majina ya mtumiaji ya chaguo-msingi: elastic (mtumiaji mkuu), remote_monitoring_user, beats_system, logstash_system, kibana, kibana_system, apm_system, _anonymous_._ Matoleo ya zamani ya Elasticsearch yana nenosiri la chaguo-msingi changeme kwa mtumiaji huyu.

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

Uchunguzi wa Msingi wa Mtumiaji

Kabla ya kuanza uchunguzi wa kina wa Elasticsearch, ni muhimu kufanya uchunguzi wa msingi wa mtumiaji ili kupata habari muhimu kuhusu mfumo. Hapa kuna njia kadhaa za kufanya hivyo:

1. Kagua Kiolesura cha Mtumiaji wa Elasticsearch

Kiolesura cha mtumiaji wa Elasticsearch kinaweza kutoa habari muhimu kuhusu mfumo. Unaweza kufikia kiolesura hiki kwa kutembelea URL ifuatayo:

http://<elasticsearch_ip>:9200/_cat

Badilisha <elasticsearch_ip> na anwani ya IP ya mfumo wa Elasticsearch unayotaka kuchunguza. Kwa mfano, ikiwa anwani ya IP ni 192.168.1.10, URL itakuwa:

http://192.168.1.10:9200/_cat

Kwa kawaida, utapata habari kama vile majina ya indices, idadi ya nyaraka, na hali ya kiafya ya mfumo.

2. Tumia API ya Elasticsearch

Unaweza kutumia API ya Elasticsearch kufanya uchunguzi wa msingi wa mtumiaji. Kwa mfano, unaweza kutumia API ya /_cluster/health kuona hali ya kiafya ya kikundi cha Elasticsearch. Unaweza kufikia API hii kwa kutembelea URL ifuatayo:

http://<elasticsearch_ip>:9200/_cluster/health

Badilisha <elasticsearch_ip> na anwani ya IP ya mfumo wa Elasticsearch unayotaka kuchunguza.

3. Tumia Zana za Uchunguzi

Kuna zana nyingi za uchunguzi zinazopatikana kwa Elasticsearch ambazo zinaweza kukusaidia kupata habari muhimu kuhusu mfumo. Baadhi ya zana maarufu ni pamoja na:

  • Elasticsearch Head: Kiolesura cha wavuti kinachowezesha uchunguzi wa Elasticsearch.
  • Kibana: Jukwaa la data visualization na uchunguzi ambalo linaweza kutumika kwa Elasticsearch.
  • Elasticsearch Security Plugin: Plugin ambayo inatoa huduma za usalama kwa Elasticsearch.

Kwa kutumia zana hizi, unaweza kupata habari zaidi kuhusu mfumo wako wa Elasticsearch na kufanya uchunguzi 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 kupata habari kuhusu elasticsearch ambavyo unaweza kufikia kupitia GET:

_cat /_cluster /_security
/_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

Vituo hivi vilitolewa kutoka hati ambapo unaweza kupata zaidi.
Pia, ikiwa unafikia /_cat, jibu litajumuisha vituo vya /_cat/* vinavyoungwa mkono na mfano.

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

Viashiria

Unaweza kukusanya 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 habari kuhusu aina gani ya data imehifadhiwa ndani ya kiashiria unaweza kufikia: http://host:9200/<kiashiria> kwa mfano katika kesi hii http://10.10.10.115:9200/bank

Pindua kiashiria

Ikiwa unataka pindua yaliyomo yote ya kiashiria unaweza kufikia: http://host:9200/<kiashiria>/_search?pretty=true kama http://10.10.10.115:9200/bank/_search?pretty=true

Chukua muda kulinganisha yaliyomo ya kila hati (ingizo) ndani ya kiashiria cha benki na uga wa kiashiria hiki tulichoona katika sehemu iliyopita.

Kwa hivyo, kwa wakati huu unaweza kugundua kwamba kuna uga unaoitwa "jumla" ndani ya "hits" ambayo inaonyesha kwamba hati 1000 zilipatikana ndani ya kiashiria hiki lakini ni 10 tu zilizopatikana tena. Hii ni kwa sababu kwa chaguo-msingi kuna kikomo cha hati 10.
Lakini, sasa unajua kwamba kiashiria hiki kina hati 1000, unaweza pindua zote kwa kuonyesha idadi ya hati unayotaka pindua kwenye parameta ya size: http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000asd
Nota: Ikiwa unaonyesha nambari kubwa, hati zote zitapinduliwa bado, kwa mfano unaweza kuonyesha size=9999 na itakuwa ajabu ikiwa kulikuwa na hati zaidi (lakini unapaswa kuhakiki).

Pindua zote

Ili kuzipindua zote unaweza tu kwenda kwenye njia ile ile kama hapo awali lakini bila kuonyesha kiashiria chochote http://host:9200/_search?pretty=true kama http://10.10.10.115:9200/_search?pretty=true
Kumbuka kwamba katika kesi hii kikomo cha chaguo-msingi cha 10 cha matokeo kitatumika. Unaweza kutumia parameta ya size kwa kuzipindua idadi kubwa ya matokeo. Soma sehemu iliyopita kwa maelezo zaidi.

Tafuta

Ikiwa unatafuta habari fulani unaweza kufanya utafutaji wa moja kwa moja kwenye viashiria vyote kwa kwenda http://host:9200/_search?pretty=true&q=<kitu_cha_utafutaji> kama vile http://10.10.10.115:9200/_search?pretty=true&q=Rockwell

Ikiwa unataka tu kutafuta kwenye kiashiria unaweza tu kuonyesha kwenye njia: http://host:9200/<kiashiria>/_search?pretty=true&q=<kitu_cha_utafutaji>

Chukua kwamba parameta ya q inayotumiwa kutafuta maudhui inakubali mifumo ya kawaida

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

Ruhusa za kuandika

Unaweza kuhakiki ruhusa zako za kuandika kwa kujaribu kuunda hati mpya ndani ya kiashiria kipya kwa kukimbia kitu kama ifuatavyo:

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"
}'

Amri hiyo itaunda indeksi mpya inayoitwa bookindex na hati ya aina books ambayo ina sifa "bookId", "author", "publisher" na "name"

Tazama jinsi indeksi mpya inavyoonekana sasa kwenye orodha:

Na angalia mali zilizoundwa kiotomatiki:

Uchambuzi wa Kiotomatiki

Baadhi ya zana zitapata baadhi ya data iliyotolewa hapo awali:

msf > use auxiliary/scanner/elasticsearch/indices_enum

{% embed url="https://github.com/theMiddleBlue/nmap-elasticsearch-nse" %}

Shodan

  • port:9200 elasticsearch
Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks: