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)
- Pertama kita Impor perpustakaan
requests
yang akan membuat permintaan HTTP. - 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. - 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. - Metode
requests.get()
digunakan untuk mengirim permintaan HTTP GET ke API Microsoft 365. Dibutuhkan URLMSAPI
dan kamusheaders
sebagai parameter. - Objek
response
mewakili respon yang diterima dari API. Kode memeriksa apakah kode status respons adalah200
, yang menunjukkan permintaan berhasil. Jika respons berhasil, data JSON dalam respons diekstraksi menggunakanresponse.json()
, dan nama utama pengguna dicetak menggunakanprint('Session login successful for user:', data['userPrincipalName'])
. Jika kode status respons bukan200
, 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:
- https://github.com/R-Eric-Kiser/python-pentesting/blob/main/M365_session_ID_login.py
- Lihat apa yang saya lakukan di Twitter: https://twitter.com/R_Eric_Kiser
- Langganan! https://medium.com/@ekiser_48014/subscribe