Bagaimana saya menemukan kerentanan pertama saya?

Kata Pengantar


Halo semuanya. Umur saya 20 tahun. Sampai baru-baru ini, saya belajar di Lyceum dan sedang bersiap untuk memasuki universitas kedokteran, dan sekarang saya adalah pengembang penuh di perusahaan Amerika. Sebenarnya, saya sangat senang bahwa saya tidak berhasil dengan obat-obatan - pemrograman adalah hobi saya, dan sekarang saya bisa melakukannya setiap saat. Sekarang saya lebih suka tidak menulis tentang kesuksesan di bidang TI. Saat ini saya ingin berbicara tentang bagaimana saya membaca beberapa buku tentang kerentanan (untuk melindungi proyek saya) dan saya berhasil menerapkan pengetahuan ini ke dalam praktik.

Penafian


Semua materi, tangkapan layar, serta tautan ke sumber daya pihak ketiga, diposkan untuk tujuan pendidikan. Penulis tidak bertanggung jawab atas penggunaannya oleh pengunjung lain ke Habr. Perusahaan diberitahu sebelumnya mengenai kerentanan 48 jam dan menerima data yang cukup untuk memperbaikinya.

Bagaimana semuanya dimulai


Itu adalah hari yang sangat biasa. Saya menyelesaikan beberapa tugas di tempat kerja dan menyeduh secangkir kopi. Pada saat yang sama, saya memutuskan untuk membaca satu artikel tentang penyebaran aplikasi di AWS, yang pernah saya posting ulang sendiri di VK (omong-omong, saya tidak pernah membaca artikel). Kolom di sebelah kanan artikel menampilkan beberapa artikel lain dan spanduk mitra untuk penyedia hosting .

gambar

Saya tidak ingat apa yang sebenarnya membuat saya pergi ke situs, tetapi selama masa transisi saya melihat satu fitur menarik: tautan mengarah ke halaman pendaftaran dan langsung diisi dalam satu bidang - kode promosi.

Jika kami membandingkan kode promosi, yang terletak di bidang input dan di bilah alamat, kami melihat bahwa kode tersebut benar-benar cocok.

gambar

Apa yang bisa kita lakukan?


Sudah biasa untuk mencoba berubah. Jika kode promosi dibandingkan dengan nilai dalam database - dengan probabilitas tinggi kita akan mendapatkan kesalahan. Tetapi ketika mengubah input - tidak ada permintaan ke server dan ternyata input diperiksa hanya ketika Anda mengklik tombol registrasi.

Saya pikir di sini Anda sudah dapat melakukan sesuatu yang lebih menarik: ubah kode promosi kami langsung di bilah alamat dan lihat apa yang terjadi. Jika mereka tidak memiliki kode promosi khusus untuk Habr yang saya tebak segera, serta seratus set karakter yang berbeda , kami pasti dapat mengubah nilai-nilai bidang input menggunakan tautan alamat.

gambar

Langkah selanjutnya adalah menonton kode HTML. RMB pada bidang input -> Lihat kode item.

gambar

Di sini Anda dapat langsung melihat bahwa kami mengubah nilai bidang input. Mari kita coba keluar dan tambahkan misalnya tautan. Untuk melakukan ini, kita hanya perlu mengubah tautan dan kita dapat mengubah konten halaman:

gambar

Hasil: kami baru saja menemukan kerentanan xss di situs penyedia hosting.

Jadi apa selanjutnya?


Saya pikir itu layak untuk lebih dalam. Tautannya entah bagaimana dangkal dan tidak menarik. Kami ingin menceritakan semua ini kepada pemilik layanan dan, idealnya, mendapatkan hadiah (perusahaan, ngomong-ngomong, tidak memiliki bug bug, yang berarti bahwa semua ini tidak dibayar, tetapi kemudian saya masih tidak tahu tentang itu). Mari kita coba menempatkan blok, menstabilkannya dan menyisipkan gambar. Apa yang dibutuhkan untuk ini? semuanya sama - ubah url.

Saya pikir menggambarkan html dan css tidak layak, jadi saya taruh di sini apa yang terjadi. Habr memblokir sebagian tag, membuang yang lain - Saya tidak bisa memasukkan kode tautan di sini.

gambar

Saya akan memposting tautan di sini. Saya tidak tahu apakah dia bekerja saat ini, tetapi ketika dia memposting pos dia bekerja. Siapa yang butuh itu - menarik keluar tautan dan mem-parsing.

Remunerasi


Jangan berpikir bahwa upCloud sepenuhnya menolak untuk membayar. Sebagai gantinya, mereka menawarkan layanan mereka secara gratis. Tetapi saya menolak jenis pembayaran ini, karena saya tidak tertarik menyewa server sekarang.

Bagaimana kerentanan ini dapat dieksploitasi?


Semuanya sederhana di sini: Anda bisa mulai dengan mengumpulkan data dari semua pengguna baru, dan diakhiri dengan situs phishing dan menggunakan hosting orang lain sebagai milik Anda. Anda dapat mengganti semua tautan di halaman dengan milik Anda atau mengganti formulir dengan pengguna. Cukup mengirim mereka sebagai rujukan. Dan tentu saja, Anda dapat mengganti permintaan ke server dari formulir sehingga tidak memeriksa kode promosi (saat mendaftar, kode promosi diperiksa, dan respons dikembalikan ke klien dengan kesalahan, tetapi ini semua diselesaikan dengan mengaktifkan zhs).

Apa yang lupa dilakukan oleh para pengembang:


Sederhana - validasi input pengguna. SQL-Inj tidak bekerja di sana - layanan hang di WordPress, dan itu, pada gilirannya, memproses jalur masuk.

Karena itu, kita dapat:

  1. Periksa kode promo dengan pangkalan saat merender halaman

    Itu lambat dan tidak dibenarkan. Tidak ada beban tambahan pada database, dan tidak ada gunanya jika masih diperiksa saat pendaftaran.
  2. Drive kode promosi melalui musim reguler

    / ^ [A-Z0-9] + $ / - cukup untuk memvalidasi nilai dan melindungi terhadap kerentanan. Dan itu bekerja lebih cepat daripada query database, dan efeknya tidak lebih buruk - XSS dihapus.

Kesimpulan


Pemilik layanan diberitahu 48 jam + 2 hari sebelumnya bahwa saya sedang bernegosiasi melalui email dan LinkedIn dengan mereka yang setidaknya terkait dengan pengembangan. Semua percakapan datang ke: "Tolong beritahu kami bagaimana Anda melakukannya, tapi tentu saja kami tidak akan membayar untuk kerentanan." Saya juga akan menambahkan bahwa dengan cara yang sama situs menerima skrip-js pihak ketiga: baik melalui sumber pihak ketiga dan dengan penulisan kode langsung, namun, dalam kasus kedua, Google Chrome secara otomatis mendeteksi xss dan membuat halaman kesalahan alih-alih halaman layanan.

Saya harap setiap programmer akan memvalidasi semua data input dan tidak akan melupakan querystring. Dan saya juga yakin bahwa artikel itu akan membantu seseorang memperhatikan di muka + memperbaiki masalah ini di rumah.

Terima kasih banyak atas perhatiannya.

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


All Articles