# // // # Cracca al Tesoro Genova 2012 Bersaglio due. Setuid, chi era costui? «

Cracca al Tesoro Genova 2012 Bersaglio due. Setuid, chi era costui?


Ancora un post sui bersagli di Cracca al Tesoro. Parliamo questa volta del bersaglio due, posizionato presso la reception della Fiera. L’access point con SSID “CATGE2012-2” era protetto da una WEP 64bit la cui chiave era “1111111111”.
Il primo server, con indirizzo 172.16.12.1/25, era un sistema linux con porte ssh e web aperte. La vulnerabilità inserita era exploitabile individuando l’utente “guest” con password “guest”.
Nella home dell’utente “guest” si trovava il file “indizio”.
Ma non era tutto qui…


Infatti, il file indizio, pur essendo listabile, non poteva venire aperto per via dei permessi non concessi all’utente guest.
Guardando bene, si notavano altri due file, “badcat” e “badcat.c”, presumibilmente un eseguibile ed il suo sorgente.

Purtroppo anche il sorgente aveva il setuid impostato. Esaminando l’eseguibile  si scopriva che il programma serviva banalmente a leggere un file con altri permessi, grazie al setuid impostato. Tentando di leggere il file indizio, però la risposta era picche. Miglior fortuna  si aveva tentando di aprire il file sorgente.  A questo punto, si poteva capire che per leggere il file indizio era sufficiente, ad esempio,  creare un link al file indizio e chiedere a badcat di aprirlo con “badcat link_file_indizio”.
L’indizio richiedeva come azione l’acquisto di un gadget, ma di questo (la storia della radio impermeabile) ne abbiamo già parlato in precedenza.
Due parole su setuid, prese a prestito dalla lista PLUTO-help, perché mi sembra davvero spiegato in modo esemplare!

 

PERCHE' IL SETUID E' PERICOLOSO (link al testo originale)

Il bit  setuid e` uno dei bit  che codificano i permessi  dei file che
sono 12. I 9 bassi li conoscono credo tutti e sono quelli che regolano
i permessi di lettura, scrittura ed esecuzione. Rimangono i 3 bit alti

Set UID
Set GID
Sticky

Linux usa sticky solo per le directory (vedi man chown).

Gli altri due  indicano al sistema che l'esecuzione  del programma non
deve  avvenire  con  l'uid  dell'utente  collegato ma  con  l'uid  del
proprietario del file.

L'uid  e` l'identita`  utilizzata, per  il sistema  c'e`  anche quella
reale, per  cui un  programma e` comunque  in grado di  conoscere l'id
dell'utente che lo usa se serve).

Scopo  dell'ambaradan  ?  Ci  sono  risorse che  non  devono  rimanere
liberamente  accessibili ma  che  l'utente deve  poter utilizzare,  ad
esempio, con determinati programmi. X e` uno di questi.

"WOW, quindi se io metto  setuid un certo programma posso usarlo anche
da utente peone..."

##     	##   ######    ##
##	##   ######    ##
####    ## ##  	   ##  ##
####	## ##	   ##  ##
##  ## 	## ##	   ##  ##
##  ##	## ##	   ##  ##
##    #### ##	   ##
##    #### ##  	   ##
##     	##   ######    ##
##	##   ######    ##

Il bit setuid non va usato se non quando e` veramente l'unica risorsa,
sopratutto se l'utente proprietario del file e` root.

1) Certe operazioni  sono lasciate solo  a root perche'  sono critiche
   per il  sistema ed il loro  uso deve avvenire in  modo "protetto da
   abusi".  

   Se si mette  setuid root un file, questa  protezione salta. Cio` e`
   male (E. Spengler).

   Ci  sono  vari meccanismi  (sudo,  o  file  di configurazione  come
   shutdown.allow descritto  in man  shutdown) per delegare  ad alcuni
   utenti  certe  operazioni  senza  peraltro  permettere  a  loro  di
   diventare root a tutti gli effetti.

2) Mettere setuid root un file che generalmente non lo e` puo` aprire
   falle di sicurezza.

   Ad esempio, e` poco probabile che tale file sia stato sottoposto ad
   auditing per l'uso di  tecniche di programmazione poco sicure (i.e.
   buffer  overflow).  C'e` gia`  abbastanza  da  tenere d'occhio  per
   quello che "istituzionalmente" gira con l'uid 0:0.

   Il programma potrebbe avere una shell escape: "Mi metto setuid less
   cosi` non ho  problemi di permessi. Ho tutti i  servizi di rete che
   girano come nobody, anche se  li sfondano...". Peccato che la prima
   cosa che si fa quando si  sfonda una macchina con utente diverso da
   root la  prima cosa  che si va  a vedere  sono i file  setuid root:
   "WOW", esclama l'intruso, "less  setuid!", fa less /etc/motd, preme
   !, scrive sh, preme return ed ha una shell di root.

   Non  parliamo  del  fatto che  se  un  utente  riesce ad  avere  la
   scrivibilita` di  un file  setuid allora ha  la porta  aperta verso
   l'account 0:0:

	     copia il file incriminato, tanto per avere un backup
	     e cancellare le prove.

	     cat /bin/sh > file_incriminato

	     esegue file incriminato

	     cat copia_backup > file_incriminato #via le prove

   Sembra  uno  scenario  stupido  ma  e`  gia`  successo  perche'  il
   sistemista era troppo facilone.

Oh, se fate questa prova sotto Linux:

    fate uno shell script che contenga il solo comando id

    diventate root e fate chmod 4755 file_di_prova

    tornate utenti

    richiamate il file

vi ritornera` i vostri dati di utente normale e non quelli di root.

Il perche' e`  banale. Chi ha scritto la bash sa  che gli shell script
setuid root sono estremamente pericolosi, e quindi per default bash va
a vedere chi siete veramente e ripristina la vostra identita`.

E' anche vero che puo` essere _realmente_ necessario avere uno shell
script setuid.

bash vi  chiede di "esserne consci"  e richiede il  parametro -p sulla
command line, parametro che sta a dire "sono perfettamente conscio che
potrebbe essere una cazzata, ma hai l'ordine di eseguirlo setuid".

Si puo`  fare, ma  e` meglio  non farlo. Si  puo` percuotere  i propri
geniali con un martellone, ma e` meglio non farlo.

	      E`   M E G L I O   N O N   F A R L O ! ! !
	      E`   M E G L I O   N O N   F A R L O ! ! !
	      E`   M E G L I O   N O N   F A R L O ! ! !
	      E`   M E G L I O   N O N   F A R L O ! ! !
	      E`   M E G L I O   N O N   F A R L O ! ! !
	      E`   M E G L I O   N O N   F A R L O ! ! !
	      E`   M E G L I O   N O N   F A R L O ! ! !

Illuninante, vero?
🙂

, , , , , , , , ,

I commenti sono chiusi.