[render.bitstrips.com] Stored XSS via an incorrect avatar property value
S
Snapchat
Submitted None
Actions:
Reported by
s_p_q_r
Vulnerability Details
Technical details and impact analysis
While modifying an avatar, an attacker has the opportunity to submit XSS payloads as its property values. The resulting png file will return a 500 error with the payload in the response body. The response has a **text/html** content type, which makes the XSS attack possible.
**PoC:**
1. Go to https://www.bitmoji.com/account/ and create a new account
2. Choose the avatar style and save it. The following POST request will be sent:
> POST /user/avatar?styles=1,4&app_id=13 HTTP/1.1
> Host: api.bitmoji.com
>
> avatar_id=%id%&char_data=%data%
3\. Modify the **data** value: set any **pd2** object property value (for example, **jaw**) to **<svg onload=alert(document.domain)>**:
```
{"colours":{},"pd2":{"cranium":"cranium_midstraightmale","forehead":"forehead_standard","hair_back":"hair_back_midstraightmale","hair_front":"hair_front_midstraightmale","hairbottom":"hairbottom_blank","detail_L2_L":"_blank","detail_L2_R":"_blank","jaw":"<svg onload=alert(document.domain)>","beard":"_blank","stachin":"_blank","stachout":"_blank"},"body":{},"style":1}
```
and submit the request again.
4\. Go to your account and click "Edit yor avatar". In your browser web console you will see a https://render.bitstrips.com/render/***/*.png link with a 500 error. Open this link.
The script will be executed.
A PoC link: https://render.bitstrips.com/render/6688424/173752531_2_s1-v1.png
I also recorded a video (see the attachment) of these steps, I hope it will help you reproduce the issue.
Report Details
Additional information and metadata
State
Closed
Substate
Resolved
Bounty
$400.00
Submitted
Weakness
Cross-site Scripting (XSS) - Generic