
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.
Bagian sebelumnya:
bagian 1 ,
bagian 2 dan
bagian 3 .
Informasi OrganisasiTerutama 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 22
Setelah menganalisis kode sumber, menjadi jelas bahwa kita akan melihat kata sandi jika parameter GET revelio tidak kosong.

Tetapi pada pemeriksaan pertama, jika sesi admin tidak diinstal, kami diarahkan ke halaman ini tanpa parameter.

Anda hanya perlu menggunakan agen web bukan browser, misalnya ikal.


Kami mengambil kata sandi.
level 23
Kami menganalisis kode sumber. Fungsi strstr (s1, s2) mengembalikan substring dari s1 yang dimulai dengan s2. Juga php secara otomatis melempar tipe. Artinya, ketika membandingkannya, itu akan mengarahkan string ke angka dan akan membuang karakter tambahan.

String "11inoveyou" akan cocok untuk kondisi kita. Pada pemeriksaan pertama, ia mengembalikan "iloveyou", yaitu, Benar. Pada pemeriksaan kedua, 11> 10, mis. Benar.

level 24
Level ini juga mengandung kesalahan logis. Kondisi ini tetap benar jika strcmp mengembalikan FALSE. Tetapi strcmp akan mengembalikan FALSE meskipun terjadi kesalahan.

Meskipun php membuat tipe secara otomatis, php tidak dapat memberikan array ke string. Untuk melakukan ini, buka kode sumber halaman dan ubah nama bidang dari "passwd" menjadi "passwd []".

Kami mengirim jalur apa pun.

Kami mengambil kata sandi.
level 25
Saat menganalisis kode sumber, yang paling menarik adalah fungsi logRequest (), yang memproses bidang yang dapat dikontrol pengguna. Ini adalah header HTTP dari User_Agent dan cookie session_id.



Perlu mempertimbangkan bahwa semua urutan "../" dihapus dari string, tetapi ini dapat dilakukan dengan cara: "... /. /" => "../".
Ide solusi: Karena jalur untuk merekam log tergantung pada session_id, yang dapat kita kontrol, dan dengan memilih bahasa tampilan, jalur pada server dipilih - karena LFI kita dapat membaca file log.




Sekarang tinggal menulis kata sandi dari /etc/natas_webpass / natas26 ke dalam file log kita. Karena Agen Web kami pertama kali direkam dan kemudian keluar dari file, kami akan menambahkan kode php ke bidang ini.


Kami mendapatkan kata sandi.
level 26
Dalam contoh ini, ada kerentanan yang sangat serius - deserialisasi objek tanpa filter. Fungsi unserialize () mengambil satu variabel serial dan mengubahnya kembali menjadi objek PHP.

Nilai yang dikonversi dikembalikan, yang bisa berupa integer, float, string, array atau objek. Yaitu Anda dapat menjalankan kode apa pun. Kelas Logger, ketika dibuat, menulis informasi tertentu ke file.

Idenya adalah sebagai berikut:
- Tulis ulang kelas Logger, di mana alih-alih salah satu pesan, kode php akan berisi yang akan menghasilkan kata sandi.
- Encode di Base64.
- Rekatkan dalam cookie.
- Akses file log.
- Singkirkan kata sandi.
<?php class Logger{ private $logFile; private $initMsg; private $exitMsg; function __construct($file){ $this->initMsg="<? passthru('cat /etc/natas_webpass/natas27'); ?>"; $this->exitMsg="<? passthru('cat /etc/natas_webpass/natas27'); ?>"; $this->logFile = "img/phpobjinj.php"; } function log($msg){ ; } function __destruct(){ ; } } $obj = new Logger("obj"); echo urlencode(base64_encode(serialize($obj))); ?>



Kami mendapatkan kata sandi.
level 27
Layanan ini menyediakan data pengguna. Tetapi jika pengguna tidak ada, ia membuatnya dengan nama pengguna dan kata sandi yang ditentukan.

Masalahnya adalah bahwa setelah membuat pengguna, layanan tidak memeriksa kata sandi saat login. Pada saat yang sama, hanya 64 karakter pertama dari login dan kata sandi setelah penyaringan masuk ke dalam basis data. Tidak hanya itu, kami tahu nama pengguna: natas28.

Buat pengguna dengan kata sandi dan nama kosong: "natas28_60-spasi_ any-character". (Jadi, selama verifikasi, tidak akan ada kecocokan dengan pengguna natas28, tetapi selama pembuatan itu akan disaring dan ditambahkan ke database. Artinya, kata sandi tidak akan diperiksa pada panggilan berikutnya).


Kami menggunakan nama natas28 dan kata sandi kosong. Kami mendapatkan data pengguna natas28.
Untuk dilanjutkan. Anda dapat bergabung dengan kami di
Telegram .