13 KiB
9200 - Pentesting Elasticsearch
Jifunze kuhack 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 kwenye HackTricks au kupakua HackTricks kwa PDF Angalia MIPANGO YA KUJIUNGA!
- Pata bidhaa rasmi za 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 kuhack kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
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. Ilianzishwa 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, kuiboresha, kuihifadhi, kuianaliza, na kuivizualisha. Stack hii, inayojulikana kama ELK Stack, pia inajumuisha Logstash na Kibana, na sasa ina mawakala wa usafirishaji wa data wenye uzito mdogo wanaitwa Beats.
Ni nini index ya Elasticsearch?
Index ya Elasticsearch ni mkusanyiko wa hati zinazohusiana zilizohifadhiwa kama JSON. Kila hati inajumuisha funguo na thamani zao zinazolingana (herufi, nambari, boolean, tarehe, mizunguko, n.k.).
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 kuweka indeksi, Elasticsearch hifadhi hati na kujenga inverted index, kuruhusu utafutaji karibu wa wakati halisi. API ya indeksi hutumiwa kuongeza au kusasisha hati za JSON ndani ya indeksi maalum.
Bandari ya chaguo: 9200/tcp
Uchunguzi wa Mikono
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, hivyo kwa chaguo-msingi unaweza kufikia kila kitu ndani ya database bila kutumia anwani yoyote.
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 unatuma ombi kwa /
na kupokea jibu kama hili:
{"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 uthibitisho umewekwa na unahitaji sifa halali ili kupata habari yoyote kutoka kwa elasticserach. Kisha, unaweza jaribu kuvunja (inatumia HTTP msingi wa uthibitisho, kwa hivyo chochote kinachovunja HTTP msingi wa uthibitisho kinaweza kutumika).
Hapa una orodha ya majina ya mtumiaji ya 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 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 kupata taarifa kuhusu elasticsearch ambavyo unaweza kupata 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 vilichukuliwa kutoka kwenye hati ya maelezo ambapo unaweza kupata zaidi.
Pia, ukikwenda /_cat
jibu litajumuisha vituo vya /_cat/*
vinavyoungwa mkono na kifaa.
Kwenye /_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
Pindua index
Ikiwa unataka pindua maudhui 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 maudhui ya kila hati (ingizo) ndani ya index ya benki na uga wa index hii tulioona katika sehemu iliyopita.
Kwa hivyo, kufikia wakati huu unaweza kugundua kwamba kuna uga unaitwa "jumla" ndani ya "hits" ambao unaonyesha 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 kupindua zote ukionyesha idadi ya maingizo unayotaka kupindua kwenye parameter ya size
: http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000
asd
Nota: Ikiwa unaonyesha idadi kubwa, maingizo yote yatapinduliwa hata hivyo, kwa mfano unaweza kuonyesha size=9999
na itakuwa ajabu ikiwa kulikuwa na maingizo zaidi (ingawa unapaswa kuhakiki).
Pindua yote
Kwa lengo la kupindua yote unaweza 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 kwa kesi hii kikomo cha msingi cha 10 kitatumika. Unaweza kutumia parameter ya size
kupindua 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 kumbuka 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.
Ruhusa za Kuandika
Unaweza kuchunguza ruhusa zako za kuandika kwa kujaribu kuunda hati mpya ndani ya index mpya 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"
}'
Cmd ifuatayo itaunda kiashiria kipya kinachoitwa bookindex
na hati ya aina vitabu
ambayo ina sifa "bookId", "mwandishi", "mchapishaji" na "jina"
Tambua jinsi kiashiria kipya kinavyoonekana sasa kwenye orodha:
Na uone mali zilizoundwa kiotomatiki:
Uorodheshaji 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 kuhack 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 ikitangazwa kwenye HackTricks au kupakua HackTricks kwa PDF Angalia MIPANGO YA KUJIUNGA!
- Pata bidhaa rasmi za 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 kuhack kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud github repos.