AWS - Codepipeline Privesc
codepipeline
codepipeline के बारे में अधिक जानकारी के लिए देखें:
AWS - DataPipeline, CodePipeline & CodeCommit Enumiam:PassRole
, codepipeline:CreatePipeline
, codebuild:CreateProject, codepipeline:StartPipelineExecution
iam:PassRole
, codepipeline:CreatePipeline
, codebuild:CreateProject, codepipeline:StartPipelineExecution
कोड पाइपलाइन बनाते समय आप एक कोडपाइपलाइन IAM भूमिका निर्दिष्ट कर सकते हैं, इसलिए आप उन्हें समझौता कर सकते हैं।
पिछले अनुमतियों के अलावा, आपको उस स्थान तक पहुंच की आवश्यकता होगी जहां कोड संग्रहीत है (S3, ECR, github, bitbucket...)
मैंने यह प्रक्रिया वेब पृष्ठ पर करते हुए परीक्षण किया, पहले निर्दिष्ट अनुमतियाँ कोडपाइपलाइन बनाने के लिए आवश्यक नहीं हैं, लेकिन इसे वेब पर बनाने के लिए आपको भी आवश्यकता होगी: codebuild:ListCuratedEnvironmentImages, codebuild:ListProjects, codebuild:ListRepositories, codecommit:ListRepositories, events:PutTargets, codepipeline:ListPipelines, events:PutRule, codepipeline:ListActionTypes, cloudtrail:<several>
बिल्ड प्रोजेक्ट के निर्माण के दौरान आप एक कमांड निर्दिष्ट कर सकते हैं (rev shell?) और बिल्ड चरण को विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में चलाने के लिए, यही वह कॉन्फ़िगरेशन है जिसकी हमलावर को समझौता करने की आवश्यकता है:
?codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution
codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution
पिछले अनुमतियों के साथ कोडपाइपलाइन पर उपयोग की जाने वाली भूमिका और निष्पादित कमांड को संशोधित करना संभव हो सकता है।
codepipeline:pollforjobs
codepipeline:pollforjobs
जब इस API को कॉल किया जाता है, तो CodePipeline पाइपलाइन के लिए कलाकृतियों को संग्रहीत करने के लिए उपयोग किए जाने वाले S3 बकेट के लिए अस्थायी क्रेडेंशियल्स लौटाता है, यदि क्रिया को इनपुट या आउटपुट कलाकृतियों के लिए उस S3 बकेट तक पहुंच की आवश्यकता होती है। यह API क्रिया के लिए परिभाषित किसी भी गुप्त मानों को भी लौटाता है।
Last updated