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ú

Temas - WHK

#1
Hola, acá les dejo un artículo que hice sobre cómo ChatGPT expone conversaciones de otros usuarios:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


En este artículo se expone cómo ChatGPT expone información confidencial accediendo al espacio de la memoria cache manipulada por la misma IA, evadiendo controles de seguridad básicos que fueron entrenados en el mismo lenguaje.

Saludos.
#2
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Esto sucede principalmente debido a que SAP utiliza de manera nativa una versión vulnerable de Log4J, específicamente aquella que es vulnerable a la ejecución de código remoto debido al mal manejo del interpretador JDNI (CVE-2021-44228 o Log4Shell).

* CVE-2021-44228 de severidad crítica, con una puntuación CVSS3 de 10. Esta se debe a un fallo en las características de configuración JDNI, el cual no valida los parámetros de entrada de los mensajes o parámetros de los logs. Esto permitiría a un atacante acceder a permisos de configuración y control de los logs con el objetivo de realizar ejecución remota de código (RCE) en el sistema afectado.

* CVE-2022-24396 de severidad crítica, con una puntuación CVSS3 de 9.3. Esta vulnerabilidad se debe a un fallo en el componente de diagnóstico que permitiría a un atacante autenticado con mínimos privilegios realizar un escalamiento de privilegios u obtener información sensible.

* CVE-2022-26101 de severidad alta, con una puntuación CVSS3 de 8.2. Esta vulnerabilidad se debe a una falla en un componente desconocido el cual no valida los datos de entrada del usuario. Esto permitiría a un atacante enviar peticiones maliciosas con el objetivo de ejecutar código JavaScript (XSS).

No confundir que la vulnerabilidad Log4Shell (CVE-2021-44228) sea relativamente antigua, esto no quiere decir que algunos software aun hagan uso de el como es en el caso de SAP, en otras palabras, SAP cuenta con la vulnerabilidad reciente de que incluye este componente vulnerable.

Este riesgo es preocupante debido a que un atacante que logre acceder al servicio de SAP sin la necesidad de autenticarse podría ejecutar comandos dentro del servidor donde se encuentre esta solucón.

Pero, ¿esto quiere decir que si se encuentra dentro de una red local el riesgo disminuye?: la respuesta es si pero no lo suficiente. A lo largo de los años se han habido presedentes de ataques realizados por personal interno en diferentes compañías grandes y pequeñas en Chile y tampoco son casos aislados, este tipo de incidencias ocurren con mayor frecuencia de lo pensado.

Los desastres no curren sin más, son el resultado de una serie de sucedos que conllevan a una incidencia de proporciones mayores que pueden afectar no solamente a la contabilidad de una compañía sino también a posibles problemas legales y de pérdida de imagen corporativa.

Técnicamente hablando un atacante podría realizar una solicitud HTTP al servidor de SAP y enviar un paquete malicioso con código de ejecución, permitiendo al atacante, por ejemplo conectar a la base de datos y modificar información como credenciales de acceso o datos de contabilidad, también podría descargar software malicioso de tipo Troyano y tomar control del servidor o infectar la infraestructura con malware de tipo Ransomware.

Primero que nada esta vulnerabilidad ha sido solucionada hace muy poco, asi que la recomendación es muy clara, se debe actualizar el Software vulnerable lo antes posible para evitar una incidencia mayor.

La actualización de un Sistema no solamente cuenta con cambios a nivel de experiencia de usuario sino también de seguridad, por eso se recomienda mantener los sistemas y aplicaciones siempre actualizados.

Como segunda medida, como esta vulnerabilidad puede ser aprovechada de manera remota, se recomienda realizar un análisis de sistema o forense a la brevedad para determinar sin en la actualidad existió algún ataque que haya podido afectar a los datos confidenciales de los correos almacenados, si este fuese el caso se recomienda activar un procedimiento de seguridad para el cambio de credenciales de manera masiva de los sistemas de la compañía.

Fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#3
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Se publicó un problema de seguridad crítico en Mozilla Firefox 97.0.2 el cual permite la ejecución de código remoto, esto quiere decir que con tan solo visitar un sitio WEB malicioso, un atacante podría ejecutar comandos en el Sistema Operativo ya que esta vulnerabilidad también impacta en el mecanismo de seguridad de Sandboxing que protege al navegador frente a la ejecución de código.

Un usuario podría exponer todos sus datos de usuario tales como contraseñas, sesiones guardadas y datos de otras aplicaciones instaladas en el Sistema Operativo.

Mozilla ha categorizado dos vulnerabilidades asociadas con los siguientes nombres:

* CVE-2022-26485: Use-after-free in XSLT parameter processing
* CVE-2022-26486: Use-after-free in WebGPU IPC Framework

Esta vulnerabilidad aun se encuentra en entrega del puntaje CVSS, pero de todas maneras se ha confirmado la ejecución remota de código, por lo cual cabe esperar que su puntaje sea muy alto, muy cerca de 9.0 o 10.0.

Esta vulnerabilidad tiene dos impactos directos, uno se refiere a que es posible ejecutar comandos del lado del equipo del usuario y el otro es la posibilidad de escapar de la Sandbox de Mozilla Firefox, pero ¿a que se refiere?.

Ejecución de código: Use-after-free es un tipo de vulnerabilidad categorizado por la CWE que consiste en la reutilización de un puntero en memoria después de haber sido limpiada, este problema puede llevar a un atacante a inyectar bytes en memoria dentro del Sistema Operativo e indicar la ejecución de algún comando como por ejemplo el Bash del Sistema en Linux, Powershell en Windows y similares. Esto podría causar por ejemplo que un atacante indique al navegador WEB de Mozilla Firefox que descargue un ejecutable malicioso y lo ejecute sin previo aviso o consentimiento del usuario.

Evasión de la sandbox: Para evitar este tipo de problemas todo navegador WEB moderno cuenta con un mecanismo de protección de Sandboxing el cual consiste en la aislación (siolación) tanto de la memoria como del proceso, en otras palabras, cada pestaña se ejecuta en un Worker diferente, de esta manera una vulnerabilidad dentro de un proceso dificilmente podría escalar a ejecutar algo dentro del mismo Sistema Operativo, pero este mecanismo de seguridad también fue evadido. Hay que recordar que los mecanismos de Sandboxing son únicamente sistemas mitigantes que intentan evitar problemas de seguridad pero no corrigen los problemas de raiz, por lo cual es muy normal ver en distintas ocasiones como estas sandboxing son evadidas en distintos navegadores WEB.

La conclusión es que un atacante podría crear un sitio WEB malicioso o simplemente hackear alguno ya existene e ingresar y código que al ser visitado podría hacer que el usuario se infecte con un malware, por ejemplo, un Ransomware o Troyano, el cual permite al atacante tomar control y manipular el equipo de la víctima y hacer robo de información como contraseñas y datos de tarjetas bancarias.

Fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#4
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Se publicó un problema de seguridad crítico en Microsoft Exchange 2019 el cual permite la ejecución de código remoto, esto quiere decir que un atacante desde internet tiene la posibilidad de acceder a la información interna del servicio de correos, modificar o eliminar información, también podría ejecutar comandos sin autorización dentro del Sistema Operativo.

Desde Microsoft indican que ya existe una prueba de concepto que permite explotar esta vulnerabilidad, por lo cual pueden existir atacantes que ya lo estén aprovechando en servidores vulnerables.

El título de la vulnerabilidad indica que es posible la ejecución de código, pero ¿cómo es esto posible?: Realmente no es un problema de desbordamiento de memoria o un puntero mal gestionado, sino mas bien de elevación de privilegios debido a un problema en el control de la autorización de ciertas funcionalidades que permiten a un usuario sin privilegios tener un rol máximo permitiendo así realizar cambios sobre la consola de configuración de Microsoft Exchange y ejecutar comandos de manera directa sobre el Sistema Operativo que lo aloja.

