elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Depuración (In)Segura
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Depuración (In)Segura  (Leído 2,827 veces)
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Depuración (In)Segura
« en: 3 Enero 2020, 06:56 am »

Los que ya tengan algo de tiempo programando en PHP, sabrán que la mayoría de los servidores tipo hosting están configurados para que el Server no tire los mensajes de error hacia el navegador. Esto complica un poco el tema a la hora de realizar un poco de depuración en un sitio en producción. Lo ideal seria tener un equipo para depurar el código fuera del entorno de producción, depurar y volver a subir el codigo ya corregido, esto es el deber ser cuando trabajas sobre el sitio de alguien mas.

Sin embargo en mi caso y para mi pagina personal, me da mucha flojera estar haciendo las cosas como debería de ser, lo cual he implementado un forma de depuración un tanto protegida. NOTA sigue siendo inseguro, pero dado que lo password basados en el tiempo de UNIX que duran 30 segundos son algo difíciles de adivinar y poco probable que alcances a forcebrutear las 999999 posibilidades en los 30 segundos que dura el password, confio el que el metodo es mas o menos seguro para lo que necesito.

La idea es básicamente la siguiente, incluir un archivo en el index que busque si existe la variable debug y si existe válida si el valor es igual generado mediante la función TOTP (Función que publique en este mismo subforo ) Si estas condiciones se cumplen habilita que se muestren los errores que arroje el PHP

