From 19210873d54a5fde6f8c61c4003153cf2d5109c5 Mon Sep 17 00:00:00 2001 From: CPol Date: Thu, 29 Feb 2024 11:23:35 +0000 Subject: [PATCH] GITBOOK-588: change request with no subject merged in GitBook --- .gitbook/assets/image (152).png | Bin 0 -> 45475 bytes .../aws-warm-lambda-persistence.md | 39 ++++++++++++++++-- 2 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 .gitbook/assets/image (152).png diff --git a/.gitbook/assets/image (152).png b/.gitbook/assets/image (152).png new file mode 100644 index 0000000000000000000000000000000000000000..5d9159fed474ace61c4d7c0660c338a5fc554a5f GIT binary patch literal 45475 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 YnPXo(q`@?HKmZ;fIaS%3H>M%~2LP8ejsO4v literal 0 HcmV?d00001 diff --git a/pentesting-cloud/aws-pentesting/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md b/pentesting-cloud/aws-pentesting/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md index 5419da6a6..2b4f75bf4 100644 --- a/pentesting-cloud/aws-pentesting/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md +++ b/pentesting-cloud/aws-pentesting/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md @@ -9,12 +9,45 @@ Other ways to support HackTricks: * If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) * Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share your hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. -**You can check the original post in [https://unit42.paloaltonetworks.com/gaining-persistency-vulnerable-lambdas/](https://unit42.paloaltonetworks.com/gaining-persistency-vulnerable-lambdas/), but unfortunatelly this trick no longer works as lambda filesystem is now mounted as read-only.** +## Lambda Flow + +

https://unit42.paloaltonetworks.com/wp-content/uploads/2019/10/lambda_poc_2_arch.png

+ +1. **Slicer** is a process outside the container that **send** **invocations** to the **init** process. +2. The init process listens on port **9001** exposing some interesting endpoints: + * **`/2018-06-01/runtime/invocation/next`** – get the next invocation event + * **`/2018-06-01/runtime/invocation/{invoke-id}/response`** – return the handler response for the invoke + * **`/2018-06-01/runtime/invocation/{invoke-id}/error`** – return an execution error +3. **bootstrap.py** has a loop getting invocations from the init process and calls the users code to handle them (**`/next`**). +4. Finally, **bootstrap.py** sends to init the **response** + +Note that bootstrap loads the user code as a module, so any code execution performed by the users code is actually happening in this process. + +## Stealing Lambda Requests + +The goal of this attack is to make the users code execute a malicious **`bootstrap.py`** process inside the **`bootstrap.py`** process that handle the vulnerable request. This way, the **malicious bootstrap** process will start **talking with the init process** to handle the requests while the **legit** bootstrap is **trapped** running the malicious one, so it won't ask for requests to the init process. + +This is a simple task to achieve as the code of the user is being executed by the legit **`bootstrap.py`** process. So the attacker could: + +* **Send a fake result of the current invocation to the init process**, so init thinks the bootstrap process is waiting for more invocations. + * A request must be sent to **`/${invoke-id}/response`** + * The invoke-id can be obtained from the stack of the legit **`bootstrap.py`** process using the [**inspect**](https://docs.python.org/3/library/inspect.html) python module (as [proposed here](https://github.com/twistlock/lambda-persistency-poc/blob/master/poc/switch\_runtime.py)) or just requesting it again to **`/2018-06-01/runtime/invocation/next`** (as [proposed here](https://github.com/Djkusik/serverless\_persistency\_poc/blob/master/gcp/exploit\_files/switcher.py)). +* Execute a malicious **`boostrap.py`** which will handle the next invocations + * For stealthiness purposes it's possible to send the lambda invocations parameters to an attackers controlled C2 and then handle the requests as usual. + * For this attack, it's enough to get the original code of **`bootstrap.py`** from the system, add the malicious code and run it from the current lambda invocation indicating the **`invoke-id`** as parameter. + +### Attack Steps + + + +## References + +* [https://unit42.paloaltonetworks.com/gaining-persistency-vulnerable-lambdas/](https://unit42.paloaltonetworks.com/gaining-persistency-vulnerable-lambdas/)
@@ -25,7 +58,7 @@ Other ways to support HackTricks: * If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) * Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share your hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.