Concourse Enumeration & Attacks
Concourse Enumeration & Attacks
User Roles & Permissions
Concourse рдореЗрдВ рдкрд╛рдБрдЪ рднреВрдорд┐рдХрд╛рдПрдБ рд╣реИрдВ:
Concourse Admin: рдпрд╣ рднреВрдорд┐рдХрд╛ рдХреЗрд╡рд▓ рдореБрдЦреНрдп рдЯреАрдо (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рд╛рд░рдВрднрд┐рдХ concourse рдЯреАрдо) рдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ рдХреЛ рджреА рдЬрд╛рддреА рд╣реИред рдПрдбрдорд┐рди рдЕрдиреНрдп рдЯреАрдореЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ:
fly set-team
,fly destroy-team
...)ред рдЗрд╕ рднреВрдорд┐рдХрд╛ рдХреЗ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ RBAC рджреНрд╡рд╛рд░рд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛редowner: рдЯреАрдо рдХреЗ рдорд╛рд▓рд┐рдХ рдЯреАрдо рдХреЗ рднреАрддрд░ рд╕рдм рдХреБрдЫ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
member: рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп рдЯреАрдо рдХреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рднреАрддрд░ рдкрдврд╝ рдФрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЯреАрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
pipeline-operator: рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдСрдкрд░реЗрдЯрд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕рдВрдЪрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдмрд┐рд▓реНрдб рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдирд╛ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдкрд┐рди рдХрд░рдирд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╡реЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
viewer: рдЯреАрдо рдХреЗ рджрд░реНрд╢рдХреЛрдВ рдХреЛ рдЯреАрдо рдФрд░ рдЗрд╕рдХреА рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рддрдХ "рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓" рдкрд╣реБрдБрдЪ рд╣реЛрддреА рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, owner, member, pipeline-operator рдФрд░ viewer рдХреА рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ RBAC рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдХреЗ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдХреЗ)ред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝реЗрдВ: https://concourse-ci.org/user-roles.html
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ Concourse рдЯреАрдореЛрдВ рдХреЗ рднреАрддрд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╕рдореВрд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдХ рдЯреАрдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрди рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд╕рдХреЗрдВрдЧреЗ рдФрд░ рдХрдИ рдЯреАрдореЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдИ рдЯреАрдореЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
Vars & Credential Manager
YAML рдХреЙрдиреНрдлрд╝рд┐рдЧреНрд╕ рдореЗрдВ рдЖрдк рдорд╛рдиреЛрдВ рдХреЛ ((_source-name_:_secret-path_._secret-field_))
рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реЗ: source-name рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ, рдФрд░ рдпрджрд┐ рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХреНрд▓рд╕реНрдЯрд░-рд╡реНрдпрд╛рдкреА рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╛ рдорд╛рди рд╕реНрдереИрддрд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╡реИрдХрд▓реНрдкрд┐рдХ _secret-field_ рдЙрд╕ рдлрд╝реАрд▓реНрдб рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рд░рд╣рд╕реНрдп рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рдирд╛ рд╣реИред рдпрджрд┐ рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдкреНрд░рдмрдВрдзрдХ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рд╕реЗ 'рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрд╝реАрд▓реНрдб' рдкрдврд╝рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрди рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдлрд╝реАрд▓реНрдб рдореМрдЬреВрдж рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, secret-path рдФрд░ secret-field рдХреЛ рдбрдмрд▓ рдЙрджреНрдзрд░рдгреЛрдВ "..."
рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рд╡реЗ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдг рдЬреИрд╕реЗ .
рдФрд░ :
рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ((source:"my.secret"."field:1"))
secret-path рдХреЛ my.secret
рдФрд░ secret-field рдХреЛ field:1
рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ред
Static Vars
рд╕реНрдереИрддрд┐рдХ vars рдХреЛ рдХрд╛рд░реНрдп рдЪрд░рдгреЛрдВ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
Or using the following fly
arguments:
-v
or--var
NAME=VALUE
рд╕реНрдЯреНрд░рд┐рдВрдЧVALUE
рдХреЛ varNAME
рдХреЗ рд▓рд┐рдП рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред-y
or--yaml-var
NAME=VALUE
VALUE
рдХреЛ YAML рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ varNAME
рдХреЗ рд▓рд┐рдП рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред-i
or--instance-var
NAME=VALUE
VALUE
рдХреЛ YAML рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ instance varNAME
рдХреЗ рд▓рд┐рдП рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред instance vars рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП Grouping Pipelines рджреЗрдЦреЗрдВред-l
or--load-vars-from
FILE
FILE
рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП var рдирд╛рдореЛрдВ рдХреЛ рдореИрдк рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ YAML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рднреА рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред
Credential Management
рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ Credential Manager рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝реЗрдВ https://concourse-ci.org/creds.htmlред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Concourse рд╡рд┐рднрд┐рдиреНрди рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ Concourse рдкрд░ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рд▓рд┐рдЦрдиреЗ рдХреА рдкрд╣реБрдВрдЪ рд╣реИ, рддреЛ рдЖрдк рдЙрди рд░рд╣рд╕реНрдпреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдиреМрдХрд░рд┐рдпрд╛рдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ Concourse рдХреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
Concourse Enumeration
рдПрдХ concourse рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдорд╛рдиреНрдп рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ рдПрдХ рдкреНрд░рдорд╛рдгрд┐рдд рдЯреЛрдХрди рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рд╢рд╛рдпрдж рдПрдХ .flyrc
рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реЛред
Login and Current User enum
рд▓реЙрдЧрд┐рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ endpoint, team name (рдбрд┐рдлрд╝реЙрд▓реНрдЯ
main
рд╣реИ) рдФрд░ рдЯреАрдо рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИ рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:fly --target example login --team-name my-team --concourse-url https://ci.example.com [--insecure] [--client-cert=./path --client-key=./path]
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ targets рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
fly targets
рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ target connection рдЕрднреА рднреА рдорд╛рдиреНрдп рд╣реИ:
fly -t <target> status
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд▓рдХреНрд╖реНрдп рдХреЗ рдЦрд┐рд▓рд╛рдл рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рднреВрдорд┐рдХрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
fly -t <target> userinfo
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ API token рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ $HOME/.flyrc
рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдорд╢реАрдиреЛрдВ рдХреЛ рд▓реВрдЯрддреЗ рд╕рдордп рд╡рд╣рд╛рдВ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
Teams & Users
рдЯреАрдореЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
fly -t <target> teams
рдЯреАрдо рдХреЗ рдЕрдВрджрд░ рднреВрдорд┐рдХрд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
fly -t <target> get-team -n <team-name>
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
fly -t <target> active-users
Pipelines
рд╕реВрдЪреА рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдХреА:
fly -t <target> pipelines -a
рдкрд╛рдЗрдкрд▓рд╛рдЗрди yaml рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЬрд╛рдирдХрд╛рд░реА рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ):
fly -t <target> get-pipeline -p <pipeline-name>
рд╕рднреА рдкрд╛рдЗрдкрд▓рд╛рдЗрди config рдШреЛрд╖рд┐рдд vars рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
for pipename in $(fly -t <target> pipelines | grep -Ev "^id" | awk '{print $2}'); do echo $pipename; fly -t <target> get-pipeline -p $pipename -j | grep -Eo '"vars":[^}]+'; done
рд╕рднреА рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд░рд╣рд╕реНрдп рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рдпрджрд┐ рдЖрдк рдПрдХ рдиреМрдХрд░реА рдмрдирд╛/рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЛ рд╣рд╛рдИрдЬреИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ):
Containers & Workers
List workers:
fly -t <target> workers
List containers:
fly -t <target> containers
List builds (to see what is running):
fly -t <target> builds
Concourse Attacks
Credentials Brute-Force
admin:admin
test:test
Secrets and params enumeration
рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЖрдк рдкрд╛рдЗрдкрд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд░рд╣рд╕реНрдпреЛрдВ рдХреЗ рдирд╛рдо рдФрд░ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдореЗрдВ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рд░рд╣рд╕реНрдпреЛрдВ рдХреЗ рдирд╛рдо рдмрд╛рдж рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЪреБрд░рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреЗред
Session inside running or recently run container
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ (рд╕рджрд╕реНрдп рднреВрдорд┐рдХрд╛ рдпрд╛ рдЕрдзрд┐рдХ) рд╣реИрдВ, рддреЛ рдЖрдк рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдФрд░ рднреВрдорд┐рдХрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛ рд╕рдХреЗрдВрдЧреЗ рдФрд░ рдмрд╕ <pipeline>/<job>
рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╕рддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХреЗрдВрдЧреЗ:
рдЗрди рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдк рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:
рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдЧреБрдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдЪреБрд░рд╛рдирд╛
рдиреЛрдб рдкрд░ рднрд╛рдЧрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛
рдХреНрд▓рд╛рдЙрдб рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз/рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдирд╛ (рдкреЙрдб рд╕реЗ рдФрд░ рдиреЛрдб рд╕реЗ, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ)
рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдирд┐рд░реНрдорд╛рдг/рд╕рдВрд╢реЛрдзрди
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╣реИрдВ (рд╕рджрд╕реНрдп рднреВрдорд┐рдХрд╛ рдпрд╛ рдЕрдзрд┐рдХ) рддреЛ рдЖрдк рдирдИ рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдмрдирд╛/рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦреЗрдВ:
With the modification/creation of a new pipeline you will be able to:
рдЪреБрд░рд╛рдирд╛ the рдЧреБрдкреНрдд (via echoing them out or getting inside the container and running
env
)рднрд╛рдЧрдирд╛ to the рдиреЛрдб (by giving you enough privileges -
privileged: true
)Enumerate/Abuse рдХреНрд▓рд╛рдЙрдб рдореЗрдЯрд╛рдбреЗрдЯрд╛ endpoint (from the pod and from the node)
рд╣рдЯрд╛рдирд╛ created pipeline
Execute Custom Task
This is similar to the previous method but instead of modifying/creating a whole new pipeline you can just execute a custom task (which will probably be much more рдЧреБрдкреНрдд):
Escaping to the node from privileged task
рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ concourse рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд╛рд░реНрдп рдХреИрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рдпрд╣ рдХрдВрдЯреЗрдирд░ рдХреЛ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдзреНрд╡рдЬ рдХреЗ рд╕рдорд╛рди рд╕рдЯреАрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рджреЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк /dev рдореЗрдВ рдиреЛрдб рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдбрд┐рд╡рд╛рдЗрд╕ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдмрдЪ рдирд┐рдХрд▓рдирд╛ рдЕрдзрд┐рдХ "рдЬрдЯрд┐рд▓" рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд PoC рдореЗрдВ рд╣рдо рдХреБрдЫ рдЫреЛрдЯреЗ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рд╕рд╛рде escape рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП release_agent рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ:
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕рд╛рдорд╛рдиреНрдп release_agent escape рд╣реИ, рдмрд╕ рдиреЛрдб рдореЗрдВ cmd рдХреЗ рдкрде рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛
рдПрдХ рд╡рд░реНрдХрд░ рдХрдВрдЯреЗрдирд░ рд╕реЗ рдиреЛрдб рдореЗрдВ рднрд╛рдЧрдирд╛
рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп release_agent escape рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рдВрд╢реЛрдзрди рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:
Web рдХрдВрдЯреЗрдирд░ рд╕реЗ рдиреЛрдб рдкрд░ рднрд╛рдЧрдирд╛
рднрд▓реЗ рд╣реА рд╡реЗрдм рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХреБрдЫ рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрд╛рдп рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИрдВ, рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдорд╛рдЙрдВрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдФрд░ рдХреНрд╖рдорддрд╛рдПрдБ рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рд╕реЗ рднрд╛рдЧрдиреЗ рдХреЗ рд╕рднреА рдЖрд╕рд╛рди рддрд░реАрдХреЗ рдмреЗрдХрд╛рд░ рд╣реИрдВ)ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕реНрдерд╛рдиреАрдп рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдкрд╛рда рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ:
рдЖрдк рдЙрди рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рд▓реЙрдЧрд┐рди рдХрд░рдиреЗ рдФрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдиреЗ рдФрд░ рдиреЛрдб рдкрд░ рднрд╛рдЧрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рдЖрдк postgresql рдЙрджрд╛рд╣рд░рдг рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рднреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ concourse рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдкрддрд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо, рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рдЬрд╛рдирдХрд╛рд░реА):
рдЧрд╛рд░реНрдбрди рд╕реЗрд╡рд╛ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ - рдЕрд╕рд▓реА рд╣рдорд▓рд╛ рдирд╣реАрдВ
рдпрд╣ рд╕реЗрд╡рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдиреЛрдЯреНрд╕ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░ рд╕реБрди рд░рд╣реА рд╣реИ, рдпреЗ рдиреЛрдЯреНрд╕ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдбрд╛рд▓реЗрдВрдЧреЗ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рд╢реЛрд╖рдг рдХрд┐рдпрд╛ рд╣реИ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреНрд░рддреНрдпреЗрдХ concourse рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреЛрд░реНрдЯ 7777 рдореЗрдВ рдЧрд╛рд░реНрдбрди рд╕реЗрд╡рд╛ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реЗрдм рдорд╛рд╕реНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕реЗ рдХреНрдпрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реИ (рдЗрдореЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдЪрд▓рд╛рдирд╛)ред рдпрд╣ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЕрдЪреНрдЫреА рд╕реБрд░рдХреНрд╖рд╛ рд╣реИрдВ:
рдпрд╣ рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ (127..0.0.1) рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╡рд┐рд╢реЗрд╖ SSH рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рд╡реЗрдм рдХреЗ рдЦрд┐рд▓рд╛рдл рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд░рддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╕реБрд░рдВрдЧ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ рддрд╛рдХрд┐ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рдЕрдВрджрд░ рдкреНрд░рддреНрдпреЗрдХ рдЧрд╛рд░реНрдбрди рд╕реЗрд╡рд╛ рд╕реЗ рдмрд╛рдд рдХрд░ рд╕рдХреЗред
рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╣рд░ рдХреБрдЫ рд╕реЗрдХрдВрдб рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╣рдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдПрдХ рдХрд╕реНрдЯрдо рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдФрд░ рдЧрд╛рд░реНрдбрди рд╕реЗрд╡рд╛ рдХреЗ рдмреАрдЪ рд╕рдВрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░рдиреА рд╣реЛрдЧреАред
Concourse рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЙрдЪреНрдЪ рдХрдВрдЯреЗрдирд░ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЪрд▓рддреЗ рд╣реИрдВ:
рд╣рд╛рд▓рд╛рдВрдХрд┐, рддрдХрдиреАрдХреЗрдВ рдЬреИрд╕реЗ mounting /dev рдбрд┐рд╡рд╛рдЗрд╕ рдиреЛрдб рдпрд╛ release_agent рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреА (рдХреНрдпреЛрдВрдХрд┐ рдиреЛрдб рдХреЗ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдЕрд╕рд▓реА рдбрд┐рд╡рд╛рдЗрд╕ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рд╣реИ)ред рд╣рдо рдиреЛрдб рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рддрдХ рдкрд╣реБрдБрдЪ рдирд╣реАрдВ рд╕рдХрддреЗ, рдЗрд╕рд▓рд┐рдП рдХрд░реНрдиреЗрд▓ рдПрдХреНрд╕рдкреНрд▓реЙрдЗрдЯреНрд╕ рдХреЗ рдмрд┐рдирд╛ рдиреЛрдб рд╕реЗ рднрд╛рдЧрдирд╛ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрдВрдЯреЗрдирд░ рд╕реЗ рднрд╛рдЧрдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╣рдо execute рдХрдорд╛рдВрдб рдХреЛ privileged container рдореЗрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ current worker рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╣рдо node рдкрд░ escape рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ concourse рдХреЗ рд╕рд╛рде рдЦреЗрд▓рддреЗ рд╕рдордп рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЬрдм рдХреБрдЫ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдХрдВрдЯреЗрдирд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХрдВрдЯреЗрдирд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХрдВрдЯреЗрдирд░ рд╕реЗ рд╕реБрд▓рдн рд╣реЛрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдирдпрд╛ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдиреЗ рдЬреИрд╕рд╛ рд╣реИред
рдПрдХ рдЪрд▓ рд░рд╣реЗ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдЬрд╛рдирд╛
рдПрдХ рдирдпрд╛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдирд╛
рдЖрдк рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдирдпрд╛ рдХрдВрдЯреЗрдирд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдмрд╕ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ UID рдЪрд▓рд╛рдПрдБ) рдФрд░ рдЙрд╕ рдкрд░ рдХреБрдЫ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╣рд░ рдХреБрдЫ рд╕реЗрдХрдВрдб рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдХреЛрдИ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдХрдВрдЯреЗрдирд░ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЪреВрдВрдХрд┐ рд╕рдВрдЪрд╛рд░ HTTP рдореЗрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЖрдк рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЪрд╛рд░ рдореЗрдВ рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рд╕рдВрджрд░реНрдн
https://concourse-ci.org/vars.html
Last updated