Código
  1. <?php
  2. if(isset($_GET["debug"]) {
  3. $valor = $_GET["debug"];
  4. $key = file_get_contents("s3cr3ct_dir/"."key.dat");
  5. if(strncmp($valor,totp($key),6) == 0) {
  6. ini_set('display_errors', 1);
  7. ini_set('display_startup_errors', 1);
  8. header("debug: enabled");
  9. }
  10. else {
  11. header("debug: invalid totp");
  12. }
  13. }
  14. ?>

Consideraciones
  • No, no tengo un directorio "s3cr3ct_dir/"
  • El archivo key.dat se genero mas o menos asi dd if=/dev/urandom of=key.dat bs=1K count=1
  • Se tiene que configurar alguna aplicación authenticator (Obvio)
  • Se puede intentar forcebrutear el valor actual del Totp (999999) posibilidades  en 30 segundos
  • Se puede intentar forcebrutear el valor actual del KEY 2^8192 posibilidades en Toda una eternidad
  • Actualmente están los headers activos así que pueden intentarlo, tengo un /dummy que no hace nada, pero los headers se mostrarían
  • Si se desactivan los headers no hay manera de saber si X sitio implementa una técnica similar
  • Se puede cambiar el nombre de la variable
  • Tiene que existir un error en la pagina para que sirva de algo

🏴

Saludos!


« Última modificación: 3 Enero 2020, 07:03 am por AlbertoBSD » En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
Re: Depuración (In)Segura
« Respuesta #1 en: 3 Enero 2020, 07:51 am »

999.999 peticiones se hacen con un solo equipo en 30 segundos con multihilo.
Imagínate si van por ahí explotando XSS para que todos los visitantes te prueben una.
Métele un panel de loggin a tu sitio y si no tienen permiso para ver lo que hay en /desarrollo le haces echo de cualquier otra cosa. Le metes un formulario de adorno para que se entretenga si no tiene permisos. xD


En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Depuración (In)Segura
« Respuesta #2 en: 3 Enero 2020, 14:53 pm »

Te abres un SSH con el servidor de Producción, usas tail -n0 sobre el log de errores de PHP y vas depurando cuanto quieras. Con esto solo añades código que añade esfuerzo a la depuración que hay que hacer.

Saludos
« Última modificación: 3 Enero 2020, 15:52 pm por #!drvy » En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Depuración (In)Segura
« Respuesta #3 en: 3 Enero 2020, 16:07 pm »

999.999 peticiones se hacen con un solo equipo en 30 segundos con multihilo.

Si lo se, voy a hacer un post hablando de como atacar una implementacion de este tipo mediante algo de estadistica.

Imagínate si van por ahí explotando XSS para que todos los visitantes te prueben una.
Naaa, los XSS se deben de utilizar para algo mejor, mejor has que me manden sus cookies xD

Métele un panel de loggin a tu sitio y si no tienen permiso para ver lo que hay en /desarrollo le haces echo de cualquier otra cosa. Le metes un formulario de adorno para que se entretenga si no tiene permisos. xD

Jajaja si es por trolear podria empezar a mandar codigos de errores de bases de dados o de php entre los comentarios.


Te abres un SSH con el servidor de Producción, usas tail -n0 sobre el log de errores de PHP y vas depurando cuanto quieras. Con esto solo añades código que añade esfuerzo a la depuración que hay que hacer.

Si, esa manera es el deber ser, la forma segura claro, sin embargo, esta es otra aproximación. por si no tienes el ssh a la mano.

Saludos
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Depuración (In)Segura
« Respuesta #4 en: 3 Enero 2020, 16:40 pm »

999.999 peticiones se hacen con un solo equipo en 30 segundos con multihilo.

Es un servidor compartido, primero truena el servidor antes que le hagas 999,999 hits.

Hay servicios de papelería para errores por si te interesa, por ejemplo papertrail:

https://www.papertrail.com/
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Depuración (In)Segura
« Respuesta #5 en: 3 Enero 2020, 17:13 pm »

Hay servicios de papelería para errores por si te interesa, por ejemplo papertrail:

https://www.papertrail.com/

Voy a echarle un ojo, acabo de ver su pagina y se ve bien, aunque si da algo de desconfianza que un tercero pueda ver tus logs, me imagino que a de estar cifrado hasta cierto punto (I want to believe).

Es un servidor compartido, primero truena el servidor antes que le hagas 999,999 hits.

Acabo de realizar unas pruebas mediante AB y no, no se completa el millón de hits en 30 segundos.

El /dummy que no devuelve contenido mas que los headers, arrojo estos resultados con las Concurrencies; 1, 8 (Numero de Cores), 30 y 100

Código:
Concurrency Level:      1
Time taken for tests:   30.000 seconds
Complete requests:      3113
Failed requests:        0
Total transferred:      1021064 bytes
HTML transferred:       0 bytes
Requests per second:    103.77 [#/sec] (mean)
Time per request:       9.637 [ms] (mean)
Time per request:       9.637 [ms] (mean, across all concurrent requests)
Transfer rate:          33.24 [Kbytes/sec] received



Concurrency Level:      8
Time taken for tests:   30.001 seconds
Complete requests:      13335
Failed requests:        0
Total transferred:      4373880 bytes
HTML transferred:       0 bytes
Requests per second:    444.49 [#/sec] (mean)
Time per request:       17.998 [ms] (mean)
Time per request:       2.250 [ms] (mean, across all concurrent requests)
Transfer rate:          142.37 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        7   15   4.4     14      52
Processing:     1    3   2.7      2      27
Waiting:        0    3   2.6      2      26
Total:          9   18   5.3     17      56



Concurrency Level:      30
Time taken for tests:   30.005 seconds
Complete requests:      14244
Failed requests:        0
Total transferred:      4672360 bytes
HTML transferred:       0 bytes
Requests per second:    474.72 [#/sec] (mean)
Time per request:       63.196 [ms] (mean)
Time per request:       2.107 [ms] (mean, across all concurrent requests)
Transfer rate:          152.07 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        9   46  18.6     43     147
Processing:     1   17  12.1     13     105
Waiting:        0   14  12.0      9     103
Total:         13   63  22.3     60     203



Concurrency Level:      100
Time taken for tests:   30.006 seconds
Complete requests:      14160
Failed requests:        0
Total transferred:      4646120 bytes
HTML transferred:       0 bytes
Requests per second:    471.91 [#/sec] (mean)
Time per request:       211.904 [ms] (mean)
Time per request:       2.119 [ms] (mean, across all concurrent requests)
Transfer rate:          151.21 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        9  152  38.2    151     366
Processing:     5   59  28.5     52     242
Waiting:        2   36  27.8     27     231
Total:         14  211  43.6    206     470

En el mejor de los casos arrojo sobre 14 mil hits, hay que tener en cuenta que la clave del TOTP solo funciona de los segundos 0 al 29 y del 30 al 59, entonces se tendría que empezar a forcebrutear en el segundo exacto.

Otra cosa que hay que mencionar la prueba fue realizada localmente, por lo cual los hilos del AB compartían procesador con los hilos del PHP-FPM, Si se hace desde un equipo externo podría incrementar el
numero de replies, sin embargo agregaria el tiempo de ida y vuelta, lo cual quedaría mas o menos igual en cuanto a replies.

Voy a intentar desde PHP con Curl multi hilo a ver que resultado me da.

Saludos!
En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
Re: Depuración (In)Segura
« Respuesta #6 en: 3 Enero 2020, 21:29 pm »

Cual es el AB?

Usa el DHunter 1000+ (Peticiones+Respuestas+GuardadoEnArray de la url completa) por segundo en un I7 sin OC con bruteforce. Igual puedes usar algún servicio en línea de computación para romperlo.
Sige el código un poco caos que aún estamos trabajando en él. Llama a las funciones directamente en local en vez de usar el front-end.
« Última modificación: 3 Enero 2020, 21:30 pm por @?0!,5^34 » En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Depuración (In)Segura
« Respuesta #7 en: 3 Enero 2020, 21:40 pm »

Voy a echarle un ojo a tu repositorio

Cual es el AB?

https://httpd.apache.org/docs/2.4/programs/ab.html

Código:
ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server. It is designed to give you an impression of how your current Apache installation performs. This especially shows you how many requests per second your Apache installation is capable of serving.

Según las pruebas que realice por logica el numero de Threads esta muy ligado al numero de cores. Si te fijas en mi caso no hay mucha diferencia entre 8 hilos, 30 o 100.

Si se puede mandar hasta 1000 o 10000 simultáneamente pero igual te quedaras esperando a que el server responda, y pues tambien depende del numero de cores que tiene el server.

En el peor de los casos se termina haciendo un DoS momentáneo en que que el server procesa o dropea los request.


Edito.

Ya he cambiado el nombre de la variable, ya no es debug.

Implemente un force brute con curl milti desde php, remotamente no supera las 4000 peticiones en el lapso de 30 segundos, pero localmente llega a alcanzar hasta 80 mil, si el token esta entre esos primeros 80 mil valores habilita el debug, por lo tanto no seria buena idea publicar el nombre de la variable que lo activa.

Adicional al hecho de realizarle fuerza bruta al TOTP, y lograr "por suerte" dar con el token en turno el session_start tira error por estar bloqueado el archivo de la cookie por alguno de los otros hilos.



Saludos!



« Última modificación: 3 Enero 2020, 23:32 pm por AlbertoBSD » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Depuracion VIsual Basic 6 y GEoMEdia
Programación Visual Basic
hannah 1 1,412 Último mensaje 27 Agosto 2008, 22:59 pm
por ssccaann43 ©
Depuración en Code Blocks - Duda
Programación C/C++
h0oke 6 7,256 Último mensaje 25 Mayo 2010, 03:39 am
por nicolas_cof
Duda con depuración remota (IDA)
Ingeniería Inversa
.:UND3R:. 0 1,737 Último mensaje 20 Septiembre 2013, 00:56 am
por .:UND3R:.
n-curses - depuración
GNU/Linux
joe2011 0 1,522 Último mensaje 3 Marzo 2014, 21:33 pm
por joe2011
Depuracion...
Java
BlackZeroX 1 1,706 Último mensaje 19 Abril 2016, 04:06 am
por + 1 Oculto(s)
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines