lunes, 28 de marzo de 2016

Programando una web segura 2


2.- Exposición de variables al usuario 
Es importante saber que si manejamos variables  donde dependas de métodos GET y POST, las cuales pueden ser editadas por los usuarios , estas deben de tener sentenciada un formato de entrada. Es decir, si deseas que inserte números, sólo admitir número, y si es texto y éstas son almacenada en la base de datos que procedente serán publicadas en el sitio como son las cajas de comentarios o publicación de post,  evitar que contengan símbolos el cual el servidor puede leerlos como html (<h1><iframe>) ya que si permites la entrada de símbolos como (<, >) el servidor  lo interpreta, las personas mal intencionadas podrían agregar un simple iframe para robo de cookies o un refresh para pseudo hackear, esta vulnerabilidad llamada xss, xsrf afecta a múltiples sitios los cuales no filtran sus variables y esto permite que podamos introducir código malicioso.
Ahora, otra cosa que afecta mucho a los sitios son las inyecciones sql , estas ocurren porque el sitio le da la confianza de elegir mediante el metodo GET la pagina que visitara , es decir 
"www.example.com/page.php?cat=1" desde ese entonces, la informaciób de la variable CAT del sitio se vuelve complemento de la consulta SQl , una consulta para este tipo se orgina de esta forma , SELECT * FROM table WHERE id =$_GET['cat'] ; 
Desde ese momento  se puede modificar la consulta y ocupar de una inyección de código malicioso para obtener nombre de tablas y columnas  y asi, hasta llegar  al user y pass. No solamente ocurre en métodos GET sino también en post, cuando se realiza consulta para comparar datos de entrada con las almacenadas, como los logins, comparan datos que se ingresan con los que se tienen en la base de datos, con solamente aplicar un bypass es posible logearnos como administrador. Todo esto se soluciona ocupando funciones como mysqli_real_escape_string , u ocupando str_remplace la cual reemplaza los caracteres que se asignen dentro de la función. Puedes agregar cuantas funciones pasen en tu mente, de igual manera podremos asegurar el login en el caso de que el administrador tenga una ip estática, comparar la ip entrante con la ip real del admin y asi evitar que cualquier persona ya sea con user y pass correcto entren al panel de administración. La seguridad de los sitios webs nunca esta de mas.


viernes, 25 de marzo de 2016

Programando una web segura 1

Si bien vemos las problemas que se encuentran en la red con respecto a las vulnerabilidades podemos destacar las principales detalles que a los programadores se les olvidan. Programar no es una tarea fácil , sin embargo a veces descuidamos ciertos detalles que nos puede costar la integridad del sitio

1.- USO DE PLUGINS , TEMPLATES. APPS.
Es cierto que un sitio web atractivo es un sitio con más visitas y más reputación , pero cuando hablamos del manejo de datos , como contraseñas , correos, cuentas bancarias , e información personal , pues tendremos que poner un poco de enfoque a la seguridad. Las parte fronted  puede poner en peligro la integridad del sitio. Algunos CMS como wordpress, drupal , joomla manejan variedad de Plugins y algunas otras funciones extras que son programados por usuarios para mejorar la experiencia en el sitio para los visitantes, pero desde luego al instalar los plugins se le generan confianza para poder; tener acceso a la base de datos, obtener ficheros de directorios, modificar y crear archivos , crear consultas sql , etc. 
Las vulnerabilidades que se encuentren van a depender desde el manejo que pueda tener la aplicación sobre el sitio , por ejemplo , si es de una tabla donde demuestre alguna noticia , esta tendría que tener una consulta mysql y como respuesta alojaría la noticia, esta consulta nos puede comprometer el sitio y si no está bien estructurada podría ser capaz de realizarse una Inyección sql.
Otras veces suele pasar que de manera muy explícita suelen mandar a llamar archivos por método GET. donde por ahi obtienen la ruta del archivo ,
ejemplo wp/wp-content/plugins/brandfolder/callback.php?wp_abspath=../directorio/imagen.jpg
Suele suceder , es posible hacer ese tipo de métodos para llamar un archivo desde luego esta tiene que ser filtrada, es decir, poder especificar que tipo de archivos. Con esta simple vulnerabilidad podemos llamar archivos de mucha importancia como wp-config.php donde en wordpress se almacena los datos de la base de datos, Esta vulnerabilidad puede ser explotada por LFI/RFI






