{"id":429,"date":"2019-10-22T00:33:15","date_gmt":"2019-10-21T22:33:15","guid":{"rendered":"https:\/\/www.pinguytaz.net\/?p=429"},"modified":"2019-11-11T13:41:51","modified_gmt":"2019-11-11T12:41:51","slug":"wfuzz-navaja-suiza-del-pentesting-web-2-3","status":"publish","type":"post","link":"https:\/\/www.pinguytaz.net\/index.php\/2019\/10\/22\/wfuzz-navaja-suiza-del-pentesting-web-2-3\/","title":{"rendered":"WFuzz (navaja suiza del pentesting WEB) 2\/3"},"content":{"rendered":"\n<p>Continuamos con opciones m\u00e1s avanzadas de \u00abwfuzz\u00bb pero que son bastante interesante para poder generar nuestros comandos para ayudarnos en nuestras tareas de pentesting y capturas de bandera.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Filtros<\/h2>\n\n\n\n<p>Aunque lo pongamos en esta segunda parte el filtrado de resultados es muy importante en ya que sino tendr\u00edamos mucha informaci\u00f3n que evitar\u00eda que vi\u00e9ramos la informaci\u00f3n que realmente nos seria de utilidad.<\/p>\n\n\n\n<p>Los filtros pueden ser que eliminen esa informaci\u00f3n o que visualice:<\/p>\n\n\n\n<p>Por ejemplo si estamos lanzando una b\u00fasqueda de directorios para ver por ejemplo el sistema, solo nos interesara ver las paginas que den 200-OK y no las que den error 404-P\u00e1gina no encontrada.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>&#8211;hc  o &#8212; sc  &lt;c\u00f3digo respuesta&gt; oculta \u00abhc\u00bb o visualiza \u00absc\u00bb el c\u00f3digo especificado. Podemos especificar varios c\u00f3digos separandolos con comas. <\/li><li>&#8211;hl o &#8211;sl  &lt;numero de lineas&gt;  Por el n\u00famero de lineas en la respuesta.<\/li><li>&#8211;hw o &#8211;sw &lt;palabras&gt;  Por n\u00famero de palabras<\/li><li>&#8211;hh o &#8211;sh &lt;caracteres&gt;  Por numero de caracteres<\/li><\/ul>\n\n\n\n<p>Estos son filtros simples o de respuesta, pero podemos complicarlo un poco m\u00e1s con expresiones regulares usando \u00ab&#8211;hs o &#8211;ss  &lt;filtro&gt;\u00bb<\/p>\n\n\n\n<p>Esto nos ayudara mucho en la b\u00fasqueda de usuarios por fuerza bruto o la localizaci\u00f3n de Injections-SQL como veremos cuando expliquemos los ejemplos.<\/p>\n\n\n\n<p>Los filtros podr\u00edan complicarse mucho m\u00e1s con \u00ab&#8211;filter\u00bb que nos permitir\u00eda a\u00f1adir l\u00f3gica condicional, pero esto lo dejamos para una explicaci\u00f3n avanzada a tratar m\u00e1s adelante o si lo deseas puedes ver el <a href=\"https:\/\/wfuzz.readthedocs.io\/en\/latest\/user\/advanced.html#filter-language\">manual de los filtro<\/a> pero como apertura de boca:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Codigo \"200-OK\", pagina correcta y la respuesta tiene m\u00e1s de 100 lineas y menos de 200tenemos m\u00e1s de 200 lineas.\n--filter \"c=200 and (l>100 and l&lt;200)\"   \/\/ Codigo \"200-OK\", pagina correcta y tenemos m\u00e1s de 100 lineas y menos de 200.\n\n\/\/ El contenido tiene el payload, util en an\u00e1lisis XSS.\n--filter \"content~FUZZ\"<\/code><\/pre>\n\n\n\n<p>Ademas estos filtros tambi\u00e9n los podremos usar para filtrar los payloads con \u00ab<em>&#8211;slice<\/em>\u00ab<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Scripts<\/h2>\n\n\n\n<p>Con los scripts logramos que <em>wfuzz<\/em> sea algo m\u00e1s que un escaner y nos permite incluso actuar explotando vulnerabilidades por ejemplo.<\/p>\n\n\n\n<p>Para conocer los script de que disponemos usaremos el comando wfuzz -e scripts, que como podemos ver los separa en tres categorias:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Activos<\/strong>: Transforma la petici\u00f3n lo que nos permite probar vulnerabilidades.<\/li><li><strong>Pasivos<\/strong>: Solo analiza la respuesta y petici\u00f3n pero no la transforma.<\/li><li><strong>Descubrimiento<\/strong><\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-10.png\" alt=\"\" class=\"wp-image-488\" width=\"650\" height=\"214\" srcset=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-10.png 911w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-10-300x99.png 300w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-10-768x254.png 768w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><\/figure>\n\n\n\n<p>Para conocer algo m\u00e1s de lo que realizan los script ejecutaremos \u00ab<em>wfuzz &#8211;script-help=&lt;nombre script&gt;<\/em>\u00ab<\/p>\n\n\n\n<p>Vamos a explicar algunos de ellos y como siempre lo mejor es probarlos uno mismo sacando conclusiones de para que nos pueden servir.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">robots (Analisis de los ficheros robot.txt)<\/h4>\n\n\n\n<p>Recoge el fichero <em>robots.txt<\/em>, que se pasa como payload ya que podremos varios y de distintos nombres, lo abre y analiza realizando la petici\u00f3n de estos directorios aun cuando el fichero <em>robots.txt<\/em> indique que no debe acceder.<\/p>\n\n\n\n<p>Para el que no conozca que es el fichero <em>robots.txt<\/em> comentar que es un fichero que ponemos en el ra\u00edz para evitar que se rastree o indexen directorios en los buscadores y ese es el problema. Tenemos un fichero que podemos leer f\u00e1cilmente y que nos indica que ficheros y directorios no queremos indexar (vamos que nos interesa se mantengan privados) y ya sabemos que la naturaleza humana nos dice que si eso no debe verse nos pica r\u00e1pidamente la curiosidad y nos ponemos a investigar.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Sintaxis de robots.txt<\/p><cite><strong>User-agent<\/strong>:  Indica los motores de b\u00fasqueda a las que se aplica las reglas siguientes (* para todos)  <a href=\"https:\/\/www.robotstxt.org\/db.html\">Lista de robots de b\u00fasqueda web.<\/a><br> <strong>Disallow<\/strong>: Indica que no se puede acceder ni rastrear.  Pudiendo usar patrones.<br> <strong>Allow<\/strong>: Lo contrario, as\u00ed podriamos poner una regla restrictiva que Allow libere.<\/cite><\/blockquote>\n\n\n\n<p>Un claro ejemplo lo vemos <a href=\"https:\/\/www.pinguytaz.net\/index.php\/2019\/07\/30\/resolviendo-ctf-mr-robot\/\">capturando la bandera de Mr. Robot<\/a> que lo primero que hacemos es ver el fichero <em>robots.txt<\/em> y encontramos el nombre de dos ficheros (en este caso no pon\u00eda Disallow pero dio igual) y porque no mirarlos, descubriendo la primera bandera y un fichero de claves que nos servir\u00eda para las siguientes pasos. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wfuzz --script=robots -L -z list,robots.txt http:\/\/www.webscantest.com\/FUZZ<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-11.png\" alt=\"\" class=\"wp-image-492\" width=\"589\" height=\"254\" srcset=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-11.png 839w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-11-300x129.png 300w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-11-768x331.png 768w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<p>Si sabemos de otro fichero con la misma sintaxis que <em>robots.txt<\/em> bastara con cambiar o a\u00f1adir el nombre a la lista.<\/p>\n\n\n\n<p>Lo mismo que con <em>robots.txt<\/em> podemos hacer con el script <strong><em>sitemap<\/em><\/strong> que parsea el fichero <em>sitemap.xml<\/em>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Links (Parseo HTML)<\/h4>\n\n\n\n<p>Nos localiza los links parseados del fichero HTML, esto nos puede servir de ayuda para localizar enlaces rotos en nuestras p\u00e1ginas web (no todo tenia que ser pentesting) indicando que solo nos muestre los 404 por ejemplo.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wfuzz -R1 --script=links -L -z list,index.html http:\/\/192.168.56.101\/FUZZ<\/code><\/pre>\n\n\n\n<p>En este caso ponemos -R1 para limitar el nivel de recursividad y lo que sacamos son los links de la pagina de Mr.Robot.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-12.png\" alt=\"\" class=\"wp-image-493\" width=\"495\" height=\"184\" srcset=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-12.png 971w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-12-300x112.png 300w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-12-768x287.png 768w\" sizes=\"auto, (max-width: 495px) 100vw, 495px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Ademas de los Scripts por defecto podremos escribir nosotros nuestros script, el detalle de como escribir Script para <em>wfuzz<\/em> lo hablaremos con m\u00e1s detalle en otra entrada igual que cuando hablamos del <a href=\"https:\/\/www.pinguytaz.net\/index.php\/2019\/07\/13\/creando-un-modulo-metasploit\/\">desarrollos de modulos MetaSploit<\/a>.<\/p>\n\n\n\n<p>Pero dejamos la plantilla de un Script . Lo colocaremos en el directorio \u00ab<strong>.wfuzz\/scripts<\/strong>\u00bb y la extensi\u00f3n del archivo sera .py ya que se codificara en <em>Python<\/em>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>###############################################################\n#  Pinguytaz.net\n#\n#  https:\/\/www.pinguytaz.net\n#\n#  Descripci\u00f3n: Ejemplo para la creaci\u00f3n de script de wfuzz\n#\n#  Historico:\n##############################################################\nfrom wfuzz.plugin_api.mixins import DiscoveryPluginMixin\nfrom wfuzz.plugin_api.base import BasePlugin\nfrom wfuzz.externals.moduleman.plugin import moduleman_plugin\n\n@moduleman_plugin\nclass prueba(BasePlugin, DiscoveryPluginMixin):\n    name = \"prueba\"\n    author = (\"www.pinguytaz.net\",)\n    version = \"0.0\"\n    summary = \"Ejemplo de creaci\u00f3n de un script\"\n    description = (\"Descripci\u00f3n de lo que realizariamos\",)\n    # Las categorias de tipo de Script\n    category = [\"discovery\"]\n    priority = 99\n\n    parameters = (\n            #(nombre parametro,valor,opcional,descripcion),\n    )\n\n    # Constructor se regogen los valores de los parametros.\n    def __init__(self):\n        BasePlugin.__init__(self)\n        # Recogemos los parametros self.kbase[\"prueba.parametro\"][0])\n\n    def validate(self, fuzzresult):\n        # Se realizara el analisis de si debe procesarse, lo m\u00e1s comun retorno codigo 200\n        # Cada llamada de FUZZ o solicitud llega y si retornamos True se llama a process\n        # fuzzresult  Es el resultado de la solicitud\n        # .code es el codigo de retorno\n        # .chars, .lines, .words, .url\n        # .content  Da el contenido de la pagina, que lo normal es analizarla en process.\n        return (fuzzresult.code == 200)\n\n    def process(self, fuzzresult):\n        # Se procesa cada vez que validate da un True\n        # self.queue_url(url)  Para encolar otra solicitud\n        print(\"Procesa el Script cada vez que validate() retorna True \", fuzzresult.content)<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Salidas<\/h2>\n\n\n\n<p>Hasta el momento hemos visto una simple salida estandar por consola que nos da el c\u00f3digo de respuesta, lineas de la pagina devuelta, las palabras y los caracteres.<\/p>\n\n\n\n<p>Tambi\u00e9n  nos da el conjunto de <em>payloads<\/em> (carga \u00fatil) utilizados para esa respuesta y que nos sera util para descubrir: usuario, clave, tipo de inyecci\u00f3n satisfactoria as\u00ed como directorios a observar o que nos den informaci\u00f3n del gestor de contenidos usados.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-8-1024x206.png\" alt=\"La imagen tiene un atributo ALT vac\u00edo; su nombre de archivo es image-8-1024x206.png\"\/><\/figure>\n\n\n\n<p>Pues tambi\u00e9n podremos volcar esta salida a un fichero de diferentes formas con \u00ab<em>-f&lt;fichero&gt;,&lt;tipo salida&gt;<\/em>\u00bb sino ponemos el tipo de salida realizaremos un volcado a fichero como el que aparece en consola. Para conocer los tipos de salida ejecutaremos el comendo <em>wfuzz -e printers<\/em>.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-13.png\" alt=\"\" class=\"wp-image-497\" width=\"275\" height=\"87\" srcset=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-13.png 459w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-13-300x95.png 300w\" sizes=\"auto, (max-width: 275px) 100vw, 275px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>csv<\/strong> Fichero de texto con cada uno de los campos separado por \u00ab,\u00bb de forma que lo podemos llevar facilmente a un fichero excell o similar.<\/li><li><strong>html<\/strong> Una bonita tabla en HTML con los enlaces activos para que podamos pinchar en ellos.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-14.png\" alt=\"\" class=\"wp-image-498\" width=\"427\" height=\"218\" srcset=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-14.png 965w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-14-300x153.png 300w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-14-768x392.png 768w\" sizes=\"auto, (max-width: 427px) 100vw, 427px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>json<\/strong> Fichero texto en formato JSON ( JavaScript Object Notation)<\/li><li> <strong>magictree<\/strong> Fichero en formato <a href=\"https:\/\/www.gremwell.com\/what_is_magictree\">magictree<\/a>, que es una herramienta para la gesti\u00f3n de datos en arbol que nos ayuda a concentrar los datos de nuestro an\u00e1lisis de pentesting para luego generar el informe final.<\/li><li><strong>raw<\/strong> la salida estandar que la enviamos a fichero.<\/li><\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p>Y con esto finalizamos la explicaci\u00f3n de esta vers\u00e1til herramienta de analisis web para pasar a la siguiente entrada con ejemplos concretos de su uso.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.pinguytaz.net\/index.php\/2019\/10\/18\/wfuzz-navaja-suiza-del-pentesting-web-1-3\/\">WFuzz (navaja suiza del pentesting WEB) 1\/3<\/a><\/li><li><a href=\"https:\/\/www.pinguytaz.net\/index.php\/2019\/10\/22\/wfuzz-navaja-suiza-del-pentesting-web-2-3\/\">WFuzz (navaja suiza del pentesting WEB<\/a>) 2\/3<\/li><li><a href=\"https:\/\/www.pinguytaz.net\/index.php\/2019\/10\/28\/wfuzz-navaja-suiza-del-pentesting-web-3-3\/\">WFuzz (navaja suiza del pentesting WEB) 3\/3<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Continuamos con opciones m\u00e1s avanzadas de \u00abwfuzz\u00bb pero que son bastante interesante para poder generar nuestros comandos para ayudarnos en nuestras tareas de pentesting y capturas de bandera. Filtros Aunque lo pongamos en esta segunda parte el filtrado de resultados es muy importante en ya que sino tendr\u00edamos mucha informaci\u00f3n que evitar\u00eda que vi\u00e9ramos la [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":504,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-container-style":"default","site-container-layout":"default","site-sidebar-layout":"default","disable-article-header":"default","disable-site-header":"default","disable-site-footer":"default","disable-content-area-spacing":"default","footnotes":""},"categories":[107,108],"tags":[],"class_list":["post-429","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sql-injections","category-xss"],"_links":{"self":[{"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/posts\/429","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/comments?post=429"}],"version-history":[{"count":11,"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/posts\/429\/revisions"}],"predecessor-version":[{"id":547,"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/posts\/429\/revisions\/547"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/media\/504"}],"wp:attachment":[{"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/media?parent=429"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/categories?post=429"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/tags?post=429"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}