Retas Kotak. Panduan JSON. Kerentanan dalam Json.Net dan LPE melalui SeImpersonatePrivilege

gambar

Saya terus menerbitkan solusi yang dikirim untuk diproses lebih lanjut dari situs HackTheBox . Saya berharap ini akan membantu setidaknya seseorang untuk berkembang di bidang keamanan informasi. Dalam artikel ini, kami mengeksploitasi kerentanan di Json.Net dan melihat bagaimana meningkatkan hak istimewa kami untuk SISTEM jika kami memiliki hak istimewa SeImpersonatePrivilege.

Koneksi ke laboratorium adalah melalui VPN. Disarankan untuk tidak terhubung dari komputer kerja atau dari host di mana data penting bagi Anda tersedia, karena Anda berakhir di jaringan pribadi dengan orang-orang yang tahu sesuatu di bidang keamanan informasi :)

Informasi Organisasi
, - , :

  • PWN;
  • (Crypto);
  • c (Network);
  • (Reverse Engineering);
  • (Stegano);
  • WEB-.

, , , .

, , Telegram . , , .

. , - , .

Badan intelijen


Mesin ini memiliki alamat IP 10.10.10.158, yang saya tambahkan ke / etc / hosts.

10.10.10.158    json.htb

Pertama, kami memindai port terbuka. Karena butuh waktu lama untuk memindai semua port dengan nmap, saya akan melakukan ini dengan masscan. Kami memindai semua port TCP dan UDP dari antarmuka tun0 dengan kecepatan 500 paket per detik.

masscan -e tun0 -p1-65535,U:1-65535 10.10.10.158 --rate=500

gambar

Selanjutnya, Anda perlu mengumpulkan lebih banyak informasi tentang port yang dikenal. Untuk melakukan ini, gunakan nmap dengan opsi -A.

nmap json.htb -p49156,49154,49152,47001,80,137,49153,139,49155,135,445,49158,5985,6666,21

gambar

Sekarang, untuk informasi lebih rinci tentang layanan yang beroperasi pada port, kami akan menjalankan pemindaian dengan opsi -A.

nmap -A json.htb -p80,139,135,445,5985,6666,21

gambar

Mari kita lihat apa yang ada di web. Akibatnya, halaman dimuat, dan hanya kemudian melemparkan kita ke halaman otorisasi.

gambar

Kita bisa menyiasatinya, tetapi admin: admin memungkinkan kita untuk masuk.

gambar

Tidak ada yang menarik di situs itu sendiri, dan dalam upaya menemukan setidaknya sesuatu, kami berpegang teguh pada cookie.

gambar

Dekode Base64.

echo "eyJJZCI6MSwiVXNlck5hbWUiOiJhZG1pbiIsIlBhc3N3b3JkIjoiMjEyMzJmMjk3YTU3YTVhNzQzODk0YTBlNGE4MDFmYzMiLCJOYW1lIjoiVXNlciBBZG1pbiBIVEIiLCJSb2wiOiJBZG1pbmlzdHJhdG9yIn0=" | base64 -d ; echo

gambar

Artinya, nilai kata sandi adalah MD5 dari kata sandi admin.

gambar

Selanjutnya, tidak ada yang menarik. Dengan membuka Bersendawa dan memotong permintaan, Anda dapat menemukan header HTTP yang menarik.

gambar

Dan pada tahap ini, saya menggantung sampai saya diminta untuk "mematahkan artinya". Jelas, dalam kasus seperti itu, Anda perlu membuat kesalahan dan menonton reaksi API di tiga negara: benar, salah, dan salah. Tetapi untuk beberapa alasan saya melewatkannya.

Titik masuk


Dan kemudian ditemukan bahwa jika data yang rusak ditransmisikan dalam header HTTP yang aneh (hapus beberapa karakter), maka server memberikan kesalahan. Di bawah ini adalah data yang dikembalikan oleh server dengan nilai header normal dan dengan satu hingga empat karakter dihapus.

gambar

Kami mendapatkan kesalahan menarik dalam kasus terakhir. Karena objek JSON tidak beroperasi, kita dapat mengeksploitasi ini menggunakan ysoserial . Kami akan menggunakan gadget ObjectDataProvider untuk Json.Net dan menjalankan perintah ping untuk memverifikasi asumsi kerentanan.

gambar

Sekarang aktifkan tcpdump dengan filter protokol ICMP untuk menangkap ping.

gambar

Saat mencegat permintaan, kami mengubah tajuk.

gambar

Dan kami mendapatkan ping yang dipesan.

gambar

PENGGUNA


Sekarang Anda perlu melakukan hal yang sama dengan meteran beban. Pertama, kami menghasilkan beban dan membuka pendengar.

gambar

gambar

Sekarang buka server SMB lokal dari mana beban akan dimulai.

gambar

Sekarang lagi kami membuat serial data yang diperlukan, sebagai perintah kami meluncurkan beban kami dari server kami.

gambar

Kami melihat koneksi yang berhasil ke server SMB dan sesi Meterpreter berhasil dimuat.

gambar

gambar

Dan baca file pengguna.

AKAR


Pertama-tama, kami melihat informasi tentang pengguna di bawah siapa kami bekerja.

gambar

Pengguna memiliki hak istimewa SeImpersonatePrivilege diaktifkan (hak "Meniru klien setelah otentikasi"). Seperti yang dikatakan Microsoft :
Memberi hak kepada pengguna "Meniru klien setelah otentikasi" memungkinkan program yang berjalan atas nama pengguna ini menyamar sebagai klien. Menggunakan parameter ini mencegah server yang tidak sah meniru klien yang terhubung ke server ini menggunakan prosedur RPC atau pipa bernama.
Faktanya adalah bahwa kita dapat meningkatkan hak kami untuk SISTEM. Sebuah studi lengkap dapat ditemukan di sini . Hak istimewa berikut ini dipengaruhi oleh kerentanan ini:

  • SeImpersonatePrivilege
  • SeAssignPrimaryPrivilege
  • Setcbprivilege
  • SeBackupPrivilege
  • SeRestorePrivilege
  • SeCreateTokenPrivilege
  • SeLoadDriverPrivilege
  • SeTakeOwnershipPrivilege
  • SeDebugPrivilege

Mari kita menghasilkan beban lain dan menjalankan pendengar untuk itu.

gambar

gambar

Untuk operasi kita akan menggunakan Juicy Potato . Tetapi sebagai parameter Anda perlu menentukan CLSID dari akun untuk sistem target, kami juga akan mengambilnya dari repositori . Tapi pertama-tama, mari kita lihat sistem seperti apa.

gambar

Dan sekarang kita melihat CLSID.

gambar

Unggah file ke host target.

gambar

Sekarang jalankan Juicy Potato dan tunjukkan padanya dengan proses apa yang akan dibuat (CreateProcessWithTokenW atau CreateProcessAsUser, parameter -t), file proses (-p), port mendengarkan (-l), dan CLSID (-c).

gambar

Proses telah berhasil dibuat, dan kami melihat sesi metterpreter yang dibuat.

gambar

Dan kami mendapatkan akun SYSTEM.

Anda dapat bergabung dengan kami di Telegram. Mari kita mengumpulkan komunitas di mana akan ada orang-orang yang berpengalaman dalam banyak bidang TI, maka kita selalu dapat saling membantu dalam masalah TI dan keamanan informasi.

All Articles