9200 - Pentesting Elasticsearch
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Web uygulamalarınız, ağınız ve bulutunuz hakkında bir hacker perspektifi edinin
Gerçek iş etkisi olan kritik, istismar edilebilir güvenlik açıklarını bulun ve raporlayın. Saldırı yüzeyini haritalamak, ayrıcalıkları artırmanıza izin veren güvenlik sorunlarını bulmak ve temel kanıtları toplamak için otomatik istismarları kullanmak için 20'den fazla özel aracımızı kullanın, böylece sıkı çalışmanızı ikna edici raporlara dönüştürün.
Elasticsearch, tüm veri türleri için dağıtık, açık kaynak bir arama ve analiz motorudur. Hızı, ölçeklenebilirliği ve basit REST API'leri ile bilinir. Apache Lucene üzerine inşa edilmiştir ve ilk olarak 2010 yılında Elasticsearch N.V. (şimdi Elastic olarak bilinir) tarafından piyasaya sürülmüştür. Elasticsearch, veri alımı, zenginleştirme, depolama, analiz ve görselleştirme için açık kaynak araçların bir koleksiyonu olan Elastic Stack'in temel bileşenidir. Bu yığın, genellikle ELK Yığını olarak adlandırılır ve ayrıca Logstash ve Kibana'yı içerir ve şimdi Beats adı verilen hafif veri taşıma ajanlarına sahiptir.
Elasticsearch indeksi, JSON olarak saklanan ilişkili belgelerin bir koleksiyonudur. Her belge, anahtarlar ve bunların karşılık gelen değerleri (dizeler, sayılar, booleanlar, tarihler, diziler, coğrafi konumlar vb.) içerir.
Elasticsearch, hızlı tam metin aramalarını kolaylaştırmak için ters indeks adı verilen verimli bir veri yapısı kullanır. Bu indeks, belgelerdeki her benzersiz kelimeyi listeler ve her kelimenin göründüğü belgeleri tanımlar.
İndeksleme süreci sırasında, Elasticsearch belgeleri saklar ve ters indeksi oluşturur, bu da neredeyse gerçek zamanlı arama yapılmasına olanak tanır. İndeks API'si, belirli bir indeks içinde JSON belgelerini eklemek veya güncellemek için kullanılır.
Varsayılan port: 9200/tcp
Elasticsearch'e erişmek için kullanılan protokol HTTP'dir. HTTP üzerinden eriştiğinizde bazı ilginç bilgiler bulacaksınız: http://10.10.10.115:9200/
Eğer /
eriştiğinizde bu yanıtı görmüyorsanız, aşağıdaki bölüme bakın.
Varsayılan olarak Elasticsearch'te kimlik doğrulama etkin değildir, bu nedenle varsayılan olarak herhangi bir kimlik bilgisi kullanmadan veritabanının içindeki her şeye erişebilirsiniz.
Kimlik doğrulamanın devre dışı olduğunu bir istekle doğrulayabilirsiniz:
Ancak, eğer /
adresine bir istek gönderirseniz ve aşağıdaki gibi bir yanıt alırsanız:
Bu, kimlik doğrulamanın yapılandırıldığı ve geçerli kimlik bilgilerine ihtiyacınız olduğu anlamına gelir, böylece elasticsearch'ten herhangi bir bilgi alabilirsiniz. Ardından, bunu brute force ile denemek (HTTP temel kimlik doğrulaması kullanır, bu nedenle BF HTTP temel kimlik doğrulaması ile kullanılabilecek her şey kullanılabilir). İşte varsayılan kullanıcı adları listesi: elastic (superuser), remote_monitoring_user, beats_system, logstash_system, kibana, kibana_system, apm_system, _anonymous_._ Elasticsearch'un eski sürümleri için bu kullanıcı için varsayılan şifre changemedir.
Elasticsearch hakkında bazı bilgiler edinmek için GET ile erişebileceğiniz bazı uç noktalar:
/_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
Bu uç noktalar belgeden alınmıştır ve burada daha fazla bulabilirsiniz.
Ayrıca, /_cat
'e erişirseniz, yanıt /_cat/*
uç noktalarını içerecektir.
/_security/user
'da (eğer kimlik doğrulama etkinse) hangi kullanıcının superuser
rolüne sahip olduğunu görebilirsiniz.
http://10.10.10.115:9200/_cat/indices?v
adresine erişerek tüm indeksleri toplayabilirsiniz.
Bir indeksin içinde hangi tür verilerin saklandığı hakkında bilgi almak için http://host:9200/<index>
adresine erişebilirsiniz, bu durumda örneğin http://10.10.10.115:9200/bank
Eğer bir indeksin tüm içeriğini dökmek istiyorsanız, http://host:9200/<index>/_search?pretty=true
adresine erişebilirsiniz, örneğin http://10.10.10.115:9200/bank/_search?pretty=true
Bank indeksindeki her belgenin (girişin) içeriğini ve önceki bölümde gördüğümüz bu indeksin alanlarını karşılaştırmak için bir an durun.
Bu noktada, "hits" içinde "total" adında bir alan olduğunu fark edebilirsiniz; bu, bu indekste 1000 belgenin bulunduğunu ancak yalnızca 10'un geri alındığını gösterir. Bunun nedeni, varsayılan olarak 10 belge sınırının olmasıdır.
Ama, artık bu indeksin 1000 belge içerdiğini bildiğinize göre, hepsini dökebilirsiniz ve dökmek istediğiniz giriş sayısını size
parametresinde belirtebilirsiniz: http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000
asd
&#xNAN;Not: Daha büyük bir sayı belirtirseniz, tüm girişler yine de dökülecektir; örneğin size=9999
belirtebilirsiniz ve daha fazla giriş varsa garip olur (ama kontrol etmelisiniz).
Hepsini dökmek için, önceki yolla aynı yola gidebilir ancak herhangi bir indeks belirtmeden http://host:9200/_search?pretty=true
adresine gidebilirsiniz, örneğin http://10.10.10.115:9200/_search?pretty=true
Bu durumda varsayılan 10 sonuç sınırının uygulanacağını unutmayın. Daha büyük bir sonuç miktarını dökmek için size
parametresini kullanabilirsiniz. Daha fazla bilgi için önceki bölümü okuyun.
Eğer bazı bilgileri arıyorsanız, tüm indekslerde ham bir arama yapabilirsiniz, http://host:9200/_search?pretty=true&q=<search_term>
adresine giderek, örneğin http://10.10.10.115:9200/_search?pretty=true&q=Rockwell
Eğer sadece bir indekste arama yapmak istiyorsanız, yolda bunu belirtebilirsiniz: http://host:9200/<index>/_search?pretty=true&q=<search_term>
Arama içeriği için kullanılan q parametresinin düzenli ifadeleri desteklediğini unutmayın.
Ayrıca bir elasticsearch hizmetini fuzzlamak için https://github.com/misalabs/horuz gibi bir şey de kullanabilirsiniz.
Yeni bir indekste yeni bir belge oluşturmayı deneyerek yazma izinlerinizi kontrol edebilirsiniz, aşağıdaki gibi bir şey çalıştırarak:
O cmd, "bookId", "author", "publisher" ve "name" özelliklerine sahip books
türünde bir belge ile bookindex
adında yeni bir indeks oluşturacaktır.
Yeni indeksin şimdi listede nasıl göründüğüne dikkat edin:
Ve otomatik olarak oluşturulan özelliklere dikkat edin:
Bazı araçlar, daha önce sunulan verilerden bazılarını elde edecektir:
port:9200 elasticsearch
Web uygulamalarınız, ağınız ve bulutunuz hakkında bir hacker perspektifi edinin
Gerçek iş etkisi olan kritik, istismar edilebilir güvenlik açıklarını bulun ve raporlayın. Saldırı yüzeyini haritalamak, yetki yükseltmenize izin veren güvenlik sorunlarını bulmak ve otomatik istismarları kullanarak temel kanıtları toplamak için 20'den fazla özel aracımızı kullanın, böylece sıkı çalışmanızı ikna edici raporlara dönüştürün.
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)