La confianza que se le otorga a los plugins y aplicaciones webs pueden ser demasiada,  por eso es importante mantener la versión más actualizada de todo lo que ocupemos, y estar en la vanguardia en las posibles vulnerabilidades de las versiones de CMS o plugin, esto podría salvarnos la vida, pues si el reporte que se encuentra en internet se trata sobre un plugin o template  es posible desinstalarlo, y en caso de que fuese un problema de sistema , al instante que salga a la luz la vulnerabilidad  los programadores de los CMS sacan los parches para evitar ser hackeado.


martes, 22 de marzo de 2016

Hackeando cms(Joomla, wordpress, etc)


Esta entrada será algo muy sencillo, quizás lo tomen como algo de newbie, pero si lo vemos desde el punto de vista pentester, cualquier vulnerabilidad de un sitio ya sea que la vulnerabilidad ya se haya hecha pública , sigue siendo vulnerabilidad, de hecho es peor, estás más expuesto que cualquier persona pueda acceder a la administración como si nada.
Los CMS , son sistema de administración de sitios el cual son programados por empresas que buscan facilitar el trabajo de las personas inexpertas y ahorrar el trabajo de un programador personalizado(por eso los hackean) se trata de un sistema que un niño de 10 podría usar, solo se sube al servidor , sigues instrucciones, pones contraseñas y creas perfiles, y entonces te dedicas a publicar , ya tienes creado tu sitio web  sin gastar dinero,  ya sea para tu empresa, personal , o negocio. 

¿Entonces de que se trata esto? Simple y sencillamente de las versiones de cada CMS, cada cierto tiempo se crean versiones, aunque a veces estas deberían de ser para mejorar la seguridad, se dedican a mejorar el entorno gráfico y hacer que el usuario tenga una mejor experiencia y pueda manipular su sitio con pocos conocimientos, esto puede comprometer un poco la seguridad. 
La mayoría de los usuarios que instalan joomla  u otros CMS son personas inexpertas, la cuales reciben notificaciones de que existe una nueva versión para actualizar y lo toman como innecesarios, esto es un error, siempre hay que tener actualizado las versiones de todo software y aplicaciónes y más cuando son aplicaciones webs. Estas personas no saben que al no actualizar están desprotegidos ya que en las versiones anteriores y a veces en la actuales ( 0day).Los hackers sacan a la luz las vulnerabilidades  y las publican , estas son llamados exploits o 0day. Siguen existiendo versiones de joomla , wordpress viejas en la internet , están expuestas a cualquier ataque hacker.


Bancos de exploit, aca encontraras las vulnerarbilidades de cada CMS con respecto a su versión , la aplicación que requiere para ser explotado y su breve manual de como emplearlo.

https://www.exploit-db.com/
http://es.0day.today/

Bitácora de un transeúnte: No siempre es por ahí (Hackeando sitios)
















Vulnerar sitios es una tarea que para expertos puede ocupar algo de tiempo , o a veces  no, todo depende de la imaginación que tengas , pero vamos, yo no me aprovecharía de un error fácil, eso no es la esencia del hacking. En fin, a veces digo que el encontrar un error de seguridad no depende mucho de la dificultad , sino de la agilidad que tienes para encontrarlos, es decir, a veces el error es fácil de explotar, pero el problema será encontrarlo ¿Dónde esta?, esa es la pregunta , pero en sí, la respuesta es simple, pero a la vez compleja, "En donde no tienes idea, y no estabas buscando".



Yo carecía de apenas 15 años de edad, y pues bien , yo he andado en esto desde los 11 años, me la pasaba vulnerando sitios, y de ahí me dió la curiosidad. Como toda persona , quería salir en las noticias y ser conocido como "joven hacker" sin embargo , no sucedió. Y en mi intento de ganar ese nombre, empecé a buscar fallos en sitios gubernamentales, había batallado en busca de sitios para poner mi nombre, y hacerlo conocido, pero pasó algo tan curioso, lo que yo buscaba no lo encontraba en donde era mi objetivo.Yo quería  , y tenia esa ansias de "HACKEAR" un sitio web  de gobierno. Estuve en busca, hasta que al buscar en sitios web , me encontré uno que por más que le buscaba no hallaba errores de programación, y en eso , cuando empecé a navegar por todo el sitio , me encontre un subdominio en el cual probé mi escasa sabiduría, y pasó lo del capítulo anterior , el phpmyadmin de ese sitio no tenia una contraseña diferente a la que ya traia por deafult , root como usuario , y password de contraseña, entonces la página subdominio.principal.gob.mx(ejemplo) era mía, al final de todo , metiendo la phpshell pude llegar accesar a la principal , y con un pequeño script programado en perl que me dí el lujo de programar, hizo que remplazara por mi , todas las index.html, php o asp, todos relacionados con index(es decir, páginas principales de cada sitio o entradas) todas esas eran remplazadas por la mia(deface), y ahi estaba, todas con mi nick de "pseudohacker", no salió en las noticias, pero en cuestión de horas se dieron cuenta y todo se volvió a la normalidad, lo bueno fué que ellos tenían un respaldo, sino, suponía que habrían hecho un proceso de investigación , en ese momento no sabia que eran los Logs, pero aquí estoy sin antecedentes penales, escribiendo para ustedes.






