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:
- Ikiwa unataka kuona kampuni yako ikionekana katika HackTricks au kupakua HackTricks kwa muundo wa PDF Angalia MPANGO WA KUJIUNGA!
- Pata swag rasmi ya PEASS & HackTricks
- Gundua Familia ya PEASS, mkusanyiko wetu wa NFTs ya kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa HackTricks na HackTricks Cloud repos za github.
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=1000
asd
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:
- Ikiwa unataka kuona kampuni yako inatangazwa kwenye HackTricks au kupakua HackTricks kwa muundo wa PDF Angalia MPANGO WA KUJIUNGA!
- Pata swag rasmi ya PEASS & HackTricks
- Gundua The PEASS Family, mkusanyiko wetu wa NFTs za kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwenye HackTricks na HackTricks Cloud repos za github.