AWS - Codepipeline Privesc
कोडपाइपलाइन
कोडपाइपलाइन के बारे में अधिक जानकारी के लिए देखें:
pageAWS - 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>
बिल्ड प्रोजेक्ट बनाते समय आप एक कमांड चलाने का संकेत दे सकते हैं (रिवर्स शैल?) और बिल्ड फेज को विशेषाधिकारी उपयोगकर्ता के रूप में चलाने के लिए, यह हैकर को कंप्रोमाइज करने की आवश्यकता है:
?codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution
codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution
पिछली अनुमतियों के साथ कोडपाइपलाइन पर उपयोग किए जाने वाले रोल और कमांड को संशोधित करना संभव हो सकता है।
codepipeline:pollforjobs
codepipeline:pollforjobs
जब इस API को कॉल किया जाता है, CodePipeline उस S3 बकेट के लिए अस्थायी प्रमाणिकरण वापस करता है जिसका उपयोग पाइपलाइन के लिए आर्टिफैक्ट संग्रहित करने के लिए किया जाता है, यदि क्रिया को उस S3 बकेट तक पहुंच की आवश्यकता होती है इनपुट या आउटपुट आर्टिफैक्ट के लिए। यह API भी क्रिया के लिए परिभाषित किए गए किसी भी गोपनीय मूल्यों को वापस करता है।
Last updated