Moraleja:
Las vulnerabilidades que buscan para un sitio no siempre está en la principal , a veces las encuentras en un subdominio, una vez dada , estas funcionan simplemente como carpetas , una vez dentro es como poner un simple back y te da la principal(No siempre , todo depende de la configuración). Existen métodos como el jumping domain(jumping server) , una vez hackeado un sitio , este método tiene como objetivo el obtener el directorio de las páginas que también alberga el servidor, una vez obtenido el directorio solo basta dirigirse con la phpshell ya previamente instalada y  obtienes acceso a otra pagina, todo esto es como si fuese carpetas(lo son) , donde /home/ sería donde se albergan los usuarios y las demás carpetas serían los usuarios (/home/pedro/public_html ,home/juan/public_html, home/roberto/public_html ). Es imprescindible de tener la dirección completa , hasta la carpeta public_html su nombre lo dice, es público, y no tendremos problemas para modificar , ya que si vamos y queremos ir a home , no nos aparecerá nada por el  hecho de que es un carpeta del sistema, pero en fín, es cuestión de imaginación y enfoque a lo que haces.Saludos.

lunes, 21 de marzo de 2016

Hackeando perfiles de facebook



Si estas en busca de un programa para que puedas vengarte de la novia , y entrar a su facebook, pues este no es el lugar correcto. Vamos a ser serios , viendo desde el punto de vista didáctico e informático, te puedo decir que es casi imposible que existan programas para esto. Para crear un programa para que podamos obtener las contraseñas de facebook , éste debería tener acceso a la base de datos de facebook , es decir, facebook deberia de haber sido vulnerado  y el atacante  tendría la contraseña de los miles de millones usuarios de facebook, ¿no es algo ilógico?. Estamos hablando de un sitio de los más recurridos, el cual no solamente uno se encarga de la seguridad , sino un gran departamento de tras de él  lo respalda. En cuestión  de un lapso corto de tiempo la vulnerabilidad sería arreglada, pues facebook maneja dinero, ya no es solamente red social, hablamos de marketing, negocios , dinero , integridad de personas importantes, dinero y dinero.
La mayoría de los programas que descargas para hackear facebooks lo único que hacen es llenar de malware a tu pobre ordenador. Meses después , te preguntas ¿Por qué esta lenta el ordenador?.




Desde luego, no quiero decir que no existan métodos para hackear facebook ,pero basado en mis conocimientos, es necesario tener un poco de información de la persona , es decir, tener contacto, conocerla ,o investigarla, esto se puede llegar resumir a ingeniería social,  pero no solo eso, tenemos  algunos métodos como el robo de sesiones(sessions hijacking) , o el método que rodea mucho de la internet, el famoso "olvide la contraseña" , se basa en poder recuperarla mientras pasas aventuras divertidas, como tratando de adivinar a quien etiquetaron a un persona en la foto, personas con quien habla recurrentemente la victima y algunos datos personales. Sin embargo , estos métodos son más confiables , puesto que son manuales. Los programas que te venden a cerca de hackear cuentas, son paradójicos. Al final , el hackeado eres tú. SALUDOS.




sábado, 19 de marzo de 2016

Bitácora de un transeúnte: Google mi aliado para hackear

Google es un motor de búsqueda personalizada, bueno o al menos así parece, todo depende la intención que tengas. En mi caso , google me ayudo aquel día hacer mi tarea del colegio, y también a encontrar vulnerabilidades en sitios web. ¿Como podemos usar a google para encontrar vulnerabilidades?
Un día, me encontré con un sitio, me estaba tentando a vulnerarlo , pero esta vez opte por no ocupa de web crawlers, y ocupe solamente algo  simple y sencillo,  ¡búsqueda especificas!, exacto, o como se denomina, Google Dorks, desde el momento que lo conocí ha sido mi aliado.
Es simple y sencillo. Tan sencillo como escribir
inurl:.php?id site:gob.mx

