AWS - API Gateway Post Exploitation
API Gateway
Per maggiori informazioni controlla:
AWS - API Gateway EnumAccesso a API non esposte
Puoi creare un endpoint in https://us-east-1.console.aws.amazon.com/vpc/home#CreateVpcEndpoint con il servizio com.amazonaws.us-east-1.execute-api
, esporre l'endpoint in una rete a cui hai accesso (potenzialmente tramite una macchina EC2) e assegnare un gruppo di sicurezza che consente tutte le connessioni.
Quindi, dalla macchina EC2 sarai in grado di accedere all'endpoint e quindi chiamare l'API del gateway che non era stata esposta prima.
Bypass del passthrough del corpo della richiesta
Questa tecnica è stata trovata in questo writeup CTF.
Come indicato nella documentazione AWS nella sezione PassthroughBehavior
, per impostazione predefinita, il valore WHEN_NO_MATCH
, quando si controlla l'header Content-Type della richiesta, passerà la richiesta al back end senza trasformazione.
Pertanto, nel CTF l'API Gateway aveva un template di integrazione che impediva l'esfiltrazione della flag in una risposta quando veniva inviata una richiesta con Content-Type: application/json
:
Tuttavia, inviare una richiesta con Content-type: text/json
impedirebbe quel filtro.
Infine, poiché l'API Gateway consentiva solo Get
e Options
, era possibile inviare una query arbitraria a dynamoDB senza alcun limite inviando una richiesta POST con la query nel corpo e utilizzando l'intestazione X-HTTP-Method-Override: GET
:
Usage Plans DoS
Nella sezione Enumeration puoi vedere come ottenere il piano di utilizzo delle chiavi. Se hai la chiave ed è limitata a X utilizzi al mese, potresti semplicemente usarla e causare un DoS.
L'API Key deve solo essere inclusa all'interno di un header HTTP chiamato x-api-key
.
apigateway:UpdateGatewayResponse
, apigateway:CreateDeployment
apigateway:UpdateGatewayResponse
, apigateway:CreateDeployment
Un attaccante con i permessi apigateway:UpdateGatewayResponse
e apigateway:CreateDeployment
può modificare una risposta del Gateway esistente per includere header personalizzati o template di risposta che trapelano informazioni sensibili o eseguono script dannosi.
Impatto Potenziale: Perdita di informazioni sensibili, esecuzione di script dannosi o accesso non autorizzato alle risorse API.
Necessita di test
apigateway:UpdateStage
, apigateway:CreateDeployment
apigateway:UpdateStage
, apigateway:CreateDeployment
Un attaccante con i permessi apigateway:UpdateStage
e apigateway:CreateDeployment
può modificare uno stage esistente di API Gateway per reindirizzare il traffico a un altro stage o cambiare le impostazioni di caching per ottenere accesso non autorizzato ai dati memorizzati nella cache.
Impatto Potenziale: Accesso non autorizzato ai dati memorizzati nella cache, interruzione o intercettazione del traffico API.
Necessita di test
apigateway:PutMethodResponse
, apigateway:CreateDeployment
apigateway:PutMethodResponse
, apigateway:CreateDeployment
Un attaccante con i permessi apigateway:PutMethodResponse
e apigateway:CreateDeployment
può modificare la risposta del metodo di un metodo API Gateway REST API esistente per includere intestazioni personalizzate o modelli di risposta che trapelano informazioni sensibili o eseguono script dannosi.
Potenziale Impatto: Perdita di informazioni sensibili, esecuzione di script dannosi o accesso non autorizzato alle risorse API.
Necessario testare
apigateway:UpdateRestApi
, apigateway:CreateDeployment
apigateway:UpdateRestApi
, apigateway:CreateDeployment
Un attaccante con i permessi apigateway:UpdateRestApi
e apigateway:CreateDeployment
può modificare le impostazioni dell'API Gateway REST API per disabilitare il logging o cambiare la versione minima di TLS, potenzialmente indebolendo la sicurezza dell'API.
Impatto Potenziale: Indebolimento della sicurezza dell'API, potenzialmente consentendo l'accesso non autorizzato o l'esposizione di informazioni sensibili.
Necessario testare
apigateway:CreateApiKey
, apigateway:UpdateApiKey
, apigateway:CreateUsagePlan
, apigateway:CreateUsagePlanKey
apigateway:CreateApiKey
, apigateway:UpdateApiKey
, apigateway:CreateUsagePlan
, apigateway:CreateUsagePlanKey
Un attaccante con i permessi apigateway:CreateApiKey
, apigateway:UpdateApiKey
, apigateway:CreateUsagePlan
, e apigateway:CreateUsagePlanKey
può creare nuove chiavi API, associarle a piani di utilizzo e poi usare queste chiavi per accedere non autorizzato alle API.
Impatto Potenziale: Accesso non autorizzato alle risorse API, bypassando i controlli di sicurezza.
Necessita di test
Last updated