Por lo cual ¿que podría hacer un atacante con esto?: Básicamente acceder a cualquier información alojada en el servidor ya que debemos recordar que Microsoft Exchange tiene la pésima práctica de seguridad de utilizar un usuario con privilegios elevados dentro del Sistema Operativo (NT AUTHORITYSYSTEM), en ves de ejecutarse con algún usuario restringido únicamente para Microsoft Exchange. Esto permite que un atacante no solo pueda acceder a los datos alojados sino también intentar acceder a otros servidores dentro de la misma red impactando así a la infraestructura de la compañía.

Debemos recordar también que en muchas ocaciones se envían contraseñas y documentos confidenciales por correo electrónico y todos estos datos pueden serse afectados, más aun cuando estas contraseñas son reutilizadas en otros sistemas, los cuales permitan a un atacante tomar control de toda la infraestructura de la compañía como por ejemplo, el Active Directory.


Recomendaciones a los usuarios

Primero que nada esta vulnerabilidad ha sido solucionada hace muy poco, asi que la recomendación es muy clara, se debe actualizar el Software vulnerable lo antes posible para evitar una incidencia mayor.

La actualización de un Sistema no solamente cuenta con cambios a nivel de experiencia de usuario sino también de seguridad, por eso se recomienda mantener los sistemas y aplicaciones siempre actualizados.

Como segunda medida, como esta vulnerabilidad puede ser aprovechada de manera remota, se recomienda realizar un análisis de sistema o forense a la brevedad para determinar sin en la actualidad existió algún ataque que haya podido afectar a los datos confidenciales de los correos almacenados, si este fuese el caso se recomienda activar un procedimiento de seguridad para el cambio de credenciales de manera masiva de los sistemas de la compañía.

Como última recomendación, se debe recordar que el correo electrónico no es un canal 100% seguro, por lo cual se debe evitar el envío de credenciales o información crítica a traves de este medio, pero en caso contrario se recomienda eliminar estos correos al momento de recibirlos y realizar un limpiado periódico de los posibles mensajes que pudiesen ser perjudiciales en una filtración de datos.

Fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#5
Otros lenguajes / Consultoría - Cómo solucionar un XSS
Noviembre 01, 2021, 05:29:54 PM
Bienvenidos Underc0ders!. Para dedicarse a la seguridad de manera profesional no solamente basta con saber encontrar un XSS sino también es necesario saber porque se produce y como darle una solución, ya que en muchas ocaciones nos toca hablar con el dueño de la aplicación WEB y nos pide consejos y estos no pueden estar fundados en la ignorancia. Por eso quiero comentarles como aconsejar a alguien sobre como solucionar un XSS y como darle su importancia.

Estructura

Cuando encuentras un XSS es importante saber que el dueño de la aplicación no es el experto en seguridad sino tu mismo, por lo cual el dueño puede que entienda menos de la mitad de lo que le digas, por eso es importante ser muy claro y estructurado al momento de detallar un XSS:

  • Resumen del hallazgo
  • Cómo replicar el problema (PoC) (ojo, no te están pidiendo mostrar un alert, sino replicar un impacto real)
  • Porqué es un riesgo de seguridad (impacto)
  • Cuales son las mejores recomendciones

Generalmente en el resumen del hallazgo debes incluir el tipo de vulnerabilidad, normalmente categorizado junto al nivel de riesgo y esto lo puedes obtener a traves de diferentes estándares tales como la CVSS ( No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ) y la CWE ( No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ) ya que será tu palabra contra el dueño de la aplicación, por lo cual siempre es buena idea apegarse a los estándares.

Recomendaciones

Acá va el problema: el cliente tiene un sitio WEB que cuenta con una vulnerabilidad de tipo XSS Reflejado ( CWE 80 No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ) y el cliente necesita una recomendación. He escuchado a muchas personas recomendar lo siguiente de manera equivocada:

  • Impedir el ingreso de caracteres especiales en los campos
  • Filtrar los caracteres especiales evitando que en el input se ingresen etiquetas HTML
  • Crear una regla en el WAF para evitar los XSS

Pero, ¿Porqué están errados?: Para comenzar, impedir o filtrar el ingreso de caracteres especiales en los campos es una recomendación demasiado genérica y va a depender del tamaño y de la arquitectura de la aplicación. Como podemos observar, el CWE es 80 ( No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ) y no 79 ( No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ), hay una gran diferencia ya que el CWE-79 indica que es un problema de caracteres de entrada y el CWE-80 indica que es un problema de salida.

Cuando ingresas contenido HTML en un campo y este se refleja en el código fuente resolutante de la respuesta del sitio WEB (response) entonces tenemos un problema de datos de salida y no de entrada, pero ¿porqué no filtrar los caracteres en la entrada para evitar tener problemas en los datos de salida?: porque no todas las aplicaciones funcionan igual y esto dependerá de su arquitectura, por ejemplo: Supongamos que nuestro sistema tiene una versión WEB y una version movil, si filtro los caracteres especiales en la entrada de datos para convertirlos en entidades HTML para que se guarde en la base de datos entonces cuando la aplicación móvil vaya a solicitar estos datos vendrán con escapes HTML pero las aplicaciones móviles nativas no usan HTML asi que se verán caracteres extraños basura en el contenido. No todo lo que esté en una base de datos significa que se desplegará en una aplicación WEB o móvil o de escritorio, sea nativa o híbrida, por esto es muy importante tener en mente el siguiente concepto:

Ningún dato de entrada debe ser filtrado a menos que sea un filtro de datos por concepto de definición de capa de negocio y datos, o sea, si mi valor a ingresar debe ser siempre un número positivo entonces eso si se puede filtrar, si el nombre debe tener una longitud máxima entonces esto debe ser controlado y filtrado, pero si no hay nada que impida que alguien ingrese un caracter especial en una caja de descripción entonces para que filtrar, por lo contrario, un buen desarrollo debe poder funcionar de manera segura con cualquier tipo de caracter especial, por ejemplo, este foro permite caracteres especiales para el nombre de usuario o la caja del contenido del post y no quiere decir que se deban eliminar todos los caracteres especiales para hacerlo mas seguro.

Si eres un profesional y encontraste un buen XSS pero aconsejas filtrar los campos de entrada te puede hacer quedar como ignorante en el campo del desarrollo de la solución y puede que pierdan la confianza en ti y sin que te lo digan.

¿Porqué no es bueno recomendar que se solucione del lado del WAF creando reglas que impidan los XSS?: Porque un WAF es solamente un agente mitigante pero no un solucionador de problemas, puede que para alguien sea mas dificil llegar al XSS pero el agujero de seguridad con el riesgo aun van a seguir existiendo, los riesgos se reducen pero no se eliminan, por lo cual no se considera una solución sino una mitigación y esto es parte de dos planes de trabajo: La mitigación al corto plazo y la solución al mediano/largo plazo.

Entonces, ¿cual es la mejor recomendación?:

Crear un plan de mitigación al corto plazo sonde se mitigue a traves de diferentes agentes dependiendo los que tenga el dueño de la aplicación WEB (Web Application Firewall), por ejemplo, el WAF para mitigar los ataques WEB, un Firewall para evitar la llegada de paquetes maliciosos a la infraestructura, evitar pivoting y esas cosas.

Crear un plan de solución al mediano/largo plazo que incluya corrección de código fuente del lado del desarrollo y acá entra algo de conocimiento de Arquitectura aplicativa:

En el caso de ser una aplicatión WEB monolítica ( No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ) se debe recomendar crear un escapado de datos de salida en el punto vulnerable y ojo, existen varias maneras de hacerlo según sea el caso ya que va a depender en que lugar del código resultante se realiza la impresión de la variable vulnerable con el XSS, pero antes de explicar esto es necesario entender otra cosa: ¿Qué es una secuencia de escape de caracteres?.

