linux/SSH/ssh_reverse_shell.adoc
2025-06-01 11:34:30 +02:00

2.9 KiB
Raw Blame History

Shell inversa con SSH

Indice Generale

1. Scenario

Un host target esegue il servizio SSH sul proprio indirizzo IP non raggiungibile da Internet. Lo stesso host può però stabilire connessioni SSH verso Internet (es. via NAT).

2. Reverse-Shell

Una reverse-shell consente di aprire una shell sullhost target con una connessione via Internet da un determinato host bridge, eventualmente anche il proprio PC, una volta che dal target sia stabilito un tunnel SSH allhost bridge. Lo scopo del tunnel è di aprire una porta remota sullhost bridge che ruoti il traffico inviato a quella porta verso il servizio SSH del target.

Schema per lattivazione del tunnel SSH per lapertura della porta remota
ssh -NR IP-remoto:porta-remota:IP-locale:porta-locale bridge-host

L'IP-remoto e la porta-remota si riferiscono al bridge-host; se IP-remoto è localhost può essere omesso in quanto è il valore predefinito.

L'IP-locale e la porta-locale, nel caso di reverse-shell, specificano il riferimento al servizio SSH del target-host; pertanto i valori standard sono localhost e 22.

Esempio: Reverse-shell da PC verso il server my-server.domain.it
# NOTA-1: il servizio SSH su my-server.domain.it (bridge) è attivo sulla porta 110.
# NOTA-2: il servizio SSH sul PC (target) è attivo sulla porta 22.
[local-user@minis ~]$ ssh -NR 7022:127.0.0.1:110 -p 110 remote-user@my-server.domain.it
Accesso alla reverse-shell dellhost my-server.domain.it (bridge)
# Connessione a my-server.domain.it dalla propria postazione (PC)
[local-user@localhost ~]$ ssh -p 110 remote-user@my-server.domain.it

# Connessione al PC (non raggiungibile direttamente via Internet) da my-server.domain.it
[remote-user@my-server ~]$ ssh -p 7022 local-user@localhost

Per accedere direttamente dal PC alla reverse-shell, il valore di IP-remoto devessere lindirizzo o il nome dellhost bridge visibile da Internet e devessere disponibile il flusso entrante sulla porta remota 7022. Se questo condizioni sono soddisfatte, la reverse-shell devessere attivata con il comando seguente.

Reverse-shell su Internet
[local-user@localhost ~]$ ssh -NR my-server.domain.it:7022:127.0.0.1:110 -p 110 remote-user@my-server.domain.it
Accesso diretto via Internet
[local-user@localhost ~]$ ssh -p 7022 remote-user@my-server.domain.it

Celestino Amoroso
celestino . amoroso @ gmail . com

88d204d546890e5d89073fb1cec29fe9