Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - AlbertoBSD

#221
Cita de: @?0!,5^34 en  5 Enero 2020, 07:47 AM
Es lo mismo creo yo. Solo que en js son 32 bits y en php 32 bytes.
En js divide entre 4 y obtiene 8 bits(1byte) y entonces le aplica xor. En PHP tu ya tienes el byte y le aplicas xor. Creo que es lo mismo porque en ambos bucles se aplica internamente el Xor bit a bit y ambas aplican xor de un byte con el siguiente.

Si ya despues de dormir algo, estoy seguro que si siempre y cuando se cumpla lo que dince MinusFour

Cita de: MinusFour en  5 Enero 2020, 15:55 PM
Siempre y cuando las dos fuentes y los operadores sean del mismo tamaño y no excedan el tamaño máximo del operador deberían ser lo mismo.

El operador xor no necesita información de otros bits alrededor.

Un poco de contexto, las variables del javascript que se están evaluando se supone que es el resultado de un hash sha256 de la librería CryptoJS

Pero esta libreria tiene una forma algo rara o simple de manjar los datos. Segun lei devuelve un objeto con un array de words y la variable sigBytes

CryptoJS.SHA256(str),It return this
{ words:
[ 1165750581,
1028330380,
-459297786,
-947376156,
-1078028390,
-767246913,
1573962699,
-482922654 ],
sigBytes: 32 }


Cito:

CitarThe hash you get back isn't a string yet. It's a WordArray object. When you use a WordArray object in a string context, it's automatically converted to a hex string.
var hash = CryptoJS.SHA256("Message");

https://cryptojs.gitbook.io/docs/#the-hashing-output

var hash = CryptoJS.SHA256("Message");

typeof hash
> "object";

hash
> "2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91";


Voy a depurar un poco ya que estoy reverseando el login de un Modem 4G y utiliza mucha "Seguridad a través de la oscuridad" cosas asi feas como:

Código (javascript) [Seleccionar]
psd = base64encode(SHA256(name + base64encode(SHA256($('#password').val())) + g_requestVerificationToken[0]));

Código (javascript) [Seleccionar]
var authMsg = firstNonce + "," + finalNonce + "," + finalNonce;

Voy a depurar por que en alguno de los pasos intermedios no me esta dando el mismo resultado y no llego al mismo token producido por el javascript.

Muchas gracias por sus respuesta.

Saludos!
#222
He estado algo estancado con la siguiente duda.

El operador ^ es un XOR, un código de javascript lo aplica asi.

Código (javascript) [Seleccionar]
for (var i = 0; i < ckey.sigBytes/4; i += 1) {
ckey.words[i] = ckey.words[i] ^ csig.words[i]
}


Donde words son números enteros signed de 32 bits, sigBytes son vale 32,  La api de javascript lo maneja de esa forma, en PHP yo tengo el binstring de 32 bytes (raw de un hash sha256) ¿si yo realizo el XOR a los bytes individuales uno a uno llego al mismo resultado?

Ejemplo.
Código (php) [Seleccionar]
while($i < 32) {
$ckey[$i] = $ckey[$i] ^ $csig[$i];
$i++;
}


Creo que la pregunta es algo boba, pero a esta altura del dia ya no tengo cabeza para  responderme yo mismo.

Saludos!



Solucionado

Si es lo mismo, todo depende que las variables evaluadas sean del mismo tamaño. Como comenta MinusFour.

Saludos!
#223
A no ser que tengas algún servicio contratado que hago eso, o que tu proveedor de servicios de celular lo ofrezca. La respuesta es NO SE PUEDE.

Saludos!
#224
Voy a echarle un ojo a tu repositorio

Cita de: @?0!,5^34 en  3 Enero 2020, 21:29 PM
Cual es el AB?

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

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!



#225
Creas un proyecto nuevo y subes tu codigo, asi de facil.

Saludos!
#226
Desarrollo Web / Re: Contraseñas
3 Enero 2020, 18:08 PM
Cita de: MinusFour en  3 Enero 2020, 16:16 PM


;-) :laugh: ;-) jajajajajaja.

Luego por que hay tanto passwork lakeado.

Podrias indicarnos que servicio es  :rolleyes:
#227
Cita de: MinusFour en  3 Enero 2020, 16:40 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).

Cita de: MinusFour en  3 Enero 2020, 16:40 PM
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

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!
#228
Cita de: @?0!,5^34 en  3 Enero 2020, 07:51 AM
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.

Cita de: @?0!,5^34 en  3 Enero 2020, 07:51 AM
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

Cita de: @?0!,5^34 en  3 Enero 2020, 07:51 AM
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.


Cita de: #!drvy 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.

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
#229
Desarrollo Web / Depuración (In)Segura
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 (php) [Seleccionar]
<?php
if(isset($_GET["debug"]) {
$valor $_GET["debug"];
$key file_get_contents("s3cr3ct_dir/"."key.dat");
if(strncmp($valor,totp($key),6) == 0) {
ini_set('display_errors'1);
ini_set('display_startup_errors'1);
error_reporting(E_ALL);
header("debug: enabled");
}
else {
header("debug: invalid totp");
}
}
?>


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!
#230
tcp.port == 7000

Aplica para origen o destino, puerto 7000 tcp, realmente no tiene mucho pierde.

Saludos!