Pues bien, digamos que tenemos un String entre comillas dobles así:

Código: php
"Palabra acá"


¿Que sucede si el valor de esta palabra contiene una comilla doble?

Código: php
"Palabra " acá"


Pues, lo que sucede es que se rompe la cadena de texto ya que las comillas dobles declaran el valor, todo lo que esté dentro es parte del texto, pero cuando le pones una comilla doble lo estás interrumpiendo indicando que se está cerrando la declaración, o sea, que la palabra ya ha terminado, entonces, que sucede con el texto restante, en este caso podrías hacer dos textos o inyectar algo entremedio, por ejemplo usando la frase: Palabra" + algo + "acá

Código: php
"Palabra" + algo + "acá"


Y bueno, se produce una inyección de código malicioso entre una declaración de tipo texto. Esto mismo sucede en muchos lugares, como verán, no estoy hablando de un lenguaje de programación en particular ya que cada lenguaje utiliza su propia sintaxis y su propia manera de escapar los caracteres.

Entonces, para evitar que suceda una inyección se creó algo universal llamado "Secuencia de escape de caracteres" los cuales se añaden al caracter especial para que este forme parte de la cadena de texto y no que lo rompa, por ejemplo, en javascript es el backslash "\", por ejemplo:

Código: php
"Palabra \" acá"


Esto le indica al motor interpretador de Javascript que el caracter que sigue después del backslash será parte del texto en ves de interpretarse como un quiebre del string. En batch el caracter de escape es el "^" y el "%%", en bash es el backslash, en SQL es el backslash, en Javascript es el backslash y en HTML es la Entidad HTML! ( No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ).

Asi que, en nuestro XSS pueden haber dos situaciones muy comunes, que el código esté imprimiendose dentro de una etiqueta Javascript o dentro del mismo HTML y en cambos casos se necesitarán usar diferentes tipos de secuencia de escape, por ejemplo:

Código: php
<script>var x = '$valor_escapado';</script>


Donde $valor_escapado será igual al texto de salida escapado, esto quiere decir que cada caracter especial podrá ser reemplazado por valores de escape unicode o hexadecimal (definido por el estandar de Javascript ES6), por ejemplo:

Código: php
"Palabra \x22 ac\xc3\xa1"


Pero, ¿con que función se escapa?: Eso dependerá del lenguaje de programación o del framework que estés utilizando, cada lenguaje o framework tiene distintas maneras de aplicar este filtrado y de ahi la importancia de entender de desarrollo de software, comprender lo que estás analizando, mas allá de ver un simple XSS.

Ahora vamos con el código HTML, su secuencia de escape está definido por el estandar mismo de la W3C: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta , por lo cual enocntramos las siguientes equivalencias:



Valor/Entidad que lo reemplaza
<&lt;
>&gt;
'&apos;
"&quot;

Entonces, si el problema estuviera en código HTML debería ser escapado de la siguiente manera:

Código: php
<input type="text" value="Palabra &quot; acá" />


Hay personas que aplican un filtro html para todo el código, pero esto no escapa contenido Javascript, por ejemplo, en javascrpt puedes inyectar código con un backslash, pero HTML no tiene un escape para backslash porque para HTML ese caracter no es peligroso pero para Javascript si, lo mismo sucede cuando intentas romper una secuencia con un salto de línea, por otro lado un tag html en javascript no le pasa nada pero a HTML si. Asi que, cada lenguaje en cada trozo de código debe llevar su propia secuencia de escape de caracteres o podrás terminar abriendo una vulnerabilidad donde antes no lo había.

Pero, en aplicaciones con separación de capas (no monolíoticas) hay que indicar que esto se debe hacer del lado del código que expone la información, o sea la capa de presentación ( No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ), y ojo, no se les vaya a ocurrir decirle a alguien que debe escapar absolutamente todo, ya que va a depender de muchas cosas, por ejemplo, un servicio REST que expone datos a traves de código Json tiene su propia secuencia de escape de caracteres y esto generalmente se maneja de manera automática dependiendo del lenguaje y framework de programación.

Asi que, ahora si estamos medianamente listos para dar una buena recomendación:

CitarA modo de solución al mediano/largo plazo se recomienda aplicar la secuencia de escape de caracteres utilizando el estandar de Entidades HTML declarado por W3C en capa de presentación, únicamente sobre el parámetro afectado.

Como verán, la recomendación es corta, pero va al grano y con todo el tecnicismo que necesita el dueño de la aplicación, es muy diferente a decir "hay que filtrar los datos de entrada" y ya.

A modo de conocimiento general, en algunas ocaciones, a demás de recomendar solucionar el XSS también se le recomienda sobre migrar de tecnología a una mas segura, por ejemplo, si el desarrollo WEB no utiliza un framework, sino que está hecho a mano con archivos php o jsp tirados en el servidor, entonces se le dice que al largo plazo va a ser mejor migrar a un framework de desarrollo mas seguro como Codeigniter, Laravel o Spring boot ya que estos frameworks manejan de manera automática los problemas de tipo inyección como los XSS o Inyección SQL debido a que nunca programas código a mano, sino que te apoyas en clases y templates, donde las consultas SQL ya no se realizan directamente sino que usas clases y el framework traduce esas clases a consultas SQL parametrizadas y ya no programas variables directamente sobre HTML sino que programas sobre un sistema de plantillas que traduce tu código a código escapado de manera automática como es el caso de Jinja para Django de Python, Thymeleaf para Spring Boot de Java y Razor para MVC de .NET.

Como ya habrán notado, esto no solo aplica para los XSS sino para cualquier tipo de vulnerabilidad de tipo inyección, esto incluye Inyecciones SQL e Inyección de Comandos, Inyección XML, Inyección LDAP y similares.

Cuando el dueño de una aplicación pregunta como solucionar un problema, por lo general no se lo pregunta a la persona de al lado, sino que se lo pregunta al que encontró el problema y estará esperando a que entiendas como ayudarlo pero si no sabes en que lenguaje está hecho o no tienes los fundamentos básicos de desarrollo entonces va a ser dificil dar una recomendación certera, incluso puede que estés dando una recomendación erronea y que en el futuro tengan problemas aun mas graves y les hagas perder el tiempo, me ha tocado ver esos casos y no es muy agradable decirle a una persona que lo que hizo a modo de corrección realmente no sirve y que va a tener que volver a programar sus soluciones.

Espero les pueda ayudar un poco a ampliar el vocabulario se seguridad informática. Saludos.
#6
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Hola, muy buenas noches a todos, les traigo un proyecto que acabo de finalizar, se trata de un módulo escrito puramente en c para Apache Server que permite interpretar plantillas para Jinja2.

Los que no sepan que es Jinja2, es un sistema de templates ampliamente utilizado en proyectos sobre Python como por ejemplo, Django y Flask. La gran ventaja es que ya no necesitas utilizar ningún framework o hacer deploy de ningún servicio de python para publicar tus plantillas, gracias a este módulo las plantillas se cargan y se interpretan en memoria a bajo nivel sin utilizar ningún proyecto en python.

El proyecto se encuentra en este lugar: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

El proyecto es una mezcla de módulo para apache junto a la utilización de la API para C de Python, por lo cual el performance podría llegar a ser mucho mejor que la de php. Una ves instalado puedes crear plantillas utilizando archivos con extensión .j2 y olvidarte de utilizar Wordpress u otros sistemas CMS de alto coste en hardware, por ejemplo, un sitio meramente informativo con un puñado de módulos de slides y editores pesados te puede costar mas de 2GB de memoria RAM y la alta disponibilidad disminuye considerablemente, por otro lado, crear un sitio WEB únicamente utilizando archivos HTML te dará problemas como por ejemplo la redundancia de código ya que tendrás que escribir la cabecera, el footer, los menús, en cada archivo y se pierde escalabilidad ya que hacer una pequeña modificación en el diseño podría significar tener que modificar muchos archivos, pero con el módulo de Jinja2 es el intermedio entre versatilidad y eficiencia ya que creas archivos estáticos y a la ves con comportamiento dinámico ya que puedes hacer includes o realizar una única plantilla para todos tus demás archivos escritos puramente en HTML.

