
Saat ini, semakin banyak perusahaan mulai menggunakan
GraphQL . Ini adalah teknologi yang relatif baru (lebih tepatnya, ini adalah bahasa query), yang dirancang untuk memecahkan masalah
REST yang ada.
Jika Anda tidak terbiasa dengan
GraphQL , saya sarankan memulai dengan sumber daya:
Pada artikel ini saya ingin membagikan salah satu alat untuk menemukan kerentanan di GraphQL API. Jika Anda mencari kerentanan di API GraphQL, maka Anda mungkin mengalami masalah seperti itu:
- Alih-alih dokumentasi, Anda memiliki JSON besar yang tidak dapat dibaca (skema GraphQL).
- Aplikasi web hanya menggunakan sebagian dari GraphQL API, sehingga Anda tidak melihat semua data dan titik akhir.
Penolong yang baik dalam menyelesaikan masalah ini adalah
GraphQL Voyager , yang menjadikan skema GraphQL. Visualisasi sangat memudahkan pemahaman tentang API GraphQL dan membantu menemukan kerentanan lebih cepat.
Mengapa menggunakan GraphQL Voyager?
Sebelum mencari kerentanan, kami ingin memahami data apa yang dapat diperoleh dan operasi apa yang dapat dilakukan menggunakan GraphQL API. Sebagai aturan, tidak akan ada halaman dokumentasi, karena GraphQL berisi dokumentasi di dalamnya. Anda bisa mendapatkan dokumentasi menggunakan permintaan khusus yang mengembalikan skema GraphQL yang berisi semua informasi publik tentang API GraphQL (lebih lanjut tentang cara melakukan ini).
Paling sering, skema adalah JSON yang sangat besar, dan sangat sulit untuk memahami API hanya dengan membacanya. Hal lain adalah representasi visual dari JSON yang sama:
JSON vs IMAGEBagaimana cara menggunakan GraphQL Voyager?
Pertama-tama, Anda perlu menemukan URL tempat GraphQL API berada. Ada beberapa cara untuk melakukan ini:
- Lihat permintaan dari klien (browser, aplikasi seluler).
- Iterate di atas URL standar untuk GraphQL. Misalnya: / graphql, / api / graphql, ... (lebih banyak URL dapat ditemukan di sini https://medium.com/@localh0t/discovering-graphql-endpoints-and-sqli-vulnerabilities-5d39f26cea2e ).
- Temukan penyebutan dalam dokumentasi ( https://developer.github.com/v4/ ) atau berita ( https://medium.com/paypal-engineering/graphql-a-success-story-for-paypal-checkout-3482f724fb53 ).
Setelah Anda menemukan URL untuk GraphQL API, Anda dapat melanjutkan menggunakan GraphQL Voyager. Ini sangat sederhana. Misalnya, Anda dapat memvisualisasikan
SWAPI GraphQL dalam tiga langkah:
Langkah 1. Salin kueri introspeksi (kueri yang mengembalikan skema):
- Pergi ke https://apis.guru/graphql-voyager/ .
- Klik "Skema Kustom".
- Klik “Salin Pertanyaan Introspeksi”.
Langkah 2. Jalankan permintaan introspeksi:
- Pergi ke https://graphql.imtqy.com/swapi-graphql .
- Masukkan kueri introspeksi ke dalam kueri (sisi kiri halaman).
- Kirim permintaan.
Langkah 3. Salin diagram yang dihasilkan (sisi kanan halaman) dan tempel ke Voyager.
Catatan : langkah-langkah spesifik dapat bervariasi dari satu API ke yang lain, seperti Kueri dalam GraphQL dapat diimplementasikan dengan berbagai cara.
Setelah itu, Anda akan memiliki antarmuka intuitif yang berisi: grafik dengan objek, bidangnya dan hubungan antar objek.
Sekarang jauh lebih jelasJangan khawatir jika Anda memiliki skema besar. GraphQL API dapat memiliki banyak fungsi, serta API REST, oleh karena itu, meskipun presentasi yang mudah digunakan, masih akan membutuhkan waktu untuk mempelajari semua detail.
Kesimpulan
GraphQL Voyager adalah alat yang sangat diperlukan saat menguji GraphQL API. Dengannya, Anda dapat melihat gambar lengkap dan memahami cara menggunakan GraphQL API.
Anda dapat membuat Voyager lebih baik jika Anda menambahkan kemampuan untuk membandingkan dua skema. Idenya adalah untuk melacak perubahan dalam GraphQL dan memvisualisasikannya ketika perubahan terjadi. Ini akan membantu mempelajari dengan cepat tentang fungsionalitas baru atau tentang memodifikasi fungsionalitas lama.
Saya membuat
tiket di GitHub untuk fitur ini . Anda dapat membantu dalam pengembangan, misalnya, dengan cara berikut:
- (versi mudah) Pilih fitur. Dengan demikian, prioritas pengembangannya akan dinaikkan.
- (versi keras) Tulis kodenya sendiri, karena GraphQL Voyager memiliki kode sumber terbuka .