{"id":505,"date":"2019-10-28T00:21:39","date_gmt":"2019-10-27T23:21:39","guid":{"rendered":"https:\/\/www.pinguytaz.net\/?p=505"},"modified":"2019-11-11T13:42:24","modified_gmt":"2019-11-11T12:42:24","slug":"wfuzz-navaja-suiza-del-pentesting-web-3-3","status":"publish","type":"post","link":"https:\/\/www.pinguytaz.net\/index.php\/2019\/10\/28\/wfuzz-navaja-suiza-del-pentesting-web-3-3\/","title":{"rendered":"WFuzz (navaja suiza del pentesting WEB) 3\/3"},"content":{"rendered":"\n<p>Y toca la hora de los ejemplos para tener una gu\u00eda de como abordar diferentes problemas a solucionar con <em>Wfuzz<\/em>. Claro esta que es solo una guia y deberemos adaptarlos a cada uno de nuestros casos a resolver.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Clave y usuarios mediante fuerza bruta<\/h4>\n\n\n\n<p>Para localizar claves y usuarios tendremos diferentes diccionarios incluidos en la herramienta <em>Wfuzz<\/em> que nos pueden ayudar:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Nombres de usuarios comunes<ul><li>\/usr\/share\/wfuzz\/wordlist\/others\/names.txt<\/li><\/ul><\/li><li>Claves t\u00edpicas<ul><li>\/usr\/share\/wfuzz\/wordlist\/others\/common_pass.txt<\/li><li>\/usr\/share\/wfuzz\/wordlist\/general\/common.txt<\/li><li>\/usr\/share\/wfuzz\/wordlist\/general\/extensions_common.txt<\/li><li>\/usr\/share\/wfuzz\/wordlist\/general\/medium.txt<\/li><li>\/usr\/share\/wfuzz\/wordlist\/general\/spanish.txt<\/li><\/ul><\/li><\/ul>\n\n\n\n<p>Y tambi\u00e9n nuestros propios diccionarios de usuarios comunes y  claves, como en la captura de bandera de <a href=\"https:\/\/www.pinguytaz.net\/index.php\/2019\/07\/30\/resolviendo-ctf-mr-robot\/\">Mr.Robot<\/a> que se localizo el fichero \u00abfsocity.dic\u00bb. Nuestro ejemplo sera localizar en esta maquina los usuarios y claves, ya que se trata de un <strong>WordPress<\/strong> y nos servir\u00e1 este ejemplo para muchas maquinas cambiando los diccionarios.<\/p>\n\n\n\n<p>Lo primero que realizar\u00edamos en la pagina es localizar el formulario para obtener informaci\u00f3n de los campos a rellenar as\u00ed como el m\u00e9todo POST o GET.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"248\" src=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-15-1024x248.png\" alt=\"\" class=\"wp-image-512\" srcset=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-15-1024x248.png 1024w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-15-300x73.png 300w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-15-768x186.png 768w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-15.png 1296w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Vemos que es un formulario tipo POST (por lo que usaremos la opci\u00f3n -d) los campos a rellenar son \u00ablog\u00bb y \u00abpwd\u00bb y la acci\u00f3n es \u00abwp-login.php\u00bb<\/p>\n\n\n\n<p>Esto esta bien pero sino filtramos tendremos excesiva informaci\u00f3n por lo tanto lo mejor es ver que nos da al meter a mano un usuario casi improbable igual que su clave \u00abp\/nada\u00bb y analizamos la p\u00e1gina.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-17.png\" alt=\"\" class=\"wp-image-514\" width=\"225\" height=\"175\" srcset=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-17.png 336w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-17-300x233.png 300w\" sizes=\"auto, (max-width: 225px) 100vw, 225px\" \/><\/figure><\/div>\n\n\n\n<p>Vemos que nos marca claramente que es un usuario incorrecto con \u00abInvalid username\u00bb por lo tanto el filtro sera ocultar los resultados que encuentren esa cadena (&#8211;hs) para que de esta forma solo visualicemos los usuarios encontrados.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wfuzz -c -z file,fsocity.dic --hs \"Invalid username\" -d \"log=FUZZ&amp;pwd=nada\" http:\/\/192.168.56.101\/wp-login.php<\/code><\/pre>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-18.png\" alt=\"\" class=\"wp-image-518\" width=\"303\" height=\"100\" srcset=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-18.png 606w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-18-300x99.png 300w\" sizes=\"auto, (max-width: 303px) 100vw, 303px\" \/><\/figure><\/div>\n\n\n\n<p>En el momento que tenemos ya los usuarios, podemos ir a buscar las claves. Ejecutaremos el formulario para ver el otro filtro a realizar.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-19.png\" alt=\"\" class=\"wp-image-520\" width=\"232\" height=\"145\" srcset=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-19.png 341w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-19-300x187.png 300w\" sizes=\"auto, (max-width: 232px) 100vw, 232px\" \/><\/figure><\/div>\n\n\n\n<p>En este caso ocultaremos los que den error de clave \u00abThe password\u00bb ya que el usuario sabemos que sera correcto y usaremos dos <em>payload<\/em> uno con los usuarios detectados de tipo lista sino son muchos o con los que tienen nombre de inter\u00e9s (en nuestro caso solo buscaremos la clave de Elliot ya que sabemos que wordpress usa indistintamente las may\u00fasculas y las min\u00fasculas en el usuario.) y el otro <em>payload<\/em> con el fichero de posibles claves que en nuestro caso es el mismo que antes.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wfuzz -c -z list,Elliot -z file,fsocity.dic --hs \"The password\" -d \"log=FUZZ&amp;pwd=FUZ2Z\" http:\/\/192.168.56.101\/wp-login.php<\/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-21.png\" alt=\"\" class=\"wp-image-533\" width=\"378\" height=\"61\" srcset=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-21.png 672w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-21-300x49.png 300w\" sizes=\"auto, (max-width: 378px) 100vw, 378px\" \/><\/figure>\n\n\n\n<p>Tambi\u00e9n podr\u00edamos haber echo todo con un solo paso, pero deb\u00edamos haber controlado los dos scripts y ademas me suele gustar ir paso a paso.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Injection-SQL<\/h4>\n\n\n\n<p>AL igual que antes tendremos que analizar la p\u00e1gina para conocer los campos a rellenar del formulario, esto es com\u00fan en todos los ejemplo por lo que solo indicaremos los campos y m\u00e9todos a utilizar, ya que el procedimiento es igual en todos igual que el localizar cadenas claves.<\/p>\n\n\n\n<p>Para los ataques de injection-SQL tenemos varios ficheros de diccionario, ademas de los que nos podamos crear.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\/usr\/share\/wordlists\/wfuzz\/vulns\/sql_inj.txt<\/li><li>\/usr\/share\/wordlists\/wfuzz\/Injections\/SQL.txt<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>wfuzz -c -z file,SQL.txt -d \"uname=FUZZ&amp;psw=FUZZ\" --hc 404 --hs \"Administration Login\" http:\/\/192.168.56.103\/index.php<\/code><\/pre>\n\n\n\n<p>El ejemplos el primero es un ataque injection-SQL con POST, como vemos ocultamos las paginas de error (404) y como vimos que si el login no es correcto nos retorna a la p\u00e1gina origen tambi\u00e9n ocultamos ese string \u00abAdministration Login\u00bb y cuando este no aparece es que hemos logrado cambiar de p\u00e1gina es decir el ataque tiene \u00e9xito.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-20.png\" alt=\"\" class=\"wp-image-527\" width=\"448\" height=\"212\" srcset=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-20.png 707w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-20-300x143.png 300w\" sizes=\"auto, (max-width: 448px) 100vw, 448px\" \/><\/figure><\/div>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>NOTA: <\/strong> Elecci\u00f3n String.<\/p><cite><br>Deberemos intentar asegurarnos, ya que no conocemos el contenido de la  p\u00e1gina respuesta, que el texto a elegido no esta contenido en la p\u00e1gina de respuesta para evitar que a string correctos no diga que no. Ante la duda tambi\u00e9n podremos realizar filtros por el tama\u00f1o de la p\u00e1gina (palabras, caracteres lineas)<br><\/cite><\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading\">XSS<\/h4>\n\n\n\n<p>En este caso al igual que siempre podemos generar nuestros propios ficheros o alguno de los que se encuentra por Internet  o utilizar los que disponemos en la herramienta como:<\/p>\n\n\n\n<p> \/usr\/share\/wordlists\/wfuzz\/Injections\/XSS.txt<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wfuzz -c -z file,XSS.txt --filter content~FUZZ -Z http:\/\/192.168.56.109\/xss\/example1.php?name=FUZZ\n\nwfuzz -c -z file,XSS.txt,urlencode -z file,XSS.txt -m zip --filter content~FUZ2Z -Z http:\/\/192.168.56.109\/xss\/example7.php?name=FUZZ<\/code><\/pre>\n\n\n\n<p>La opci\u00f3n -Z nos permite ignorar errores que se suelen producir por los c\u00f3digos, que suelen ser javaScript, se produce al invocar la URL.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-22.png\" alt=\"\" class=\"wp-image-536\" width=\"532\" height=\"169\" srcset=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-22.png 960w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-22-300x96.png 300w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-22-768x245.png 768w\" sizes=\"auto, (max-width: 532px) 100vw, 532px\" \/><\/figure><\/div>\n\n\n\n<p>Filtramos para que solo se muestre las respuesta que mete al completo el Payload, ya que la p\u00e1gina podr\u00eda filtrar el Script y seria un XSS no valido aunque de una pagina correcta. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-23-1024x185.png\" alt=\"\" class=\"wp-image-539\" width=\"542\" height=\"97\" srcset=\"https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-23-1024x185.png 1024w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-23-300x54.png 300w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-23-768x139.png 768w, https:\/\/www.pinguytaz.net\/wp-content\/uploads\/2019\/10\/image-23.png 1209w\" sizes=\"auto, (max-width: 542px) 100vw, 542px\" \/><\/figure><\/div>\n\n\n\n<p>El segundo ejemplo codificamos \u00abFUZZ\u00bb que es el c\u00f3digo a inyectar para que el filtro no lo localice y comprobamos que tiene la respuesta del c\u00f3digo decodificado (FUZ2Z) y se utiliza un iterador \u00abzip\u00bb para que sea uno a uno. Este ejemplo sin codificar no retorna ning\u00fan resultado y en cambio con la codificaci\u00f3n obtenemos 4 resultados.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Ficheros vulnerables y Metodos vulnerables.<\/h4>\n\n\n\n<p>Como no <em>Wfuzz<\/em> nos permite localizar ficheros vulnerables, y tambi\u00e9n disponemos de ficheros para ello, as\u00ed como poder detectar los <a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Methods\">m\u00e9todos soportados por el servidor<\/a> y que despu\u00e9s podremos utilizar para buscar vulnerabilidades.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wfuzz -t 1 --sc 200 -z file,http_methods.txt -X FUZZ http:\/\/192.168.56.109\/<\/code><\/pre>\n\n\n\n<p>Ficheros y directorios vulnerables:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\/usr\/share\/wordlists\/wfuzz\/general\/admin-panels.txt    (Nos permite localizar paneles de control)<\/li><li>\/usr\/share\/wordlists\/wfuzz\/vulns<ul><li>apache.txt   <\/li><li>cgis.txt<\/li><li>dirTraversal-nix.txt  <\/li><\/ul><\/li><\/ul>\n\n\n\n<p>Esto es solo un ejemplo de algunas de las cosas que podemos realizar con wfuzz.<\/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>Y toca la hora de los ejemplos para tener una gu\u00eda de como abordar diferentes problemas a solucionar con Wfuzz. Claro esta que es solo una guia y deberemos adaptarlos a cada uno de nuestros casos a resolver. Clave y usuarios mediante fuerza bruta Para localizar claves y usuarios tendremos diferentes diccionarios incluidos en la [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":537,"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":[75,83,16,107,73,108],"tags":[113,116,115,109,114],"class_list":["post-505","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-apache","category-pentesting-hacking","category-seguridad","category-sql-injections","category-web","category-xss","tag-fuerza-bruta","tag-http","tag-sql-injection","tag-wfuzz","tag-xss"],"_links":{"self":[{"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/posts\/505","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=505"}],"version-history":[{"count":22,"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/posts\/505\/revisions"}],"predecessor-version":[{"id":548,"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/posts\/505\/revisions\/548"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/media\/537"}],"wp:attachment":[{"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/media?parent=505"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/categories?post=505"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/tags?post=505"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}