Perhitungan Pizzeria: Papa Jones, yang tidak peduli dengan keamanan

gambar

Gambar untuk menarik perhatian diambil di sini.

Restoran pizza Papa Jones terbuka di banyak negara, mesin situs hampir di semua tempat berbeda. Namun, mesin, yang dikembangkan di suatu tempat di Rusia, juga digunakan di situs-situs untuk Polandia, Kyrgyzstan dan Belarus. Kami akan mempertimbangkannya.

Anda dapat melihat mesin itu sendiri di situs seluler Rusia , misalnya. Mengapa mobile? Karena desktop bahkan tidak memiliki formulir pendaftaran, walaupun ini dijelaskan oleh fakta bahwa pendaftaran otomatis ketika memesan. Saya pernah memutuskan untuk memeriksa bagaimana keadaannya dengan kerentanan di sana.

Karena memilih aplikasi adalah cara termudah, saya mengambilnya. Yang mengejutkan saya, saya menemukan bahwa aplikasi tersebut hanyalah pembungkus aneh untuk situs tersebut, meskipun server dapat dengan jelas membedakan juga dari siapa permintaan tersebut berasal selama permintaan. Ternyata mungkin untuk menguji dengan kesuksesan yang sama baik aplikasi dan versi seluler. Satu-satunya perbedaan adalah bahwa platform - mobSite ditransmisikan untuk situs seluler, dan aplikasi menginformasikan sistem dan versi.

Saya langsung meraih kesuksesan, karena saya mulai dengan pemulihan kata sandi. Saya sarankan lihat bagaimana ini terjadi.

Pertama, Anda perlu mendapatkan kode itu sendiri dalam SMS. Kami akan meminta tautan dengan JSON di badan:

POST https://www.papajohns.ru/api/auth/recovery/requestCode { "username": "+79", "transport": "sms", "lang": "ru", "version": "1.0.34", "platform": "Android" } 

Server merespons:

 { "status": true } 

Aneh, ada sedikit data. Setidaknya pengidentifikasi atau sesi, tetapi lihat lebih jauh.

Kode empat digit datang ke SMS (hanya angka). Kami tidak akan mengirimnya, karena mengubah kata sandi akan memblokir poin selama dua minggu, tetapi saya punya rencana untuk mereka. Mari mencoba mengirim secara acak:

 POST https://www.papajohns.ru/api/auth/recovery/updatePassword { "code": "1234", "password": "123456qwe", "transport": "sms", "version": "1.0.34", "platform": "Android" } 

Saya sangat terkesan. Ternyata ketika Anda meminta SMS, nomor telepon + kode ditulis ke database dalam SMS, dan ketika Anda meminta pemulihan dengan kode, server memeriksa kode dalam database dan, jika kode ditemukan, setel kata sandi yang diterima ke database.

Situasi semakin memburuk karena tidak ada batasan pada enumerasi kode. Secara empiris, saya mengetahui bahwa dengan mencoba dalam 10 menit skrip dijamin untuk menetapkan kata sandi. Dan jika Anda meminta pemulihan untuk semua 10.000 kode dari 0000 hingga 9999?

Pada 12 Mei, saya melaporkan semua detail langsung ke pengembang situs (well, setidaknya dia memperkenalkan dirinya kepada mereka). Pada 19 Juni, saya menjadi tertarik pada bagaimana keadaan dengan menutup kerentanan. Naskah mengirim sekitar tiga ratus permintaan dan berdiri. Setelah memeriksa status pengembang, saya mengetahui bahwa server sekarang memblokir oleh IP jika menerima 5 permintaan yang salah. Hari ini saya kembali memeriksa apakah logikanya telah berubah, dan saya siap melaporkan: itu belum berubah. Server juga acuh tak acuh sekarang: Saya mengirim 3.000 permintaan tanpa terlalu banyak kesulitan, jadi 10.000, saya percaya, akan pergi tanpa masalah.

Bahaya pengungkapan semua alamat yang disimpan hanya dengan adanya nomor ponsel tetap signifikan. Kartu bank dihapus ketika kata sandi diatur ulang. Saya mendapat 1000 poin dan pizza. Pizzanya enak, tapi saya tidak akan menyimpan alamatnya di sana.

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


All Articles