Con esta pequeña dork , podremos encontrar paginas con términos .php?id en las url, y site , nos especifica que solo queremos a los sitios con dominios gob.mx  entonces nos arrojara resultados como:  www.sitio.gob.mx/index.php?id=2


Esta pequeñas búsquedas funcionan para optimizar nuestro hallazgo de vulnerabilidades,  en mi caso lo ocupe para encontrar un posible error sql. Sin embargo , se puede encontrar archivos en web como contraseñas o archivos sql donde contengan contraseñas , aveces suelen hacer un data dump o respaldos de base de datos y  los alojan en el mismo sitio, solo basta con agregar filetype:sql site: urldelsitio.com , y con ello encontraremos todos los archivos tipos .sql en urldelsitio.com. Las googles dorks han sido el aliado de muchos , pues también podemos aprovechar las fallas de los CMS como joomla y wordpress. También buscar los paneles de administración, encontrar versiones de las CMS y archivos de alto valor para obtener información con respecto a sitios.


Aquí algunas dorks para que se diviertan.


Para fallas de wordpress



Un banco de muchas dorks para explotar vulnerabilidades

La moraleja de hoy, muchachos, tengan cuidado con lo que suben a su servidor, que lo puedo encontrar desde google JAJAJA. Saludos.



Bitacora de un transeúnte: La puerta trasera



Hace un par de años encontré un sitio que pude vulnerar por inyección sql, algo muy sencillo un  simple bypass, una vez dentro procedí a insertar una phpshell, todo iba normal, estaba improvisando una index, cuando de improvisto , al actualizar la phpshell desapareció. Empece a intuir dos cosas, o su servidor tiene una especie de seguridad o el administrador se dio cuenta. En la primer opción, los tipos de seguridad que implementan los servidores,  evitan siempre los archivos que puedan manipular a otros archivos, es decir, evitan los archivos que comprometan al sistema.Esto puede especificarse en archivos .htacces el cual puede bloquear la navegación a otros archivos, entonces solamente aparecerá como directorio principal la ruta donde se sube la phphell y no tendrá acceso a otros directorios. La otra situación podría ser que el administrador estaba online y se dio cuenta, todo eso se resolvía  con una sola herramienta.
Ocupe el instalar un backdor al servidor, este backdoor si no mal recuerdo fue programado en perl, (Los backdoor son herramientas que permiten la conexión de dos computadores por medio de puertos) una vez instalado el backdoor el sistema era mio, y podía acceder cuando yo quería, pues ese es el proposito de un backdoor, poder entrar cuando uno quiera , convirtiéndolo como una puerta trasera.Sin más que hacer , procedí a modificar la index y reportar el problema.





Bitácora de un transeúnte: Phpmyadmin y sus inseguridades




Como muchos sabemos , phpmyadmin funciona como una aplicación capaz de ayudarnos a modificar y crear bases de datos MYSQL. Sin embargo como todo script, tiene sus pro y sus contra, aunque phpmyadmin este en su punto de popularidad, el hecho no corresponde a que sea muy seguro. Pero vamos,  que les pasa a esos programadores de ahora. Si uno busca versiones de phpmyadmin podremos encontrar  vulnerabilidades, pero no es algo fuera de lo normal , pasa en todo.
Se supone que constante mente se crean actualizaciones, debido a que los errores encontrados en el script en la próxima versión será parcheado o arreglado. Las actualizaciones en sí  corrigen los errores y/o vulnerabilidades, no solo cambian su imagen.

Una vez dicho la introducción, todo esto va a un punto. Como todo transeúnte, me encontré la administración de phpmyadmin de un sitio gubernamental de donde resido, llegue a buscar sus vulnerabilidades porque manejaban una versión muy antigua, estaba en busca de exploits para esa version en sitios como 0day , etc . Sin embargo,  de la nada , se me ocurrió dar a iniciar sesión, y pasó, sin poder creer,  pude acceder sin colocar ningún carácter en los campos de contraseña ni usuario, entonces esto quería decir que la contraseña era por defecto. En fin , pude accesar a la administración de phpmyadmin, ocupe instalar una shell para poder acceder a la pagina principal, puesto que la vulnerabilidad lo encontre en un subdominio, y ami me interesaba la pagina principal, una vez instalada la shellphp correcta obtuve el control total ,  y una ves hecho e instalada empece a hacer maldades como todos.

Moraleja: Actualicen sus aplicaciones y mas aquellas que ponen en riesgo la integridad del sitio, y por favor, no dejen nada por default, nos facilitan el trabajo, den un poco más de dificultad, a  uno le atrae más lo difícil. Saludos.


El mejor lenguaje de programación

Muchas personas que empiezan en el mundo de la informática pretenden aprender a programar, y para ello, indagan en la web para no cometer errores y encontrar un lenguaje de programación adecuado o simplemente "el mejor". Sin embargo, para contestar ¿Cuál es el mejor lenguaje de programación? te respondería  ¿Qué quieres hacer?




Pero si empezamos desde una respuesta menos compleja te podría decir, "Aprende Cualquiera" la lógica de programación en la mayoría de los lenguajes son similares, es decir, hablamos de variables, objetos, iteración, sentencias, etc. Esa es la esencia de los lenguajes de programación. De igual forma  lenguajes como "Python" son lenguajes que a nivel básico son mas fáciles de aprender, de hecho , en EUA , salió un reportaje donde mencionaban de escuelas donde enseñaban a programar en python , estamos hablando de niños de 10 años.
Entonces una ves respondiendo la pregunta "¿Qué quieres hacer?
Aplicaciones web, conexiones a DB,  aplicaciones, aplicaciones con interfaz gráfica , etc.
Es evidente que si tenemos como objetivo hacer una calculadora, es posible hacerlo en la mayoria de los lenguajes de programación , sin embargo , si ocupas de una interfaz gráfica es evidente que no todos los lenguajes fueron adaptadas para un interfaz gráfica , sino para programacion de tareas y su cumplimiento. Sin embargo VB, Net , C++ , JAVA, entre otros fueron adaptadas para la obtención de interfaz gráfica.
Si lo que ocupas es programación de páginas web, lo ideal pero no más seguro pero demandado es el lenguaje PHP, sin embargo existen  ASP, ASP .NET , PYTHON, etc.
Considerando todos los puntos, uno de las experiencias que he tomado , es que , las escuelas suelen impartir el conocimiento de programación con lenguajes C/C++,  he incluso java, debido a que tiene un sintaxis similar a la C++. Aunque los lenguajes C y sus evoluciones no son los más viejos , pero son los que mas popularidad tiene, !Ha de ser por algo!. Con esto empiezan abrirse la mente y empezar a tener conciencia de lo que se trata un lenguaje de programación y como se estructura.
La cuestión es aprender la esencia de la programación y no morir en el fracaso , sin embargo , aprender de lo más fácil te puede mal acostumbrar y empezaras a odiar los demás lenguajes, la idea es hacerse y complementarse  de cada uno, al final de todo sentarás cabeza en uno. Suerte.



jueves, 17 de marzo de 2016

Bitacora de un traúnsente: Capitulo 0

Esta sección son recopilaciones de historias la cual me han sido de mucha ayuda , como todo, la experiencia es la base de la sabiduría, puedes aprender todo lo teórico , pero a la guerra no vas con un libro, sino con el conocimientoYo carecía de apenas 15 años de edad y deje el mundo de la informática, me esta haciendo daño, mucho desvelos , e influía en mis calificaciones del colegio,y a pesar de que ando en esto desde los 11 años, nunca me creía un "niño prodigio".Me la pasaba vulnerando sitios, desarrollando programas el cual me facilitaban tareas cotidianas,manejaba lenguajes de programación de software, y aplicaciones web, ademas tenia  muchas ansias de enseñar lo que sabía, y para eso a los 14 años cree junto con amigos, SECURITY TRIALS enfocados en dar un inicio a las personas que quizás, el día de mañana sean grandes inventores o programadores.
Como toda persona , en busca de la fama , quería ser destacado en las noticias y ser conocido como "joven hacker" sin embargo , no sucedió. Y en mi intento de ganar ese nombre, empecé a buscar fallos en sitios gubernamentales, había batallado en busca de sitios para poner mi nombre, y hacerlo conocido, de igual forma como estos no eran de gran relevancia para las noticas, el vicio me gano, y empecé a hacer travesuras con muchos sitios con apenas 14 años , no me convenía hacerme público , entonces cree diferentes nicks para esconderme. y de todo esto , he logrado sacar esta sección el cual le dedico un tiempo, para comentar las experiencias , aunque sean fáciles, algunos , ni se las pasaba por la cabeza, el hacking, requiere de tiempo e imaginación. Saludos.

Happy hacking...