Esiste un elenco di file SUID sicuri / normali / previsti?

0

Gli eseguibili SUID Exploitable sono un vettore di escalation di privilegi di base. Ma solo facendo una ricerca per tutti questi file si ottengono un sacco di risultati su qualsiasi sistema Linux, la maggior parte o tutti si presume che siano sicuri.

In che modo, oltre alla lunga esperienza con i sistemi Linux, è possibile eseguire la scansione dell'elenco restituito da find / -perm -u=s -type f 2>/dev/null per l'ago potenziale in un pagliaio? Esiste un elenco di eseguibili SUID noti / sicuri / previsti che è possibile confrontare? O uno script che fa questo per te?

    
posta Yaakov Saxon 16.11.2018 - 16:15
fonte

1 risposta

2

Is there a list of known/safe/expected SUID executables that one could compare against?

Non proprio, soprattutto perché tutte le moderne distribuzioni Linux sono basate su pacchetti. Non esiste un singolo set di file standard monolitici, poiché le installazioni variano in base ai pacchetti installati. Detto questo, i pacchetti forniscono anche elenchi di file inclusi, rendendo più semplice controllare se un binario SUID sia legittimamente installato o meno.

Or a script that does this for you?

Ci sono due semplici modi per avvicinarsi a questo: puoi verificare singoli file sul loro pacchetto, oppure puoi scaricare un elenco di file SUID da tutti i pacchetti.

Per esempio, diciamo che stai guardando / usr / bin e sei preoccupato per l'eseguibile SUID di chfn. Su una distribuzione basata su RPM, è possibile verificare il file sul pacchetto:

# rpm -Vf /usr/bin/chfn; echo $?
0
#

(Il codice di uscita 0 indica che non sono state rilevate discrepanze, il file è come previsto in base ai parametri del pacchetto. Puoi vedere un elenco di verifica che RPM Verify funzioni .)

Su una distribuzione basata su Debian (come Ubuntu, Mint, ...) avrai a che fare con i pacchetti deb, che hanno un approccio meno centralizzato degli RPM. Lo stesso effetto generale può essere ottenuto dopo l'installazione di apt-file e debsums:

# apt-file search /usr/bin/chfn
passwd: /usr/bin/chfn
# debsums passwd | grep /usr/bin/chfn
/usr/bin/chfn                                           OK
#

Potresti scrivere uno strumento per enumerare gli elenchi dei pacchetti per trovare i file SUID, per verificarli e per confrontare il tuo elenco con un elenco di ciò che è effettivamente presente nel file system tramite find . (Si noti che con RPM, almeno, è possibile verificare tutti i file in tutti i pacchetti con solo rpm -Va , ma troverete che è un po 'loquace e più di un semplice file SUID).

Ad esempio, è possibile eseguire il loop su tutti i pacchetti installati ( rpm -qa ) e, per ogni pacchetto, elencare i file SUID e SGID:

# rpm -qlv util-linux-ng-2.17.2-12.28.el6_9.2.x86_64 | awk '$1 ~ /s/ {print $0}'
-rwsr-xr-x    1 root    root                    77560 Dec  5  2017 /bin/mount
-rwsr-xr-x    1 root    root                    53480 Dec  5  2017 /bin/umount
-rws--x--x    1 root    root                    20184 Dec  5  2017 /usr/bin/chfn
-rws--x--x    1 root    root                    20056 Dec  5  2017 /usr/bin/chsh
-rwxr-sr-x    1 root    tty                     12016 Dec  5  2017 /usr/bin/write
#

e usalo per costruire la tua lista di file SUID attesi.

    
risposta data 16.11.2018 - 18:13
fonte

Leggi altre domande sui tag