Acá les dejo un repositorio de ejemplo de un sitio WEB que utiliza este módulo: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Su uso es totalmente libre, se aceptan sugerencias, la documentación aun no está 100% finalizada, aun debo documentar los módulos de python disponibles desde Jinja2, formato de extensiones, rutas de layouts, etc, pero si tienen alguna duda me la pueden ir haciendo en este mismo post. El módulo es 100% estable, probado, testeado y puesto en producción en alguno de mis servidores, comenzaré a migrar algunos sitios que tengo a puro html dinámico con este módulo.

Saludos.
#7
Desde hace mucho tiempo que he visto gente utilizando kali y anteriormente la gente tendía a usar backtrack.

Creo que Kali es una distribucion corporativa destinada a vender los productos de offensivesecurity, por ejemplo, en sus certificaciones te exijen utilizar kali, pero ¿realmente es tan necesario o tan bueno como dicen?

Quiero contar mi breve experiencia personal al respecto. Yo probé Backtrack desde sus inicios, era una distribución de GNU/Linux basada en Ubuntu bastante novedosa ya que incluía muchas herramientas de seguridad de todo tipo, debemos recordar que distribuciones de seguridad existen muchas, como por ejemplo gnu radio, wifislacks, etc (muchas de ellas recomendadas desde el sitio web de fydor, No tienes permitido ver los links. Registrarse o Entrar a mi cuenta), pero esta distribución en particular ya tenía muchas de las herramientas más conocidas en el mundo del hacking. Con el tiempo apareció su reemplazo llamado Kali que al final es un backtrack con otro nombre y otro fondo de escritorio destinado más que nada a hacer crecer la imagen de offensivesecurity y hacerlo tan rentable económicamente como fuese posible.

Yo personalmente si he utilizado kali, pero no de manera constante, hay personas que incluso prefieren instalarlo en sus notebooks, pero kali no fue diseñado para ser instalado, de hecho la recomendación oficial es utilizarlo desde un medio extraible como sistema booteable para hacer hacking cuando lo necesites, kali no es un sistema estable con el que puedas trabajar o hacer tareas cotidianas, kali fue diseñado para situaciones muy específicas.

Ahora, Kali viene con cientos de herramientas de hacking, desde algunas para redes, otros para intercepción de tráfico, monitoreo, frameworks de explotación, reconocimiento, etc, pero ¿realmente usas o necesitas todas las herramientas?, la respuesta es clara y es un rotundo "no" y esto no quiere decir que kali sea una mala distribución, Kali fue diseñado para que cuando necesites hackear algo no te haga falta nada y tengas todo en un pendrive, pero esto también causa que Kali no sea un sistema escalable donde puedas tener tus herramientas personalizadas ya que al no ser un sistema diseñado para ser utilizado de manera instalado no podrás mantener en persistencia tus herramientas o archivos, necesitarás otros discos donde si puedas escribir.

¿Eres siempre root?, Kali, al no ser diseñado para uso cotidiano no hace uso de usuarios sin privilegios que puedan asegurar el sistema, la instalación por defecto te fuerza a utilizar siempre el usuario root, una pésima práctica para cualquier sistema basado en Linux, de hecho kali se deshace de casi todos los sistemas de seguridad gestionados por el kernel para que ninguna herramienta tenga problemas de privilegios, pero al mismo tiempo kali se transforma en una bomba de tiempo siendo un sistema muy vulnerable, ya que tenemos que entender que Kali debe ser utilizado unicamente para situaciones muy específicas.

Entonces, ¿conviene usar kali?, en mi experiencia personal "no". Hay dos opciones, o usas tu sistema preferido en tu notebook o equipo de escritorio y enchufas kali por el usb y lo arrancas solo para hacer hacking o usas otra distribución de GNU/Linux que te permita tener exactamente las mismas herramientas pero a traves de un sistema totalmente estable y diseñado para el trabajo diario y uso cotidiano. En mi opinion personal creo que es mas conveniente contar con un sistema fijo el cual ya contenga únicamente las herramientas que necesitas, ya que no existe ninguna distribución de Gnu/Linux que no puedas tener las mismas herramientas que kali.

Vamos, el que usa Kali no es un usuario básico, por lo general son personas que por lo menos saben utilizar apt-get o yum. En mi situación personal uso Ubuntu (pero no es lo que recomiendo), tanto en mi desktop como en mi notebook, siempre utilizo una versión estable LTS con soporte de largo plazo y a demás, cuento con mis herramientas de desarrollo de software y pentesting, asi que si, tengo instalado wireshark, docker, msf, nmap, mitmdump, etc. Llevo muchos años dedicandome al pentesting y jamás he necesitado backtrack o kali, por ejemplo, cuando te llevan a una empresa a hacer una revisión o llegas a una red corporativa que has hackeado necesitarás una buena cantidad de configuraciones de red para protocolos de autenticación corporativos, generalmente estos conectores no los trae Kali a pesar de que venga con gnome y esté basado en ubuntu, en kali tendrás que configurar todo manualmente, en cambio en ubuntu puedo dejar que el sistema se encargue de toda la configuración y si necesito hacer uso de una vpn la instalo para gonme3 y ya.

Ahora, ¿que recomiendo?. Lo que yo recomiendo para pentesting son Arch, Manjaro, Fedora o Ubuntu (a demás de todas las distribuciones estables como suse o freebsd). A mi me gusta la comodidad, un buen diseño y todo el poder de Linux, asi que prefiero Ubuntu, Fedora también es una muy buena opción, un poco más incómodo que ubuntu pero más estable y con mejores paquetes de conectividad, recordemos que un pentetsing no solo requiere de nmap o herramientas de hacking, también requerirá herramientas de clientes como conectores oracle, ibm websphere, clientes para Switches con puertos seriales, etc, sino como te vas a conectar a esos sistemas y Fedora es el rey en ese tipo de aplicaciones. Pero para usuarios mas avanzados pueden optar por Arch, es mucho mas complicado de usar que ubuntu o fedora pero es mucho más flexible al momento de hacer hacking y la documentación es mucho mejor, pero tocará hacer muchas cosas de manera manual, pero de todas maneras sigue siendo un sistema muy estable de uso cotidiano que te apoyará para todo, no solo para hacer pentesting. Manjaro es un Arch pero más bonito y fácil de usar xD.

En resumen, no necesitas un tanque para cruzar la calle y menos aun si es uno que arroja humo negro y está hecho de lata, mejor usa una buena bicicleta con una buena suspensión y llantas profesionales y te va a servir igual o más eficiente que el tanque.

¿Que opinan al respecto?, yo he usado Kali porque en algunos lugares me pedían utilizarlo pero realmente no creo que su uso sea necesario o bueno, por lo contrario, para mi, esa distribución hace que el usuario aprenda malas prácticas.

Ya haré otro post dedicado a burpsuite ya que tampoco lo uso (pero lo he usado y se como funciona) y lo encuentro una herramienta totalmente innecesaria que muchos lo tienen como herramienta primordial siendo engañados por una compañía que solo se dedica a vender sus softwares, cuando en la práctica hay muchas alternativas. Muchas veces he enseñado a otros a hacer pentesting full web y movil sin burpsuite utilizando mitmproxy o scripts en javascript o python directamente y los resultados son mucho mejores. Algo similar a utilizar sqlmap o hacer las inyecciones SQL a mano, pero ya haré otro post con eso.

