GCP - Token Persistance

Support HackTricks

рдкреНрд░рдорд╛рдгреАрдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯреЛрдХрди

рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:

sqlite3 $HOME/.config/gcloud/access_tokens.db "select access_token from access_tokens where account_id='<email>';"

рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рджреЗрдЦреЗрдВ рдХрд┐ gcloud рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдЯреЛрдХрди рдХрд╛ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ:

рдирдпрд╛ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╡рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛рдПрдБ:

sqlite3 $HOME/.config/gcloud/credentials.db "select value from credentials where account_id='<email>';"

рдпрд╣ рднреА рд╕рдВрднрд╡ рд╣реИ рдХрд┐ $HOME/.config/gcloud/application_default_credentials.json рдФрд░ $HOME/.config/gcloud/legacy_credentials/*/adc.json рдореЗрдВ рд░рд┐рдлреНрд░реЗрд╢ рдЯреЛрдХрди рдкрд╛рдП рдЬрд╛рдПрдВред

рд░рд┐рдлреНрд░реЗрд╢ рдЯреЛрдХрди, рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдИрдбреА, рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реАрдХреНрд░реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рд░рд┐рдлреНрд░реЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛рдПрдБ:

curl -s --data client_id=<client_id> --data client_secret=<client_secret> --data grant_type=refresh_token --data refresh_token=<refresh_token> --data scope="https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/accounts.reauth" https://www.googleapis.com/oauth2/v4/token

рдПрдбрдорд┐рди > рд╕реБрд░рдХреНрд╖рд╛ > рдЧреВрдЧрд▓ рдХреНрд▓рд╛рдЙрдб рд╕рддреНрд░ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд░рд┐рдлреНрд░реЗрд╢ рдЯреЛрдХрди рдХреА рд╡реИрдзрддрд╛ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕реЗ 16 рдШрдВрдЯреЗ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реЗ рдХрднреА рд╕рдорд╛рдкреНрдд рди рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рд╡рд╛рд╣

рдЬрдм gcloud auth login рдЬреИрд╕реЗ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рд╡рд╛рд╣ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рдкреНрд░реЙрдореНрдкреНрдЯ рдЦреЛрд▓реЗрдЧрд╛ рдФрд░ рд╕рднреА рд╕реНрдХреЛрдк рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдЕрдиреБрд░реЛрдз рдЙрдкрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдЦреЛрд▓реЗ рдЧрдП http рдкреЛрд░реНрдЯ рдкрд░ рднреЗрдЬреЗрдЧрд╛:

/?state=EN5AK1GxwrEKgKog9ANBm0qDwWByYO&code=4/0AeaYSHCllDzZCAt2IlNWjMHqr4XKOuNuhOL-TM541gv-F6WOUsbwXiUgMYvo4Fg0NGzV9A&scope=email%20openid%20https://www.googleapis.com/auth/userinfo.email%20https://www.googleapis.com/auth/cloud-platform%20https://www.googleapis.com/auth/appengine.admin%20https://www.googleapis.com/auth/sqlservice.login%20https://www.googleapis.com/auth/compute%20https://www.googleapis.com/auth/accounts.reauth&authuser=0&prompt=consent HTTP/1.1

рдлрд┐рд░, gcloud рдХреБрдЫ рд╣рд╛рд░реНрдбрдХреЛрдбреЗрдб client_id (32555940559.apps.googleusercontent.com) рдФрд░ client_secret (ZmssLNjJy2998hD4CTg2ejr2) рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рдФрд░ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдВрддрд┐рдо рд░рд┐рдлреНрд░реЗрд╢ рдЯреЛрдХрди рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ localhost рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ HTTP рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рддрд╛рдХрд┐ рдПрдХ рд░рд┐рдлреНрд░реЗрд╢ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рдбреЗрдЯрд╛ рдХреЗрд╡рд▓ 1 рдмрд╛рд░ рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмреЗрдХрд╛рд░ рд╣реЛрдЧрд╛, рдЗрд╕реЗ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд░рд┐рдлреНрд░реЗрд╢ рдЯреЛрдХрди рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИред

OAuth Scopes

рдЖрдк рд╕рднреА Google рд╕реНрдХреЛрдк https://developers.google.com/identity/protocols/oauth2/scopes рдкрд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

curl "https://developers.google.com/identity/protocols/oauth2/scopes" | grep -oE 'https://www.googleapis.com/auth/[a-zA-A/\-\._]*' | sort -u

рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдпрд╣ рджреЗрдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ gcloud рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рд╕реНрдХреЛрдк рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ:

curl "https://developers.google.com/identity/protocols/oauth2/scopes" | grep -oE 'https://www.googleapis.com/auth/[a-zA-Z/\._\-]*' | sort -u | while read -r scope; do
echo -ne "Testing $scope         \r"
if ! curl -v "https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=32555940559.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8085%2F&scope=openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin+$scope+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fsqlservice.login+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcompute+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Faccounts.reauth&state=AjvFqBW5XNIw3VADagy5pvUSPraLQu&access_type=offline&code_challenge=IOk5F08WLn5xYPGRAHP9CTGHbLFDUElsP551ni2leN4&code_challenge_method=S256" 2>&1 | grep -q "error"; then
echo ""
echo $scope
fi
done

рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж рдпрд╣ рдЬрд╛рдВрдЪрд╛ рдЧрдпрд╛ рдХрд┐ рдпрд╣ рдРрдк рдЗрди рд╕реНрдХреЛрдк рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:

https://www.googleapis.com/auth/appengine.admin
https://www.googleapis.com/auth/bigquery
https://www.googleapis.com/auth/cloud-platform
https://www.googleapis.com/auth/compute
https://www.googleapis.com/auth/devstorage.full_control
https://www.googleapis.com/auth/drive
https://www.googleapis.com/auth/userinfo.email

рдпрд╣ рджреЗрдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдпрд╣ рдРрдк drive рд╕реНрдХреЛрдк рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ GCP рд╕реЗ Workspace рдореЗрдВ рдмрдврд╝рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЗрд╕ рд╕реНрдХреЛрдк рдХреЗ рд╕рд╛рде рдПрдХ рдЯреЛрдХрди рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ рдХрд┐ рдХреИрд╕реЗ рдЗрд╕рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ

рдЬреИрд╕реЗ рдХрд┐ рдкреНрд░рдорд╛рдгрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде, рдпрджрд┐ рдЖрдк рдПрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдХреА рдирд┐рдЬреА рдХреБрдВрдЬреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдордЭреМрддрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдЖрдо рддреМрд░ рдкрд░ рдЬрд┐рддрдирд╛ рдЪрд╛рд╣реЗрдВ рдЙрддрдирд╛ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХреЗрдВрдЧреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рдПрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдХрд╛ OAuth рдЯреЛрдХрди рдЪреБрд░рд╛ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдФрд░ рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐, рднрд▓реЗ рд╣реА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпреЗ рдЯреЛрдХрди рдХреЗрд╡рд▓ рдПрдХ рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрддреЗ рд╣реИрдВ, рдпрджрд┐ рдкреАрдбрд╝рд┐рдд рдирд┐рдЬреА рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ, рддреЛ OAuh рдЯреЛрдХрди рддрдм рднреА рдорд╛рдиреНрдп рд░рд╣реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред

рдореЗрдЯрд╛рдбреЗрдЯрд╛

рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рдЬрдм рддрдХ рдЖрдк GCP рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЪрд▓ рд░рд╣реА рдорд╢реАрди рдХреЗ рдЕрдВрджрд░ рд╣реИрдВ, рдЖрдк рдЙрд╕ рдорд╢реАрди рд╕реЗ рдЬреБрдбрд╝реЗ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдХреЛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдХреЗ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХреЗрдВрдЧреЗ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдореЗрдВ рдЖрдк рдЬреЛ Oauth рдЯреЛрдХрди рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рд╕реНрдХреЛрдк рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ)ред

рд╕реБрдзрд╛рд░

рдЗрди рддрдХрдиреАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реБрдзрд╛рд░ https://www.netskope.com/blog/gcp-oauth-token-hijacking-in-google-cloud-part-2 рдореЗрдВ рд╕рдордЭрд╛рдП рдЧрдП рд╣реИрдВред

рд╕рдВрджрд░реНрдн

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

Last updated