From b42a93e6b8d9e30aff030fba36f7be1da06695c8 Mon Sep 17 00:00:00 2001 From: Johannes Helmold Date: Mon, 31 May 2021 10:53:10 +0200 Subject: [PATCH 1/5] Include new ssh elevate credential in OSP request in manage.c: Appended the ssh elevate login data to the login data of the target osp ssh credential in function target_osp_ssh_credential(). --- src/manage.c | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/src/manage.c b/src/manage.c index 6dca6245a..52a747fa7 100644 --- a/src/manage.c +++ b/src/manage.c @@ -2077,16 +2077,19 @@ launch_osp_task (task_t task, target_t target, const char *scan_id, static osp_credential_t * target_osp_ssh_credential (target_t target) { - credential_t credential; + credential_t credential, ssh_elevate_credential; credential = target_ssh_credential (target); + ssh_elevate_credential = target_ssh_elevate_credential (target); + if (credential) { - iterator_t iter; + iterator_t iter, ssh_elevate_iter; const char *type; char *ssh_port; osp_credential_t *osp_credential; init_credential_iterator_one (&iter, credential); + if (!next (&iter)) { g_warning ("%s: SSH Credential not found.", __func__); @@ -2111,6 +2114,7 @@ target_osp_ssh_credential (target_t target) osp_credential_set_auth_data (osp_credential, "password", credential_iterator_password (&iter)); + if (strcmp (type, "usk") == 0) { const char *private_key = credential_iterator_private_key (&iter); @@ -2119,8 +2123,38 @@ target_osp_ssh_credential (target_t target) osp_credential_set_auth_data (osp_credential, "private", base64); g_free (base64); + } + + if(ssh_elevate_credential && !strcmp (type, "up")) + { + const char *elevate_type; + init_credential_iterator_one (&ssh_elevate_iter, + ssh_elevate_credential); + if (!next (&ssh_elevate_iter)) + { + g_warning ("%s: SSH Elevate Credential not found.", __func__); + cleanup_iterator (&ssh_elevate_iter); + return NULL; + } + elevate_type = credential_iterator_type (&ssh_elevate_iter); + if (strcmp (elevate_type, "up")) + { + g_warning ("%s: SSH Elevate Credential not of type up", __func__); + cleanup_iterator (&ssh_elevate_iter); + return NULL; + } + osp_credential_set_auth_data (osp_credential, + "priv_username", + credential_iterator_login + (&ssh_elevate_iter)); + osp_credential_set_auth_data (osp_credential, + "priv_password", + credential_iterator_password + (&ssh_elevate_iter)); + cleanup_iterator (&ssh_elevate_iter); } + cleanup_iterator (&iter); return osp_credential; } From bf921487ca5d1c205bdfcb011283c6061ce886c4 Mon Sep 17 00:00:00 2001 From: Johannes Helmold Date: Mon, 31 May 2021 12:30:52 +0200 Subject: [PATCH 2/5] Removal of wrong type check for ssh credential in manage.c: Removed the erroneous type check for the ssh credential in function target_osp_ssh_credential() before appending ssh elevate credential login data to the ssh credential login data. --- src/manage.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/manage.c b/src/manage.c index 52a747fa7..ff1f3c41a 100644 --- a/src/manage.c +++ b/src/manage.c @@ -2125,7 +2125,7 @@ target_osp_ssh_credential (target_t target) g_free (base64); } - if(ssh_elevate_credential && !strcmp (type, "up")) + if(ssh_elevate_credential) { const char *elevate_type; From 58b6cac6f98697d3ecf5ab9a779d86261b34ca64 Mon Sep 17 00:00:00 2001 From: Johannes Helmold Date: Tue, 1 Jun 2021 11:32:24 +0200 Subject: [PATCH 3/5] Added CHANGELOG-entry for new ssh elevate credential data in OSP --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5176e60d1..77ff1c012 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Added - Add a new modification_time column to reports [#1513](https://github.com/greenbone/gvmd/pull/1513), [#1519](https://github.com/greenbone/gvmd/pull/1519) -- Extend GMP for new privilege escalation credential[#1535](https://github.com/greenbone/gvmd/pull/1535) +- Extend GMP for new privilege escalation credential [#1535](https://github.com/greenbone/gvmd/pull/1535) +- Include new ssh elevate (escalation) credential in OSP request [#1539](https://github.com/greenbone/gvmd/pull/1539) ### Changed - Use pg-gvm extension for C PostgreSQL functions [#1400](https://github.com/greenbone/gvmd/pull/1400), [#1453](https://github.com/greenbone/gvmd/pull/1453) From 970063943f1dcb6f65d7057623db3c23cb4a246c Mon Sep 17 00:00:00 2001 From: Johannes Helmold Date: Tue, 1 Jun 2021 12:56:28 +0200 Subject: [PATCH 4/5] Added missing free(..) for osp_credential in manage.c: Added the two missing free(osp_credential) calls in function target_osp_ssh_credential(..). --- src/manage.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/manage.c b/src/manage.c index ff1f3c41a..6bbb7c2de 100644 --- a/src/manage.c +++ b/src/manage.c @@ -2135,6 +2135,7 @@ target_osp_ssh_credential (target_t target) { g_warning ("%s: SSH Elevate Credential not found.", __func__); cleanup_iterator (&ssh_elevate_iter); + free(osp_credential); return NULL; } elevate_type = credential_iterator_type (&ssh_elevate_iter); @@ -2142,6 +2143,7 @@ target_osp_ssh_credential (target_t target) { g_warning ("%s: SSH Elevate Credential not of type up", __func__); cleanup_iterator (&ssh_elevate_iter); + free(osp_credential); return NULL; } osp_credential_set_auth_data (osp_credential, From c9e5d28e4a1a604278e84bba5603228e745a2579 Mon Sep 17 00:00:00 2001 From: Johannes Helmold Date: Tue, 1 Jun 2021 13:57:54 +0200 Subject: [PATCH 5/5] Changed the functioncall of free(..) to osp_credential_free(..) in manage.c: Changed the call of free(osp_credential) to osp_credential_free(osp_credential) in function target_osp_ssh_credential(..). --- src/manage.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/manage.c b/src/manage.c index 6bbb7c2de..554555124 100644 --- a/src/manage.c +++ b/src/manage.c @@ -2135,7 +2135,7 @@ target_osp_ssh_credential (target_t target) { g_warning ("%s: SSH Elevate Credential not found.", __func__); cleanup_iterator (&ssh_elevate_iter); - free(osp_credential); + osp_credential_free(osp_credential); return NULL; } elevate_type = credential_iterator_type (&ssh_elevate_iter); @@ -2143,7 +2143,7 @@ target_osp_ssh_credential (target_t target) { g_warning ("%s: SSH Elevate Credential not of type up", __func__); cleanup_iterator (&ssh_elevate_iter); - free(osp_credential); + osp_credential_free(osp_credential); return NULL; } osp_credential_set_auth_data (osp_credential,