Melewati MFA dengan ID sesi

Bagaimana MFA dapat Diabaikan

Mengikuti dan melewati MFA dengan ID sesi memiliki beberapa kesamaan. Tailgating mengacu pada tindakan seorang karyawan yang secara tidak sengaja memberikan akses tidak sah ke area terlarang dengan membuka pintu terkunci untuk seseorang tanpa memverifikasi identitasnya atau tanpa menyadari kehadirannya. Dengan Microsoft 365, Jika pengguna telah mengautentikasi dengan autentikasi multifaktor (MFA), mereka mungkin tidak perlu memberikan token MFA lainnya. Jika penyerang berhasil memperoleh ID sesi pengguna melalui teknik seperti serangan pass-the-hash atau serangan phishing, mereka berpotensi mendapatkan akses ke sejumlah besar data pengguna. Luasnya data yang dapat diakses oleh penyerang bergantung pada konfigurasi yang diterapkan oleh organisasi dan hak akses yang diberikan pengguna. Akses tidak sah ini dapat memberikan penyerang banyak informasi berharga dan sumber daya sensitif.

Saat Anda mengautentikasi dengan MFA untuk sesi Microsoft 365, Anda memberikan nama pengguna dan kata sandi Anda, serta bentuk autentikasi tambahan seperti token keamanan atau metode autentikasi berbasis telepon. Setelah Anda berhasil mengautentikasi, sesi Anda biasanya dikaitkan dengan akun pengguna Anda dan proses autentikasi mungkin tidak memerlukan token MFA lain untuk jangka waktu tertentu, bergantung pada kebijakan dan pengaturan MFA yang dikonfigurasi untuk akun Anda.

Menggunakan Python untuk Masuk ke MS365

Skrip berikut ini menunjukkan bagaimana ini dapat digunakan untuk membuat panggilan API ke API Microsoft 365 menggunakan pustaka Python requests.

import requests

# Define the Microsoft 365 API endpoint and headers
MSAPI = 'https://graph.microsoft.com/v1.0/me'
headers = {'Authorization': 'Bearer <your session ID>'}

# Use the Requests library to make an API call to Microsoft 365
response = requests.get(MSAPI, headers=headers)

# Check for a successful response
if response.status_code == 200:
    data = response.json()
    print('Session login successful for user:', data['userPrincipalName'])
else:
    print('Session login failed with error code:', response.status_code)
  1. Pertama kita Impor perpustakaan requests yang akan membuat permintaan HTTP.
  2. Variabel MSAPI menentukan URL titik akhir Microsoft 365 API. Dalam hal ini, disetel ke 'https://graph.microsoft.com/v1.0/me', yang mewakili titik akhir API untuk mengambil informasi tentang pengguna yang diautentikasi saat ini.
  3. Variabel headers adalah kamus yang menyertakan header otorisasi yang diperlukan untuk mengakses API. Ini mencakup kunci 'Authorization' dengan nilai 'Bearer <your session ID>'. ID sesi harus diganti dengan ID sesi sebenarnya yang diperoleh setelah otentikasi berhasil.
  4. Metode requests.get() digunakan untuk mengirim permintaan HTTP GET ke API Microsoft 365. Dibutuhkan URL MSAPI dan kamus headers sebagai parameter.
  5. Objek response mewakili respon yang diterima dari API. Kode memeriksa apakah kode status respons adalah 200, yang menunjukkan permintaan berhasil. Jika respons berhasil, data JSON dalam respons diekstraksi menggunakan response.json(), dan nama utama pengguna dicetak menggunakan print('Session login successful for user:', data['userPrincipalName']). Jika kode status respons bukan 200, pesan kesalahan akan dicetak yang menunjukkan kegagalan dengan kode status terkait.

Ini dapat digunakan sebagai titik awal untuk berinteraksi dengan layanan Microsoft 365 dan mengambil informasi spesifik pengguna. Selain itu, Anda dapat menambahkan cuplikan ke skrip yang akan membuka browser chrome dengan ID sesi. Pertama-tama Anda harus mengimpor perpustakaan browser web di bagian atas skrip.

# Open Chrome with the session ID
    session_id = '<your session ID>'
    chrome_url = f'https://myaccount.microsoft.com/?session={session_id}'  # Replace with the appropriate URL
    webbrowser.get('chrome').open(chrome_url)
else:
    print('Session login failed with error code:', response.status_code)

Modul webbrowser diimpor untuk mengaktifkan pembukaan Chrome. Setelah mencetak pesan login berhasil, variabel session_id diatur ke ID sesi yang diperoleh setelah otentikasi.

Anda perlu mengganti <your session ID> dan https://www.example.com?session={session_id} dengan ID sesi sebenarnya dan URL tempat Anda ingin meneruskan ID sesi. Ini akan terlihat seperti ini https://myaccount.microsoft.com/?ref=MeControl&login_hint=username%40company.org&tid=session_id

webbrowser.get('chrome').open(chrome_url) membuka browser Chrome dan menavigasi ke URL yang ditentukan, meneruskan ID sesi sebagai parameter. Anda tidak akan diminta masuk MFA lagi. Namun, jika Anda berada di jaringan eksternal, Anda mungkin mendapatkan perintah MFA lainnya.

Tautan: