PII Leakage on bijakmemilih.id

Jovan
4 min readFeb 2, 2024

--

Beberapa hari ini gw banyak ngeliat web app bijakmemilih.id berkeliaran di timeline sosmed. Dan kebetulan lagi gabut & coba discover web app itu. So far web app nya sangat menarik, dan interaktif.

  • Recon

Ada beberapa fitur yang menarik & menggunakan 3rd party. bijakmemilih.id memilih menggunakan formaloo buat melakukan survey ke user, dan yang paling menarik adalah mereka memakai formaloo tersebut untuk pendaftaran volunteer.
https://www.bijakmemilih.id/about/join-team#form

Dan beberapa link form formaloo lainnya, yang digunakan untuk survey ke user.

  • Quick Security Research Formaloo

Sekarang kita bahas untuk function dasar pada Formaloo yang ada pada bijakmemilih.id

1. Slug

Example : https://bijak-memilih.formaloo.me/tmzjq
Setelah submit form itu, kita bakal dapet request & response seperti ini :

Maka dapat di ambil kesimpulan penggunaan slug adalah seperti ini :

POST /v3.0/form-display/slug/$SLUG/submit

2. Subdomain

Example : https://bijak-memilih.formaloo.me/tmzjq
Dari request & response yang sama, ada “subdomain” dengan value “bijak-memilih”.

Maka penggunaannya akan menjadi seperti ini :

https://$subdomain.formaloo.me/$address

3. Address

Example : https://bijak-memilih.formaloo.me/tmzjq
Dari request & response yang sama, ada “address” dengan value “tmzjq”.
Maka penggunaannya akan menjadi seperti ini :

https://$subdomain.formaloo.me/$address

4. live_dashboard_address

Example : https://bijak-memilih.formaloo.me/tmzjq
Dari request & response yang sama, ada “live_dashboard_address” dengan value “900E3VhgGG15T5S”.
Untung function ini sedikit berbeda dengan function yang lain, karena dia harus melakukan GET request ke api lain.

Penggunaannya akan menjadi seperti ini :

GET /v3.0/live-dashboards/$live_dashboard_address/ HTTP/2
Host: api.formaloo.net

Example :

GET /v3.0/live-dashboards/900E3VhgGG15T5S/ HTTP/2
Host: api.formaloo.net

Response 404, menunjukkan bahwa live address tersebut tidak bisa diakses public / memang tidak ada. Untuk detailnya akan dijelaskan di point 5 (live_dashboard_config).

5. live_dashboard_config

Example 1 : https://bijak-memilih.formaloo.me/tmzjq
Dari request & response yang sama, ada “live_dashboard_config” dengan value yang kosong. Ini menandakan tidak ada nya config yang di setting pada live dashboard.

Example 2 : https://bijak-memilih.formaloo.me/yayf9

Ini merupakan example yang menarik, karena tidak berbentuk form seperti yang lain. Namun dia berbentuk widget yang berisi form untuk survey feedback user.
Yang menjadi pembeda disini adalah live_dashboard_config di example ke-2 ini sudah di set menjadi seperti berikut :

“live_dashboard_config”:{“public_embed_form”:false,”public_field_stats”:true,”public_submit_count”:true,”public_over_time_stats”:false}

Dilihat dari config tersebut, bahwa user public hanya bisa melihat count & statnya, tanpa bisa mengakses formnya.

Bagaimana cara akses dashboardnya ?
Check live_dashboard_address seperti point no 4.

Setelah dapat “live_dashboard_address”, GET request seperti berikut

GET /v3.0/live-dashboards/$live_dashboard_address/ HTTP/2
Host: api.formaloo.net

Maka akan mendapatkan stat berformat json

Masih ada cara lain buat view statnya, jika memang males baca json nya.
Kita bisa liat statnya dengan cara seperti ini :

GET /$live_dashboard_address HTTP/2
Host: live.formaloo.net

Pada contoh kali ini kita menggunakan live_dashboard_address dengan value “L9kQ72rRIWN14SW”

GET /L9kQ72rRIWN14SW HTTP/2
Host: live.formaloo.net

Maka akan tampil stat seperti berikut :

6. spreadsheet_id & spreadsheet_url

Example 1 : https://bijak-memilih.formaloo.me/tmzjq
Dari request & response yang sama, ada “spreadsheet_id” & “spreadsheet_url” dengan value “null”.
Ini menandakan bahwa form tersebut tidak di integrasikan dengan spreadsheet.

Example 2 : https://bijak-memilih.formaloo.me/jljq2
Example kali ini menarik, karena spreadsheet_id & spreadsheet_url mengandung value url & id spreadsheet yang digunakan.

  • How I discover PII Leakage on bijakmemilih.id ?

Setelah melihat beberapa penggunaan formaloo di bijakmemilih.id, saya sangat tertarik dengan form Bijak Memilih Volunteer (https://bijak-memilih.formaloo.me/jljq2). Ada beberapa kolom yang berisikan sensitive information, seperti E-mail & CV.

Seperti yang saya notice di point 6, form Bijak Memilih Volunteer terintegrasi dengan spreadsheet.

Dan setelah saya discover, spreadsheet tersebut dapat diakses & di edit oleh public. Maka semua data pendaftar volunteer tersebut tersimpan di spreadsheet, ini menyebabkan PII Leakage.

  • Cheatsheet Security Check on Formaloo

Check beberapa function yang sensitive seperti berikut :

  1. live_dashboard_address
  2. owner_custom_domain
  3. forward_submit_emails_to
  4. spreadsheet_id & spreadsheet_url
  • Timeline Report

Reported Bug — Jan 24, 2024, 4:52 AM (GMT +4)
Acknowledged & Fix Bug — Jan 26, 2024, 4:28 PM (GMT +4)

  • Credit :
  1. Noyu

--

--