===============
Pinterest Bug Bounty #1 - Persistent contact_name Vulnerability
References (Source):
====================
http://www.vulnerability-lab.
Release Date:
=============
2015-06-30
Vulnerability Laboratory ID (VL-ID):
==============================
1431
Common Vulnerability Scoring System:
==============================
3.3
Product & Service Introduction:
==============================
Pinterest is a web and mobile application company that offers a visual discovery, collection, sharing, and storage tool.
Users create and share the collections of visual bookmarks (boards). Boards are created through a user selecting an item,
page, website, etc. and pinning it to an existing or newly created board. Users save and share pins from multiple resources
onto boards based on a plethora of criteria, e.g. similar characteristics, a theme, birthday parties, planning a vacation,
writing a book, interior decorating, holidays. Boards can develop projects, organize events, or save pictures and data together.
The site was founded by Ben Silbermann, Paul Sciarra and Evan Sharp. It is managed by Cold Brew Labs and funded by a small group
of entrepreneurs and investors.
(Copy of the Homepage: http://en.wikipedia.org/wiki/
Abstract Advisory Information:
==============================
The Vulnerability Laboratory Research Team discovered an application-side mail encoding and validation vulnerability in the official Pinterest online service web-application.
Vulnerability Disclosure Timeline:
==============================
2015-01-30: Researcher Notification & Coordination (Benjamin Kunz Mejri)
2015-01-31: Vendor Notification (Pinterest Bug Bounty Program)
2015-02-06: Vendor Response/Feedback (Pinterest Bug Bounty Program)
2015-02-18: Vendor Fix/Patch Notification (Pinterest - Developer Team)
2015-06-30: Public Disclosure (Vulnerability Laboratory)
Discovery Status:
=================
Published
Affected Product(s):
====================
Product: Pinterest - Online Service Web Application 2015 Q1
Exploitation Technique:
=======================
Remote
Severity Level:
===============
Medium
Technical Details & Description:
==============================
A persistent mail encoding web vulnerability has been discovered in the official Pinterest Web-Application (API).
The application-side issue allows remote attackers to compromise emails by injection of own malicious persistent context.
The application-side validation and encoding vulnerability is located in the `contact_name` value of the User Profile >
Kontaktperson input field. Remote attackers are able to inject on registration user emails or random mails with script code
in the Kontaktperson input field (contact_name) of the user profile. Remote attackers can inject the code on registration and
local attackers can use Kontoeinstellungen module. After the inject of malicious script code the service stores the account
in the database management system. The service captures with the wrong encoding the user input and sends it in the pinterest
tip to the saved or changed email. The execution of the injected script code occurs next to the introduction word context `Hallo`.
The attack vector of the issue is located on the application-side of the online service and the request method to inject is POST.
The security risk of the persistent mail encoding web vulnerability is estimated as medium with a cvss (common vulnerability scoring system)
count of 3.3. Exploitation of the persistent vulnerability requires a low privilege pinterest account
with low user interaction. Successful exploitation of the vulnerability results in session hijacking, persistent phishing attacks, persistent
redirect to external source and persistent manipulation of affected or connected module context.
Request Method(s):
[+] POST
Vulnerable Module(s):
[+] User Profile
Vulnerable Input(s):
[+] Kontaktperson
Vulnerable Function(s):
[+] contact_name
Affected Module(s):
[+] Pinterest Tips - Mail (community@pinterest.com &community@email.pinterest.com)
Proof of Concept (PoC):
=======================
The application-side mail encoding web vulnerability can be exploited by local attackers and remote attackers with medium or high user interaction.
For security demonstration or to reproduce the security vulnerability follow the provided information and steps below to continue.
Manual steps to reproduce the security vulnerability ...
1. Open the pinterest website and register to the pinterest community web-application account
2. Include the following string to the name input fields <script-code>@<script-code>.
Note: Use Username: admin@evolution-sec.com Password: bugcrowd23
3. Save the settings to add the new account to the pinterest database
Note: Now, you need to wait even if the account is not confirmed the pinterest tips will arrive
4. The script code execution occurs in the pinterest tip mail next to the Hallo introduction word context
Note: The issue can be exploited by local and remote accounts. Remote attackers are able register with random mails without verification to
send the pinterest service pin tips with malicious context.
5. Successful reproduce of the security vulnerability!
PoC: Pin-Tipp: So erstellst du geheime Pinnwände (community@pinterest.com &community@email.pinterest.com)
</a>
<table class="full-width-module-
style="background:#FFFFFF;
border-bottom-right-radius:
border-bottom:1px solid #e3e3e3;border-left:1px solid #e3e3e3;border-right:1px solid #e3e3e3;;overflow:hidden;">
<tr>
<td align="center" style="padding:0px;">
<table class="module education" width="600" border="0" cellpadding="0" cellspacing="0"
style="background:#FFFFFF;
<tr>
<td class="spacer mobile-h34" colspan="1" height="34" style="font-size:34px;line-
</tr>
<tr>
<td class="education-text" align="left" style="padding:3px 50px 3px 50px;font-family:helvetica neue,helvetica,sans-serif;
Hallo [PERSISTENT SCRIPT CODE EXECUTION!]>"<iframe src=http://www.evolution-sec.
</td>
</tr>
<tr>
<td class="education-text" align="left" style="font-family:helvetica neue,helvetica,sans-serif;
Pinnwände sind wie Ordner, in denen du deine Pins sammelst. Du kannst Pinnwände für alles Mögliche anlegen: z. B. Rezepte zum Ausprobieren, Reiseziele oder Deko- und Renovierungsideen.
Ruf einfach dein Profil auf und klick oder tipp auf "Pinnwand erstellen".
</td>
</tr>
<tr>
<td align="left" class="education-text" style="padding:20px 50px 0 50px">
<a href="http://email.pinterest.
2FFYTxDgfqadeCY9TG3Rl20tQylxrO
2BgwSPDeOFVY-
2FyOeZVZU0B3J18S9olUomWSFsUdp9
2F3IuQM5v2rwhfz1D94jfZbo6ckbK2
<table height="40" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="38" style="background-color:#
<a href="http://email.pinterest.
2FFYTxDgfqadeCY9TG3Rl20tQylxrO
2Fdom8pkHGnEw8g0284vFsntf4-
2F62Kr-2FPJlQUIlQIoj-
2BYDJ6M2P-
font-size:16px;color:#ffffff;
Und so geht's
</a>
</td>
</tr>
</table>
--- PoC Session Logs [POST] (Inject) ---
10:19:10.573[496ms][total 496ms] Status: 200[OK]
POST https://www.pinterest.com/
Request Header:
Host[www.pinterest.com]
User-Agent[Mozilla/5.0 (Windows NT 6.3; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0]
Accept[application/json, text/javascript, */*; q=0.01]
Accept-Language[de,en-US;q=0.
Accept-Encoding[gzip, deflate]
Content-Type[application/x-
X-Pinterest-AppState[active]
X-CSRFToken[
X-NEW-APP[1]
X-APP-VERSION[6ea2d7a]
X-Requested-With[
Referer[https://www.pinterest.
Content-Length[2101]
Cookie[csrftoken=
Connection[keep-alive]
Pragma[no-cache]
Cache-Control[no-cache]
POST-Daten:
source_url[%2Fsettings%2F]
data[%7B%22options%22%3A%7B%
module_path[App()%
Response Header:
Accept-Ranges[bytes]
Cache-Control[no-cache, no-store, must-revalidate, max-age=0]
Content-Encoding[gzip]
Content-Type[application/json; charset=utf-8]
Expires[Thu, 01 Jan 1970 00:00:00 GMT]
Pinterest-Breed[CORGI]
Pinterest-Generated-By[ngapp2-
Pinterest-Version[6ea2d7a]
Pragma[no-cache]
Server[nginx]
Vary[User-Agent, Accept-Encoding]
x-content-type-options[
X-Frame-Options[SAMEORIGIN]
X-Pinterest-RID[935234333009]
X-Varnish[3395416925]
X-XSS-Protection[1; mode=block]
Content-Length[798]
Date[Fri, 30 Jan 2015 09:19:21 GMT]
Connection[keep-alive]
-
updating profile
10:19:10.574[444ms][total 444ms] Status: 200[OK]
POST https://www.pinterest.com/
Request Header:
Host[www.pinterest.com]
User-Agent[Mozilla/5.0 (Windows NT 6.3; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0]
Accept[application/json, text/javascript, */*; q=0.01]
Accept-Language[de,en-US;q=0.
Accept-Encoding[gzip, deflate]
Content-Type[application/x-
X-Pinterest-AppState[active]
X-CSRFToken[
X-NEW-APP[1]
X-APP-VERSION[6ea2d7a]
X-Requested-With[
Referer[https://www.pinterest.
Content-Length[341]
Cookie[csrftoken=
Connection[keep-alive]
Pragma[no-cache]
Cache-Control[no-cache]
POST-Daten:
source_url[%2Fsettings%2F]
data[%7B%22options%22%3A%7B%
module_path[App()%
Response Header:
Accept-Ranges[bytes]
Cache-Control[no-cache, no-store, must-revalidate, max-age=0]
Content-Encoding[gzip]
Content-Type[application/json; charset=utf-8]
Expires[Thu, 01 Jan 1970 00:00:00 GMT]
Pinterest-Breed[CORGI]
Pinterest-Generated-By[ngapp2-
Pinterest-Version[6ea2d7a]
Pragma[no-cache]
Server[nginx]
Vary[User-Agent, Accept-Encoding]
x-content-type-options[
X-Frame-Options[SAMEORIGIN]
X-Pinterest-RID[485779047467]
X-Varnish[2623749093]
X-XSS-Protection[1; mode=block]
Content-Length[470]
Date[Fri, 30 Jan 2015 09:19:21 GMT]
Connection[keep-alive]
-
successful updates profile
10:19:11.102[335ms][total 335ms] Status: 200[OK]
GET https://www.pinterest.com/
Request Header:
Host[www.pinterest.com]
User-Agent[Mozilla/5.0 (Windows NT 6.3; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0]
Accept[text/html,application/
Accept-Language[de,en-US;q=0.
Accept-Encoding[gzip, deflate]
Cookie[csrftoken=
Connection[keep-alive]
Response Header:
Cache-Control[no-cache, no-store, must-revalidate, max-age=0]
Content-Encoding[gzip]
content-security-policy[
Content-Type[text/html; charset=utf-8]
Expires[Thu, 01 Jan 1970 00:00:00 GMT]
Pinterest-Breed[CORGI]
Pinterest-Generated-By[ngapp2-
Pinterest-Version[6ea2d7a]
Pragma[no-cache]
Server[nginx]
Vary[User-Agent, Accept-Encoding]
x-content-type-options[
X-Frame-Options[SAMEORIGIN]
X-Pinterest-RID[927927480513]
x-ua-compatible[IE=edge]
X-Varnish[2146070572]
X-XSS-Protection[1; mode=block]
Date[Fri, 30 Jan 2015 09:19:22 GMT]
Transfer-Encoding[chunked]
Connection[keep-alive, Transfer-Encoding]
Reference(s):
http://pinterest.com
http://community.pinterest.com
http://email.pinterest.com
Solution - Fix & Patch:
=======================
The vulnerability can be patched by a secure aprse and encode of the vulnerable contact_name value in the user profile scheme.
Filter the input of the profile Kontaktperson input field and disallow special chars to prevent an script code execution in outgoing service emails.
Security Risk:
==============
The security risk of the application-side input validation web vulnerability in the contact_name value is estimated as medium. (CVSS 3.3)
Credits & Authors:
==================
Vulnerability Laboratory [Research Team] - Benjamin Kunz Mejri (bkm@evolution-sec.com) [www.vulnerability-lab.com]
Disclaimer & Information:
=========================
The information provided in this advisory is provided as it is without any warranty. Vulnerability Lab disclaims all warranties, either expressed
or implied, including the warranties of merchantability and capability for a particular purpose. Vulnerability-Lab or its suppliers are not liable
in any case of damage, including direct, indirect, incidental, consequential loss of business profits or special damages, even if Vulnerability-Lab
or its suppliers have been advised of the possibility of such damages. Some states do not allow the exclusion or limitation of liability for
consequential or incidental damages so the foregoing limitation may not apply. We do not approve or encourage anybody to break any vendor licenses,
policies, deface websites, hack into databases or trade with fraud/stolen material.
Domains: www.vulnerability-lab.com - www.vuln-lab.com -www.evolution-sec.com
Contact: admin@vulnerability-lab.com - research@vulnerability-lab.com - admin@evolution-sec.com
Section: magazine.vulnerability-db.com - vulnerability-lab.com/contact.
Social: twitter.com/#!/vuln_lab - facebook.com/VulnerabilityLab -youtube.com/user/
Feeds: vulnerability-lab.com/rss/rss.
Programs: vulnerability-lab.com/submit.
Any modified copy or reproduction, including partially usages, of this file requires authorization from Vulnerability Laboratory. Permission to
electronically redistribute this alert in its unmodified form is granted. All other rights, including the use of other media, are reserved by
Vulnerability-Lab Research Team or its suppliers. All pictures, texts, advisories, source code, videos and other information on this website
is trademark of vulnerability-lab team & the specific authors or managers. To record, list (feed), modify, use or edit our material contact
(admin@vulnerability-lab.com or research@vulnerability-lab.com
Copyright © 2015 | Vulnerability Laboratory - [Evolution Security GmbH]™
Komentarų nėra:
Rašyti komentarą