
[ Home | Liste | F.A.Q. |
Risorse | Cerca... ]
Archivio: Luglio 2003 ml@sikurezza.org Soggetto: Re: Angel Bypass Mittente: twiz Data: 26 Jul 2003 17:11:38 -0000
On Thur, 24 Jul 2003 03:28:02 Dark-Angel wrote :
> Ciao a tutti,
> guardando il codice di angel ho trovato un problemino:
> if (strcmp(pathname, "/dev/kmem") == 0)
> Basta creare un link simbolico a /dev/kmem per far fallire questo check
> e cosi darci pieno accesso. Stesso discorso per /dev/mem.
Una possibile soluzione potrebbe essere quella di confrontare, invece del
nome, l' inode del file. Questo si trova nel campo i_ino della struct
inode. Ecco un esempio di come accedere all'inode :
struct nameidata *nd;
mm_segment_t oldfs = get_fs();
nd = (struct nameidata *)kmalloc(sizeof(struct nameidata), GFP_KERNEL);
set_fs(KERNEL_DS);
user_path_walk("/dev/kmem", nd);
set_fs(oldfs);
printk("<1> Inode : %d\n", nd->dentry->d_inode->i_ino);
set_fs(KERNEL_DS);
user_path_walk("/root/bla", nd);
set_fs(oldfs);
printk("<1> Inode : %d\n", nd->dentry->d_inode->i_ino);
kfree(nd);
Dove "bla" e' un link simbolico a /dev/kmem.
La struct inode e' altrettanto raggiungibile da una struct file,
attraverso file->f_dentry->d_inode->i_ino, quindi ogni possibile
"approccio" di apertura/check del file che si scelga di usare e'
"supportato" :)
> Qui http://darkangel.antifork.org/codes/userspace/Daemon.tgz
> potete trovare un codice dimostrativo che sfrutta questo problema per
> disattivare angel tramite kmem.
Complimenti Dark-Angel :)
Ciaps
twiz
--------------------------------------------------------------
Perla Enrico - twiz
emails : twiz@xxxxxxxx - twiz@xxxxxxxxxxxx - twi@xxxxxxxxx
- We must believe in something to find if we've grown -
--------------------------------------------------------------
________________________________________________________
http://www.sikurezza.org - Italian Security Mailing List
[ Home | Liste | F.A.Q. |
Risorse | Cerca... ]
www.sikurezza.org - Italian Security Mailing List
(c) 1999-2005