9200 - Pentesting Elasticsearch
Temel bilgiler
Elasticsearch, tüm veri türleri için dağıtılmış, açık kaynaklı bir arama ve analiz motorudur. Hızı, ölçeklenebilirliği ve basit REST API'leri ile bilinir. Apache Lucene üzerine inşa edilen Elasticsearch, ilk kez 2010 yılında Elasticsearch N.V. (şimdi Elastic olarak bilinir) tarafından piyasaya sürüldü. Elasticsearch, veri alımı, zenginleştirme, depolama, analiz ve görselleştirme için açık kaynaklı araç koleksiyonu olan Elastic Stack'in temel bileşenidir. Bu yığın genellikle ELK Yığını olarak adlandırılır ve Logstash ve Kibana'yı da içerir; şu anda hafif veri taşıma ajanları olan Beats de bulunmaktadır.
Elasticsearch indeksi nedir?
Bir Elasticsearch indeksi, JSON olarak depolanan ilgili belgelerin bir koleksiyonudur. Her belge, anahtarlar ve bunların karşılık gelen değerleri (dizeler, sayılar, boole değerler, tarihler, diziler, coğrafi konumlar vb.) içerir.
Elasticsearch, hızlı tam metin aramaları 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 hangi belgelerde göründüğünü belirler.
İndeksleme süreci sırasında Elasticsearch, belgeleri depolar ve ters indeksi oluşturur, böylece neredeyse gerçek zamanlı aramalar yapılabilir. İndeks API'si, belirli bir indeks içindeki JSON belgelerini eklemek veya güncellemek için kullanılır.
Varsayılan bağlantı noktası: 9200/tcp
Manuel Numaralandırma
Banner
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/
/
'ye erişirken bu yanıtı görmüyorsanız aşağıdaki bölüme bakın.
Kimlik Doğrulama
Elasticsearch varsayılan olarak kimlik doğrulamayı etkinleştirmez, bu nedenle varsayılan olarak herhangi bir kimlik bilgisi kullanmadan veritabanındaki her şeye erişebilirsiniz.
Kimlik doğrulamanın devre dışı bırakıldığını doğrulamak için şu isteği yapabilirsiniz:
Ancak, /
adresine bir istek gönderirseniz ve aşağıdaki gibi bir yanıt alırsanız:
Bu, kimlik doğrulamasının yapılandırıldığı ve elasticserach'ten herhangi bir bilgi almak için geçerli kimlik bilgilerine ihtiyaç duyulduğu anlamına gelir. Daha sonra bruteforce deneyebilirsiniz (HTTP basic auth kullanır, bu yüzden HTTP basic auth'i BF etmek için kullanılabilir). İşte bir liste varsayılan kullanıcı adları: elastic (süper kullanıcı), remote_monitoring_user, beats_system, logstash_system, kibana, kibana_system, apm_system, _anonymous_._ Elasticsearch'in eski sürümlerinde bu kullanıcı için varsayılan şifre changeme'dir.
Temel Kullanıcı Numaralandırma
Elastik Bilgi
İşte elasticsearch hakkında bazı bilgiler elde etmek için GET ile erişebileceğiniz bazı uç noktalar:
_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 |
Bu uç noktalar belgelerden alınmıştır ve daha fazlasını bulabilirsiniz.
Ayrıca, /_cat
'e erişirseniz yanıt, örneğin tarafından desteklenen /_cat/*
uç noktalarını içerecektir.
/_security/user
'da (kimlik doğrulama etkinse) superuser
rolüne sahip olan kullanıcıyı görebilirsiniz.
İndeksler
Tüm indeksleri toplayabilirsiniz http://10.10.10.115:9200/_cat/indices?v
'e erişerek.
İndeks içinde hangi tür verilerin kaydedildiği hakkında bilgi edinmek için şu adrese erişebilirsiniz: http://host:9200/<index>
örneğin bu durumda http://10.10.10.115:9200/bank
İndeks dökümü
Bir indeksin tüm içeriğini dökmek istiyorsanız şu adrese erişebilirsiniz: http://host:9200/<index>/_search?pretty=true
gibi http://10.10.10.115:9200/bank/_search?pretty=true
Bank indeksi içindeki her belgenin (girişin) içeriğini ve bu indeksteki alanların önceki bölümde gördüğümüz alanlarını karşılaştırmak için biraz zaman ayırın.
Bu noktada "hits" içinde "total" adında bir alan olduğunu fark edebilirsiniz bu, bu indeks içinde 1000 belgenin bulunduğunu ancak yalnızca 10'unun alındığını gösterir. Bu, varsayılan olarak 10 belge sınırı olduğu için gerçekleşir.
Ancak, şimdi bu indeksin 1000 belge içerdiğini bildiğinize göre, tümünü dökebilirsiniz istediğiniz giriş sayısını size
parametresinde belirterek: http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000
Not: Daha büyük bir sayı belirtirseniz tüm girişler yine dökülecektir, örneğin size=9999
belirtebilir ve daha fazla giriş olması garip olabilir (ancak kontrol etmelisiniz).
Tümünü dökmek
Tümünü dökmek için sadece önceki indeksi belirtmeden aynı yola gidebilirsiniz http://host:9200/_search?pretty=true
gibi http://10.10.10.115:9200/_search?pretty=true
Unutmayın ki bu durumda varsayılan 10 sonuç sınırı uygulanacaktır. Daha fazla sonuç dökmek için size
parametresini kullanabilirsiniz. Daha fazla bilgi için önceki bölümü okuyun.
Arama
Bir bilgi arıyorsanız tüm indekslerde doğrudan arama yapabilirsiniz http://host:9200/_search?pretty=true&q=<arama_terimi>
gibi http://10.10.10.115:9200/_search?pretty=true&q=Rockwell
Sadece bir indekste arama yapmak istiyorsanız yolu belirtmeniz yeterlidir: http://host:9200/<index>/_search?pretty=true&q=<arama_terimi>
Arama içeriğini aramak için kullanılan q parametresinin düzenli ifadeleri desteklediğini unutmayın
Ayrıca bir Elasticsearch hizmetini fuzz etmek için https://github.com/misalabs/horuz gibi bir şey kullanabilirsiniz.
Yazma izinleri
Yazma izinlerinizi kontrol edebilir, yeni bir belge oluşturmayı deneyerek yeni bir indeks içinde çalıştırarak şöyle bir şey yapabilirsiniz:
Bu komut, "bookId", "author", "publisher" ve "name" özniteliklerine sahip books
türünde bir belgeye sahip bookindex
adında yeni bir dizin oluşturacaktır.
Yeni dizinin şimdi listede nasıl göründüğüne dikkat edin:
Ve otomatik olarak oluşturulan özelliklere dikkat edin:
Otomatik Numaralandırma
Bazı araçlar, önce sunulan verilerin bazılarını elde edecektir:
Shodan
port:9200 elasticsearch
Last updated