Saludos.
#8
Hola, como están todos!, acabo de crear un script bien simple para extraer información de los archivos APK, por ejemplo en que Framework está hecho o que sistemas de protección contiene. Con el tiempo agregaré más sistemas de protección a detectar.

Acá les va la URL del repositorio para su descarga: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta , está hecha en Python 3 y no necesita tener Java o SDK instalado, sólo necesita la ejecución del script en python nada más, todas las validaciones las realiza a nivel binario sin la necesidad de extraer nada en archivos sueltos.

Acá va un ejemplo de la salida del script:

Código: php
$ python3 apd.py test/pinning.apk 
~ APK Package Detector v0.1.1-b - [email protected] ~
+ Framework used: Native or unknown Framework.
+ Protection systems :
  - Appcelerator Assets Obfuscation   : No
  - OkHttp3 Certificate Pinning       : Yes
  - Root and Virtual Machine detector : Yes


El script nos ahorra tiempo al momento de realizar revisiones de seguridad a las aplicaciones móviles ya que muchas veces debemos descompilar para saber en que está hecho o nos encontramos con sorpresas si el APK no funciona en máquinas virtuales o no se puede interceptar el tráfico HTTPS.

El script no elimina los sistemas de protección, sólo avisa de lo que contiene para saber de que manera proceder a una revisión.

Saludos.
#9
Corte suprema de Chile avala la entrega de todos los dominios registrados .cl al que lo pida

Noviembre de 2019, en Chile, un abogado conocido como Jorge Enrique Delgado Gunckel solicitó de manera legal al registrante de dominios .cl un archivo Excel con todos los registros realziados desde el inicio de los tiempos junto a sus respectivas fechas de expiración.


¿Qué sucedió?

El problema principal en Chile es que los registros de dominio .cl se encuentran centralizados por una única entidad registradora que es No tienes permitido ver los links. Registrarse o Entrar a mi cuenta el cual tiene la gran mayoría de todos los dominios .cl registrados hasta el momento.

Un correo llegó de manera masiva a todos los clientes de dominios .cl indicando la situación:

CitarNotificamos que NIC Chile ha recibido una solicitud de información en el marco de la Ley de Acceso a la Información Pública (N° 20,285), presentada por el señor JORGE DELGADO, mediante la cual se nos pide entregar:
"Una lista de todos los nombres de dominio comprados a través del portal No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y actualmente en vigor. No necesito ningún dato privado, solo nombres de dominio en formato Excel, con su fecha de vencimiento"

De conformidad con la Ley, usted tiene DERECHO A OPONERSE de manera fundada a la entrega de la información, en caso que usted estime que se afecta su seguridad, privacidad, derechos económicos o comerciales u otra causa que deberá exponer.

A pesar de que es posible declinar la solicitud, es necesario argumentar muy bien el hecho de porqué no entregar dicha información por cada dominio registrado, a demás, el que no respondiera de manera directa a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta a traves del correo enviado se declararía que los dominios reclamanos pueden ser publicados en dicha lista.

El reclamo legal se puede observar en la siguiente dirección URL: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Este abogado ya ha estado involucrado en la solicitud y revocación de otros dominios .cl, quitando así la propiedad del que lo registró a favor de si mismo: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta a demás, también ha participado de otros procesos donde su misma información personal tales como dirección comercial y correo electrónico están publicados de manera totalmente abierta en documentos públicos como por ejemplo No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Otro gran problema es que No tienes permitido ver los links. Registrarse o Entrar a mi cuenta no tiene poder suficiente para rechazar dicha solicitud, desde la corte suprema se avaló la entrega de dicha información por lo que todos los dominios .cl quedarán expuestos no solo a la solicitud de este abogado sino también a todos los que en un futuro quieran solicitarlo quedando clara la vulnerabilidad de la privacidad de la información sobre dominios chilenos .cl hoy y en el futuro.


La oposición

Tal como se puede presentir utilizando el sentido común, solicitar todos los dominios registrados no es una situación normal o común y se puede prestar para la realización de fraudes, aparcamiento adelantado de dominios para su reventa, entre otras situaciones, afectando así el normal uso de internet y nombres dominios. Así lo dejó notar la ONG de Derechos digitales indicando los puntos claves legales sobre esta situación y el derecho a oponerse: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


¿Cuál es el estado actual de este caso?

Frente a la publicación en los medios sociales y la presión sobre esta situación, el día Viernes 29, abogado Jorge Enrique Delgado Gunckel ha declinado esta solicitud, reflejado en el siguiente comunicado por parte de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta :

CitarEn relación a la solicitud de acceso a la información presentada por el señor JORGE DELGADO por la entrega del listado de los dominios inscritos en .CL, informamos lo siguiente:

Con esta fecha hemos tomado conocimiento de la declaración de DESISTIMIENTO de dicha petición de acceso por parte del interesado.

Expresamos a nuestra comunidad de clientes y usuarios nuestro agradecimiento por la acogida que ha tenido la información que les hemos entregado para hacer ejercicio de su derecho legal a oponerse a la entrega de la información.

Hacemos presente que deberemos enviar otras comunicaciones similares frente a nuevas peticiones de acceso al listado de dominios que se han presentado, por lo que solicitamos anticipadamente que nos disculpen por las molestias que se pueda ocasionar con los mensajes que deberemos volver a enviar.

Consecuentemente, NIC Chile desea reiterar que hará uso de todos los medios legales a su alcance para evitar esta y cualquiera otra entrega masiva de datos de los dominios inscritos.

Está claro que Chile se ha salvado por hoy de esta solicitud, pero queda claro que existen otras solicitudes del mismo calibre.

En mi opinión personal como experto en seguridad de la información recomiendo que para servicios críticos y de bajo perfil no se haga el uso de dominios .cl debido a que este tipo de situaciones escapan de las manos del registrador No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y de la propia ICANN.


Fuentes:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#10
Hacking / [Herramienta] Escaneador de subdominios
Junio 23, 2019, 01:15:01 AM
Hola, como están todos, hoy he publicado una herramienta que había hecho hace ya un par de años, se trata de un escaneador de subdominios hecho en python3.

Acá va la URL: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Cualquier sugerencia es bienvenida :)

saludos.
#11
Seguridad web y en servidores / Mi WebShell
Febrero 10, 2018, 10:41:20 PM
WHK hShell

Hola, les comparto mi WebShell hecha en php: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

La había hecho hace muchos años pero comenzaré a publicar algunos de mis proyectos.

Algunas ventajas


  • El núcleo de todo el código está en el cliente y no en el servidor.
  • No deja rastros de la ejecución en el servidor ya que el código no se guarda.
  • No necesita actualizaciones del lado del servidor o intervenir el código en cada cambio.
  • El código es transportado y no almacenado previniendo la detección de los antivirus.
  • El transporte del código está ofuscado evadiendo la detección de los WAF.
  • El transporte de datos se realiza vía HTTP / POST previniendo dejar rastros en los logs de accesos del servidor WEB.
  • Utilización de payloads al azar en el transporte del código para la prevención de la detección de los WAF.
  • Soporta grandes transferencias de datos utilizando el transporte multipart/form-data sin almacenamiento del buffer en memoria por más de 1024 bytes del lado del cliente y del servidor.


¿Cómo se usa?

Igual que cualquier Shell WEB, subes el servidor.php al servidor y luego te conectas utilizando cliente.php desde el terminal así:
Código: php
php cliente.php



Comandos disponibles

