hacktricks/network-services-pentesting/9200-pentesting-elasticsearch.md

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:

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=1000asd
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: