Fix script execution on windows #4

Merged
nserrano merged 1 commits from windows-fixes into ogagent-macos 2024-07-19 10:45:19 +02:00
Collaborator

Historia de usuario: https://ognproject.evlt.uma.es/redmine/issues/252

Levantar el agente de windows como se vio en #2 (pero instalar ogagent-1.3.3 en lugar de la 1.3.1).

Preparar script multilínea con variables:

$ cat <<'EOF' |base64 -w 0
> Start-Process notepad.exe
> $url = "https://www.python.org/ftp/python/3.12.3/amd64/path.msi"
> Invoke-WebRequest -Uri $url -OutFile path.msi
> Start-Process calc.exe
> EOF
U3RhcnQtUHJvY2VzcyBub3RlcGFkLmV4ZQokdXJsID0gImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8zLjEyLjMvYW1kNjQvcGF0aC5tc2kiCkludm9rZS1XZWJSZXF1ZXN0IC1VcmkgJHVybCAtT3V0RmlsZSBwYXRoLm1zaQpTdGFydC1Qcm9jZXNzIGNhbGMuZXhlCg==

Comprobar que el base64 es correcto:

$ echo U3RhcnQtUHJvY2VzcyBub3RlcGFkLmV4ZQokdXJsID0gImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8zLjEyLjMvYW1kNjQvcGF0aC5tc2kiCkludm9rZS1XZWJSZXF1ZXN0IC1VcmkgJHVybCAtT3V0RmlsZSBwYXRoLm1zaQpTdGFydC1Qcm9jZXNzIGNhbGMuZXhlCg== |base64 -d
Start-Process notepad.exe
$url = "https://www.python.org/ftp/python/3.12.3/amd64/path.msi"
Invoke-WebRequest -Uri $url -OutFile path.msi
Start-Process calc.exe

Enviar solicitud al agente:

$ curl --insecure -X POST --header 'Authorization: eltokenquesea' --data '{"script":"U3RhcnQtUHJvY2VzcyBub3RlcGFkLmV4ZQokdXJsID0gImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8zLjEyLjMvYW1kNjQvcGF0aC5tc2kiCkludm9rZS1XZWJSZXF1ZXN0IC1VcmkgJHVybCAtT3V0RmlsZSBwYXRoLm1zaQpTdGFydC1Qcm9jZXNzIGNhbGMuZXhlCg==","client":"true"}' https://localhost:8000/opengnsys/script