Código: php
hShell:/> help
      Command             | Description
     ──────────────────────────────────────────────────────────────
      connect [url]       : Connect to Server WebShell script.
      help                : Show help of the client.
      cat                 : Show the content of remote file.
      tail [file path]    : Read the last lines of specific file.
      cd [directory]      : Navigate to specific remote directory.
      shell [command]     : Execute a simple command in remote server using the           current remote path. Detect automatic available method on the server. See the call-exec command. Alias of exec and system commands.
      force-shell [method] [command] : Force execute a simple command in remote server using an specific php method in current path. Alias of force-exec and force-system commands. Available methods: system, exec, shell_exec, passthru, popen, proc_open, explicit (using double quotes `).
      edit [editor command] [file path] : Edit remote file with specific local command edtor, example: edit vi /etc/shadow
      nano [file path]    : Edit remote file with nano editor on the local system.
      vi [file path]      : Edit remote file with vi editor on the local system.
      vim [file path]     : Edit remote file with vim editor on the local system.
      gedit [file path]   : Edit remote file with gedit editor on the local system.
      notepad [file path] : Edit remote file with notepad editor on the local system.
      sublime [file path] : Edit remote file with sublime text editor on the local system.
      uninstall           : Uninstall the current WebShell on the server.
      install [file path] : Install the WebShell on the specific remote parh.
      mysql [host] [port] [user] [password] : Start an interative MySQL shell connection on the remote server.
      mysqldump [host] [port] [user] [password] [local file] : Make a dump from remote database to local file .sql
      download [remote path] [local path] : Download a backup of file or directory from server to local path.
      upload [local path] [remote path] : Upload a local file or directory to remote directory (maintains the same permits)
      rm [path]           : Delete the specific file or directory path.
      mkdir [path]        : Make a directory on the server.
      phpinfo             : Show the full info of the php, libraries and enviroments of the server.
      id                  : Show the full info of the current user and group on the server.
      ls                  : List files and folders of the current path on the server. Alias of ll and dir commands.
      shellpath           : Show the current local path of the WebShell server.
      pwd                 : Show the current local path on the server.
      uname               : Show the full info of the System Operative of the server.
      exit                : Exit of the client but not remove the WebShell on the server. See uninstall.  Alias of quit command.


Algunos comandos no están disponibles porque están en construcción continua.

Saludos.
#12
Hola, hice un generador de diccionarios en python, lo pueden descargar desde acá:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Uso:

Código: php
whk@machine:~/$ python whk-dict-maker.py 
- WHK Dictionary Maker 1.0, for pentesting purposes.
- Enter max longitude of word [4]        :
- Use letters?                [Y/n]      :
- Use lowercase?              [Y/n]      :
- Use uppercase?              [y/N]      :
- Use numbers?                [Y/n]      :
- Use special chars?          [y/N]      :
- Filename of dictionary      [dict.txt] :

  Summary                                             
  -----------------------------------------------------
- Max longitude of word                  : 4
- Total number of characters to use      : 36
- Total of words                         : 1,727,604
- Use letters                            : Yes
- Use lowercase letters                  : Yes
- Use uppercase letters                  : No
- Use numbers                            : Yes
- Use special chars                      : No
- Filename of dictionary                 : dict.txt
- File size estimated of dictionary      : 8.19MB
  -----------------------------------------------------
- You want to proceed?        [Y/n]      :
- End!                                                 

whk@machine:~/$ ls -lah
total 8,3M
drwxrwxr-x 3 whk whk 4,0K ene 24 20:24 .
drwxrwxr-x 4 whk whk 4,0K ene 24 20:09 ..
-rw-rw-r-- 1 whk whk 8,2M ene 24 20:24 dict.txt
-rw-rw-r-- 1 whk whk 7,0K ene 24 20:09 whk-dict-maker.py
whk@machine:~/$


Código:

Código: python
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import os
import math

class MainCLS:

    total_of_words      = 0
    total_of_characters = 0
    current             = 0
    user_longitude      = 0
    user_use_letters    = False
    user_use_lowercase  = False
    user_use_uppercase  = False
    user_use_numbers    = False
    user_use_specials   = False
    user_filename       = ''
    list_string         = ''


    def processWord(self, str):
        self.current = self.current + 1
        self.file_handler.write("%s\n" % str)
        sys.stdout.write("\r- Progress: %d/%d (%s)                " % (self.current, self.total_of_words, str))
        sys.stdout.flush()


    def loop(self, prefix, loops):
        if loops == 0:
            return
       
        last_list = []
        for id_letter in range(0, len(self.list_string)):
            final_str = prefix + self.list_string[id_letter]
            last_list.append(final_str)
            self.processWord(final_str)

        for id_array in range(0, len(last_list)):
            self.loop(last_list[id_array], loops - 1)


    def getInput(self, message, type_inp, default_value):
        inp = raw_input(message)
        inp = inp.strip()

        if inp == '':
            inp = default_value

        if type_inp == 'int':
            try:
                val = int(inp)
                if val > -1:
                    return val
                else:
                    print '- That\'s not an number. Try again.'
                    return self.getInput(message, type_inp, default_value)

            except ValueError:
                print '- That\'s not an number. Try again.'
                return self.getInput(message, type_inp, default_value)

        elif type_inp == 'bool':
            if inp.lower() == 'y':
                return True
            elif inp.lower() == 'n':
                return False
            else:
                print '- Please, respond with yes (y) or not (n). Try again.'
                return self.getInput(message, type_inp, default_value)

        elif type_inp == 'file':
            if os.path.isfile(inp):
                respond = self.getInput('- The file exists.You want to replace it? [y/N] : ', 'bool', 'n')
                if respond == False:
                    return self.getInput(message, type_inp, default_value)
                else:
                    return inp
            else:
                return inp

        else:
            return inp

    def printSummary(self):
        print '                                                       '
        print '  Summary                                              '
        print '  -----------------------------------------------------'
        print '- Max longitude of word                  : ' + '{0:,}'.format(self.user_max_longitude)
        print '- Total number of characters to use      : ' + '{0:,}'.format(len(self.list_string))
        print '- Total of words                         : ' + '{0:,}'.format(self.total_of_words)

        if self.user_use_letters == True:
            print '- Use letters                            : Yes'
            print '- Use lowercase letters                  : ' + ('Yes' if self.user_use_lowercase  else 'No')
            print '- Use uppercase letters                  : ' + ('Yes' if self.user_use_uppercase  else 'No')
        else:
            print '- Use letters                            : No'


        print '- Use numbers                            : ' + ('Yes' if self.user_use_numbers  else 'No')
        print '- Use special chars                      : ' + ('Yes' if self.user_use_specials else 'No')
        if os.path.isfile(self.user_filename):
            print '- Filename of dictionary                 : ' + self.user_filename + ' (override)'
        else:
            print '- Filename of dictionary                 : ' + self.user_filename

        print '- File size estimated of dictionary      : ' + self.convertSize(self.total_of_characters)
           
        print '  -----------------------------------------------------'
        return self.getInput('- You want to proceed?        [Y/n]      : ', 'bool', 'y')


    def convertSize(self, size, precision=2):
        # size = size + 0.0
        suffixes=['B','KB','MB','GB','TB','PB']
        suffixIndex = 0
        while size > 1024 and suffixIndex < 4:
            suffixIndex += 1 #increment the index of the suffix
            size = size/1024.0 #apply the division
        return ("%.*f%s" % (precision, size, suffixes[suffixIndex]))


    def __init__(self):

        print '- WHK Dictionary Maker 1.0, for pentesting purposes.';
        # self.user_min_longitude = self.getInput('- Enter min longitude of word [0]        : ', 'int',  '0')
        self.user_max_longitude = self.getInput('- Enter max longitude of word [4]        : ', 'int',  '4')

        self.user_use_letters   = self.getInput('- Use letters?                [Y/n]      : ', 'bool', 'y')
        if self.user_use_letters == True:
            self.user_use_lowercase   = self.getInput('- Use lowercase?              [Y/n]      : ', 'bool', 'y')
            self.user_use_uppercase   = self.getInput('- Use uppercase?              [y/N]      : ', 'bool', 'n')

        self.user_use_numbers   = self.getInput('- Use numbers?                [Y/n]      : ', 'bool', 'y')
        self.user_use_specials  = self.getInput('- Use special chars?          [y/N]      : ', 'bool', 'n')
        self.user_filename      = self.getInput('- Filename of dictionary      [dict.txt] : ', 'file', 'dict.txt')

        self.list_string = ''

        if self.user_use_letters == True:

            if self.user_use_lowercase == True:
                self.list_string = self.list_string + 'abcdefghijklmnopqrstuvwxyz'

            if self.user_use_uppercase == True:
                self.list_string = self.list_string + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

        if self.user_use_numbers == True:
            self.list_string = self.list_string + '0123456789'
       
        if self.user_use_specials == True:
            self.list_string = self.list_string + '\\/\'"@#$%&/()=?¿!¡+-*_.:,;'


        self.total_of_words      = 0
        self.total_of_characters = 0
        for n in range(0, self.user_max_longitude):
            total = (len(self.list_string)**(n + 1))
            self.total_of_words      = self.total_of_words + total
            # (word length * count words) + \n
            self.total_of_characters = self.total_of_characters + (total * (n + 1)) + total

        # Summary
        response = self.printSummary()
        if response == False:
            return

        # Load file
        if os.path.isfile(self.user_filename):
            os.remove(self.user_filename)
        self.file_handler = open(self.user_filename, 'w')

        # Execute all
        self.loop('', self.user_max_longitude)

        # End
        self.file_handler.close()
        print "\r                                                       \r- End!"
   
if __name__ == '__main__':
    mainCLS = MainCLS()


Enjoy.
#13
Llegó WHK Conversor Version 4.0 !

Soy WHK de la comunidad de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y vengo a compartir con toda la comunidad de Underc0de mi herramienta personal para transformar textos en múltiples algoritmos.

Descarga: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Código fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Y lo mejor de todo es que la descarga es gratis y sin publicidad! :D

WHK Conversor es la herramienta mas completa que te ayudará a la transformación de textos y archivos a múltiples tipos de algoritmos.

Características:
· Es gratis y no tiene publicidad!, ya no debes preocuparte por un funcionamiento no deseado a cambio de una aplicación de excelencia.
· Envía tus resultados a través del botón "Compartir".
· Opción de autorecortar tus textos (ya no necesitas editarlos antes de procesarlos).
· Múltiples formatos de salida (prefijos, sufijos, entre otros).

Transformaciones soportadas:
· MD5 checksum of files
· SHA1 checksum of files
· Ascii a MD5
· Ascii a RC4
· Ascii a SHA
· Ascii a SHA256
· Ascii a SHA512
· Ascii a Decimal
· Decimal a Ascii
· Ascii a Octal
· Octal a Ascii
· Ascii a Hexadecimal
· Hexadecimal a Ascii
· Ascii a Binario
· Binario a Ascii
· Ascii a Base64
· Base64 a Ascii
· Ascii a Htmlentities
· Ascii a Urlencode
· Ascii a Inyección SQL en Dword
· Y mucho más!

Aun se esperan muchas mejoras adicionales como la opción de cifrar y descifrar mensajes sms, correos, mensajes de watsapp, más algoritmos, traducciones en mas idiomas y mucho más.

Algunas capturas de pantalla de la nueva versión:

#14
Zona Webmaster / [CSS][MEDIO] LessCSS
Julio 31, 2013, 03:16:17 PM
Hoy por hoy está de moda programar en NodeJS, ¿porque?...

NodeJS es un lenguaje de programación Asyncrónica (en hilos o threads) orientado al JavaScript pero ejecutado desde el lado del servidor.

Este lenguaje de programación ha resultado tan revolucionario que han aparecido una cantidad enorme de productos libres que están asociados a este, desde hostings que duran solamente su ejecución en node como Heroku, bases de datos no SQL de alto rendimiento como MongoDB pero también han aparecido frameworks y softwares que nos hacen la vida mas fácil delo lado del navegador.

Uno de estos se llama LessCSS y se trata de una tecnología creada en JavaScript la cual interpreta hojas de estilo a lo puro SCSS (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta) pero sin tener que ser compilado por el lado del servidor.

Por ejemplo, nos descargamos el archivo JavaScript de CSSLess y lo incluimos en nuestro proyecto, ahora creamos una hoja de estilo con extensión .less y tendremos todo el poder de una hoja CSS pero dinámica con opción de crear funciones, variables y modelos.

Código: css
// LESS

.rounded-corners (@radius: 5px) {
  -webkit-border-radius: @radius;
  -moz-border-radius: @radius;
  -ms-border-radius: @radius;
  -o-border-radius: @radius;
  border-radius: @radius;
}

#header {
  .rounded-corners;
}
#footer {
  .rounded-corners(10px);
}


Este código .less se puede compilar utilizando lessc desde el npm de nodeJS pero ahora podemos utilizarlo directamente desde el navegador utilizando esta librería en JavaScript.

El mismo código en CSS:

Código: Css
/* Compiled CSS */

#header {
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  -ms-border-radius: 5px;
  -o-border-radius: 5px;
  border-radius: 5px;
}
#footer {
  -webkit-border-radius: 10px;
  -moz-border-radius: 10px;
  -ms-border-radius: 10px;
  -o-border-radius: 10px;
  border-radius: 10px;
}


Si a alguien le interesa esta maravilla digital puede pasar por su web oficial: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Saludos.
#15
Hacking / Trolleando en Yahoo Query Languaje (YQL)
Junio 27, 2013, 11:54:26 AM
Vamos a convertirnos en trolls por un par de minutos y vamos a darle un vistazo a la consola QL de Yahoo la cual permite realizar multiples consultas a distintas apis de Yahoo pero a modo de SQL.

Ejemplo de una simple query:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Esto nos devolverá todas las tablas (servicios, apis).

Ahora probaremos utilizar la api HTML de la siguiente manera:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Esto nos devolverá el contenido HTML parseado en XML.

Ahora que ya entendimos un poco sobre el funcionamiento de YQL vamos a trollear un poco:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Nos retornará:
Código: xml
<url ... http-status-code="502" http-status-message="Network is unreachable">http://192.168.1.1/</url>


Pero si intentamos entrar a la subred local 0.1: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Código: xml
<url ... http-status-code="403" http-status-message="Forbidden">http://192.168.0.1/</url>


Esto nos demuestra una cosa: que la api de peticiones HTTP no filtra ips ni dominios :D asi que podemos pasearnos por toda la red local si queremos ya que al intentar entrar a la puerta predeterminada de enlace (router o switch o lo que sea) nos arrojó un error 403 que probablemente haya retornado el panel de administración del router ya que cuando probamos con otras ips locales simplemente nos dice que es imposible conectarse (error 502 Cannot find server).

Probamos otras urls sensibles:
http://localhostx/ : 502 - Cannot find server
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta : 200 Empty
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta : 403 (necesita autorización, ¿como?: buena pregunta)
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta : 502 - Network is unreachable
http://adminx/ : 502 - Cannot find server
http://admin/ : 400 - Bad Request
http://zebra/ : 502 - Cannot find server
http://jaguar/ : 400 - Bad Request
http://intranet/ : 502 - Cannot find server
http://admin/login/ : Timed out waiting for operation - failing node: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta68.142.224.71:11211
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta : 502 - Connection refused
http://local/ : 404 - Not Found Tenemos acceso a un servidor WEB local!
http://dev/ : 404 - Not Found on Accelerator Tenemos acceso a un servidor WEB local!
http://developer/ : 404 - Not Found on Accelerator Tenemos acceso a un servidor WEB local!
http://servers/ : 400 - Bad Request
http://labs/ : 400 - Bad Request

Información útil para comenzar a husmear dentro de los servidores locales de yahoo :)

Saludos.
#16
Para todos aquellos que deseen realizar pruebas con jquery existe un sitio WEB donde puedes crear tu código y ejecutarlo en linea con la versión de jQuery que desees:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Primero creas tu código, luego le das en run, si queda algo mal lo modificas y vuelves a presionar run, cuando quede listo presionas en "save" y te dará un enlace para que lo puedas publicar.

Espero que les sirva. Saludos.
#17
Revisando las funcionalidades de internet explorer 10 encontre que el inspeccionador no trabaja adecuadamente y es posible crear un codigo para prevenir que modifiquen el DOM de tu pagina.

En si este es un bug que encontré, me hubiera gustado reportarlo pero me pasearon por un sin fin de formularios hasta llegar a una sección donde solo hablan ingles y nadie toma en cuenta ningun comentario. Asi que pensé que si lo publicaba en ese lugar nadie ganaba, ni microsoft, ni yo ni los usuarios finales, asi que decidí publicarlo acá, mas probecho lo sacarán ustedes.

El bug está cuando escribes una etiqueta HTML desde javascript, al hacerlo se hace totalmente imposible editarlo desde el inspeccionador de elementos, por eso podemos crear un código muy simple para modificar el body por completo agregandole unicamente un espacio en blanco al final para que sea imposible su edición por parte de internet explorer 10:

Código: html5
<html>
<head>
<script type="text/javascript">
function b(){
document.body.innerHTML += ' ';
}
</script>
</head>
<body onload="b();">a</body>
</html>


Si lo prueban verán que donde dice texto del nodo es imposible modificar su valor con la letra "a", si comentan el onload verán que si se puede editar.
También es posible modificar el head, de esa manera los usuarios de internet explorer no podrán modificar sus documentos.

Saludos.
#18
Back-end / Utilizando RAW Sockets en PHP
Junio 03, 2013, 11:13:25 AM
La gran ventaja de utilizar sockets v/s raw sockets es que puedes construir paquetes personalizados adaptados al protocolo que desees, por ejemplo puedes realizar no solo conecciones TCP o UDP sino también ICMP y PUP.

Recordemos que en todos los sistemas menos Windows necesitamos permisos de root por asuntos de seguridad.

Ejemplo de un paquete ICMP haciendo Ping:
Código: php
<?php
/* Paquete ICMP */
$package = "\x08\x00\x7d\x4b\x00\x00\x00\x00PingHost";
$socket = socket_create(AF_INET, SOCK_RAW, 1);
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => $timeout, 'usec' => 0));
socket_connect($socket, '173.194.42.63', null);
$ts = microtime(true);
socket_send($socket, $package, strLen($package), 0);
if (socket_read($socket, 255))
$demora = microtime(true) - $ts;
else
$demora = false;
socket_close($socket);

var_dump($demora);


También podemos crear nuestros propios Cliente/Servidor basados en protocolos creados por nosotros y evadir firewalls, cifrar información, enviar datos extras en las cabeceras, etc, entre otras cosas.

#19
Hoy ingresé al irc de underc0de y pensé que nunca habia hecho un robot para irc a pesar de lo facil que era el protocolo de comunicación, asi que me decidí a hacer uno :) e interpreta código php :D de cualquier persona que le escriba:

[php] codigo_aca();

Por ejemplo
[php] echo 'hola';

Citar[15:44] <@ANTRAX> [php] $a="C"; $b="X"; if ($a<$b) { echo $a."is smaller than".$b; }
[15:44] <Robot_PHP> Interpretando ...
[15:45] <Robot_PHP> cis smaller thanx
[15:45] <@ANTRAX> nice!

Acá les dejo el código fuente, está hecho en php :)
Pueden modificarlo para crear sus propias respuestas automatizadas.

Enjoy.

Código: php
<plaintext><?php
set_time_limit(0);

$nick = 'Robot_PHP';
$canal = '#Underc0de';
$isLogged = false;

$fp = fsockopen('irc.freenode.net', 8000);

$buffer = '';

while (!feof($fp)){
$buffer = trim((string)fgets($fp, 2048));

if((!$isLogged) and (substr($buffer, 0, 1) === ':')){
$isLogged = true;
fwrite($fp, 'USER '.$nick.' '.$nick.' '.$nick.' '.$nick."\n");
fwrite($fp, 'NICK '.$nick."\n");
fwrite($fp, 'JOIN '.$canal."\n");

fwrite($fp, 'PRIVMSG '.$canal.' :.                                 .'."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :            ,-,,-,   __             '."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :     ______/     /_,\'  |           '."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :     \______WHK_______/            '."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :          |\) (/ |                 '."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :       (  | oo   |                 '."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :        ) `|  |--\'                 '."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :       (___^^^^|                   '."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :          (____\'                   '."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :.                                 .'."\n");
 
fwrite($fp, 'PRIVMSG '.$canal.' :Hola soy el robot de WHK, tengo la capacidad de interpretar código php :)'."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :ejemplo: [php] micodigo();'."\n");
fwrite($fp, 'PRIVMSG '.$canal.' :Recuerda escribir todo en una sola linea.'."\n");
}

$f = explode(strtolower(' PRIVMSG '.$canal.' :'), strtolower($buffer));
if(count($f) === 2){
$msg = trim($f[1]);

if(substr($msg, 0, 6) === '[php] '){
fwrite($fp, 'PRIVMSG '.$canal.' :Interpretando ...'."\n");

$code = file_get_contents('http://codepad.org/', false, stream_context_create(array(
'http' =>
array(
'method'  => 'POST',
'header'  => 'Content-type: application/x-www-form-urlencoded',
'content' => http_build_query(
array(
'lang' => 'PHP',
'run' => 'True',
'submit' => 'Submit',
'code' => '<'.'?php '.substr($msg, 6)
)
)
)
)));

$code = explode('<a name="output">', $code);
$code = explode('<td width="100%" style="vertical-align: top">', $code[1]);
$code = explode('<div class="highlight">', $code[1]);
$code = explode('<pre>', $code[1]);
$code = explode('</pre>', $code[1]);
$code = str_replace(array("\n", "\r", "\b", "\x00"), ' ', trim(htmlspecialchars_decode(strip_tags($code[0]), ENT_QUOTES)));
fwrite($fp, 'PRIVMSG '.$canal.' :'.$code."\n");
}

unset($msg);
}
unset($f);

// echo $buffer."\n";

/* PING */
if(strtolower(substr($buffer, 0, 6)) === 'PING :'){
$host = explode(':', $buffer);
$host = trim($host[1]);
fwrite($fp, 'PONG :'.$host."\n");
unset($host);
}

}
fclose($fp);
#20
Underc0de / Necesito un tema de este foro por favor
Diciembre 27, 2012, 09:57:52 AM
Hola como estan todos :)
soy parte de la comunidad de whk security y cada cierta cantidad de tiempo ponemos en la parte inferior un tema destacado de alguna comunidad, la semana pasada le tocó a dragonjar y su entrevista con captain crunch y ahora quiero poner un tema destacado de esta comunidad.

Lo que necesito es un buen tema, un tema destacado que valga la pena poner en portada y que sea relativamente nuevo. Tendrán alguno por ahi para que podamos comenzar con el diseño.

me gusta que las personas se relacionen los unos a los otros y que de mi comunidad puedan venir por estos lados a aprender tambien, encuentro que es un buen lugar.

Saludos.
#21
Presentaciones y cumpleaños / Buenas a todos :)
Diciembre 17, 2012, 12:20:16 PM
Hola, soy WHK y espero poder ayudarlos y compartir entre todos los temas que mas nos apasionan y sin limites!!!!! :D :D :D