En el windows deberían aparecer un bloc de notas (en virtud del Start-Process notepad.exe), una calculadora (debido al Start-Process calc.exe y en el filesystem debería aparecer un path.msi en C:\Program Files (x86)\OGAgent. También debería haber un log, bastante crudo, en C:\users\docker\appdata\local\temp\opengnsys-subprocs.log.

Historia de usuario: https://ognproject.evlt.uma.es/redmine/issues/252 Levantar el agente de windows como se vio en #2 (pero instalar ogagent-1.3.3 en lugar de la 1.3.1). Preparar script multilínea con variables: ``` $ cat <<'EOF' |base64 -w 0 > Start-Process notepad.exe > $url = "https://www.python.org/ftp/python/3.12.3/amd64/path.msi" > Invoke-WebRequest -Uri $url -OutFile path.msi > Start-Process calc.exe > EOF U3RhcnQtUHJvY2VzcyBub3RlcGFkLmV4ZQokdXJsID0gImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8zLjEyLjMvYW1kNjQvcGF0aC5tc2kiCkludm9rZS1XZWJSZXF1ZXN0IC1VcmkgJHVybCAtT3V0RmlsZSBwYXRoLm1zaQpTdGFydC1Qcm9jZXNzIGNhbGMuZXhlCg== ``` Comprobar que el base64 es correcto: ``` $ echo U3RhcnQtUHJvY2VzcyBub3RlcGFkLmV4ZQokdXJsID0gImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8zLjEyLjMvYW1kNjQvcGF0aC5tc2kiCkludm9rZS1XZWJSZXF1ZXN0IC1VcmkgJHVybCAtT3V0RmlsZSBwYXRoLm1zaQpTdGFydC1Qcm9jZXNzIGNhbGMuZXhlCg== |base64 -d Start-Process notepad.exe $url = "https://www.python.org/ftp/python/3.12.3/amd64/path.msi" Invoke-WebRequest -Uri $url -OutFile path.msi Start-Process calc.exe ``` Enviar solicitud al agente: ``` $ curl --insecure -X POST --header 'Authorization: eltokenquesea' --data '{"script":"U3RhcnQtUHJvY2VzcyBub3RlcGFkLmV4ZQokdXJsID0gImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8zLjEyLjMvYW1kNjQvcGF0aC5tc2kiCkludm9rZS1XZWJSZXF1ZXN0IC1VcmkgJHVybCAtT3V0RmlsZSBwYXRoLm1zaQpTdGFydC1Qcm9jZXNzIGNhbGMuZXhlCg==","client":"true"}' https://localhost:8000/opengnsys/script ``` En el windows deberían aparecer un bloc de notas (en virtud del `Start-Process notepad.exe`), una calculadora (debido al `Start-Process calc.exe` y en el filesystem debería aparecer un `path.msi` en `C:\Program Files (x86)\OGAgent`. También debería haber un log, bastante crudo, en `C:\users\docker\appdata\local\temp\opengnsys-subprocs.log`.
nserrano added 1 commit 2024-07-05 14:29:42 +02:00
nserrano requested review from aguerrero 2024-07-12 17:45:02 +02:00
nserrano changed title from WIP Fix script execution on windows to Fix script execution on windows 2024-07-12 19:03:36 +02:00
Collaborator

Funciona

De los pasos de la PR #2 cuando ejecutas

sudo perl -MDateTime -Mojo -E 'a("/*foo" => sub { printf "%s %s %s %s\n", DateTime->now->strftime ("%Y%m%d %H%M%S%z"), $_->tx->remote_address, $_->param("foo"), $_->req->body; $_->render (text => "{}") })->start ("daemon", "-l", "https://192.168.0.37:443")'

copias el secret que te genera cuando inicias windows

20240718 170857+0000 172.18.0.2 opengnsys/rest/ogagent/started {"mac": "02:B0:34:50:D1:34", "ip": "20.20.20.21", "secret": "jsd5ts0echz00pdnzesg0x3zxq8lqz23", "ostype": "Windows", "osversion": "Windows 10 Pro 2009", "agent_version": "1.3.0"}

Lo reemplazas en la seccion de Authorization

url --insecure -X POST --header 'Authorization: jsd5ts0echz00pdnzesg0x3zxq8lqz23' --data '{"script":"U3RhcnQtUHJvY2VzcyBub3RlcGFkLmV4ZQokdXJsID0gImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8zLjEyLjMvYW1kNjQvcGF0aC5tc2kiCkludm9rZS1XZWJSZXF1ZXN0IC1VcmkgJHVybCAtT3V0RmlsZSBwYXRoLm1zaQpTdGFydC1Qcm9jZXNzIGNhbGMuZXhlCg==","client":"true"}' https://localhost:8000/opengnsys/script

y listo, te abre todo lo que venga en el script multilínea:

Funciona De los pasos de la PR #2 cuando ejecutas `sudo perl -MDateTime -Mojo -E 'a("/*foo" => sub { printf "%s %s %s %s\n", DateTime->now->strftime ("%Y%m%d %H%M%S%z"), $_->tx->remote_address, $_->param("foo"), $_->req->body; $_->render (text => "{}") })->start ("daemon", "-l", "https://192.168.0.37:443")'` copias el secret que te genera cuando inicias windows >`20240718 170857+0000 172.18.0.2 opengnsys/rest/ogagent/started {"mac": "02:B0:34:50:D1:34", "ip": "20.20.20.21", "secret": "jsd5ts0echz00pdnzesg0x3zxq8lqz23", "ostype": "Windows", "osversion": "Windows 10 Pro 2009", "agent_version": "1.3.0"} ` Lo reemplazas en la seccion de Authorization `url --insecure -X POST --header 'Authorization: jsd5ts0echz00pdnzesg0x3zxq8lqz23' --data '{"script":"U3RhcnQtUHJvY2VzcyBub3RlcGFkLmV4ZQokdXJsID0gImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8zLjEyLjMvYW1kNjQvcGF0aC5tc2kiCkludm9rZS1XZWJSZXF1ZXN0IC1VcmkgJHVybCAtT3V0RmlsZSBwYXRoLm1zaQpTdGFydC1Qcm9jZXNzIGNhbGMuZXhlCg==","client":"true"}' https://localhost:8000/opengnsys/script` y listo, te abre todo lo que venga en el script multilínea:
nserrano merged commit 10a4c28ea6 into ogagent-macos 2024-07-19 10:45:19 +02:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: opengnsys/ogagent#4
There is no content yet.