{"id":12945,"date":"2022-01-31T09:56:51","date_gmt":"2022-01-31T08:56:51","guid":{"rendered":"https:\/\/inlab.fib.upc.edu\/uncategorized-ca\/pentesting-que-es-y-cual-es-su-procedimiento\/2022\/"},"modified":"2023-05-24T09:20:56","modified_gmt":"2023-05-24T08:20:56","slug":"pentesting-que-es-y-cual-es-su-procedimiento","status":"publish","type":"post","link":"https:\/\/inlab.fib.upc.edu\/es\/noticias\/pentesting-que-es-y-cual-es-su-procedimiento","title":{"rendered":"Pentesting \u2013 Qu\u00e9 es y cu\u00e1l es su procedimiento"},"content":{"rendered":"<p class=\"rtejustify\">Con el objetivo de mitigar posibles fallos en diferentes entornos o sistemas de la red, desde los \u00faltimos a\u00f1os, las empresas se han visto obligadas a realizar pruebas peri\u00f3dicamente a sus propias infraestructuras para corregir anomal\u00edas y agujeros que pongan en peligro la integridad, la disponibilidad la confidencialidad de sus activos. Este conjunto de pruebas es lo que se llama <em>pentesting<\/em> \u201c<em>penetration testing<\/em>\u201d.<\/p>\n<p class=\"rtejustify\">La filosof\u00eda del <em>pentesting<\/em> se basa en identificar las vulnerabilidades y los puntos d\u00e9biles de un sistema antes de que lo hagan entidades de terceros con intenciones maliciosas.<\/p>\n<p class=\"rtejustify\">Pero, \u00bfc\u00f3mo se hace un <em>pentest<\/em>? Esta pregunta no tiene una respuesta aplicable para todos los casos, puesto que en cada <em>pentest<\/em> se trabaja en un ambiente diferente (infraestructura, software&#8230;). Sin embargo, s\u00ed podemos extraer una metodolog\u00eda aplicable en la gran parte de <em>pentests<\/em>.<\/p>\n<p class=\"rtejustify\">Esta metodolog\u00eda se explica a continuaci\u00f3n con un ejemplo basado en un servidor propiedad de HackTheBox, una organizaci\u00f3n que dise\u00f1a m\u00e1quinas muy realistas, con el objetivo de formar a personas en el \u00e1mbito de la ciberseguridad. Cabe remarcar que en ning\u00fan momento se ha querido realizar una gu\u00eda de c\u00f3mo completar esta m\u00e1quina, se han omitido ciertos pasos importantes para centrarse en el proceso general del <em>pentest<\/em>.<\/p>\n<h2>Pre-Engagement Interactions&nbsp;<\/h2>\n<p class=\"rtejustify\">En esta primera fase de un <em>pentest<\/em> el cliente indica cu\u00e1les son los objetivos y el \u00e1rea de ataque. Dependiendo de la informaci\u00f3n recibida por parte del cliente, se tratar\u00e1 de un <em>pentest<\/em> de caja negra (si no se conoce nada del sistema al que se atacar\u00e1), un pentest de caja blanca (si se conoce todo sobre el sistema que se atacar\u00e1) o un pentest de caja gris (si s\u00f3lo se conocen algunos datos sobre el sistema a atacar).<\/p>\n<h2>Information Gathering<\/h2>\n<p class=\"rtejustify\">Proceso que se basa en obtener la mayor informaci\u00f3n posible para poder generar un perfil preciso del objetivo.<\/p>\n<p>A continuaci\u00f3n, se muestran ejemplos de una de las herramientas m\u00e1s utilizadas durante esta fase: Nmap, que es un esc\u00e1ner de puertos con muchas funcionalidades.<\/p>\n<pre class=\"rtejustify\">\r\nsudo nmap -p- &lt;IP&gt; <span style=\"font-family: sans-serif, Arial, Verdana, &quot;Trebuchet MS&quot;;\">orden que lista los puertos abiertos mediante TCP en un sistema.<\/span><\/pre>\n<p class=\"rtecenter\"><img fetchpriority=\"high\" decoding=\"async\" class=\" size-full wp-image-12920\" alt=\"\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-1.png\" style=\"width: 887px; height: 310px;\" width=\"887\" height=\"310\" srcset=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-1.png 887w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-1-300x105.png 300w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-1-768x268.png 768w\" sizes=\"(max-width: 887px) 100vw, 887px\" \/><\/p>\n<p class=\"rtejustify\">Se muestra que los puertos 22 y 80 est\u00e1n abiertos mediante TCP. Adem\u00e1s nos indica qu\u00e9 servicio suele acudir a cada puerto.<\/p>\n<p class=\"rtejustify\">A continuaci\u00f3n, un ejemplo para escanear los puertos abiertos del sistema que utilizan el protocolo UDP.<\/p>\n<pre>\r\nsudo nmap -sU -oN nmap\/udp.nmap &lt;IP&gt;\u200b<\/pre>\n<p class=\"rtecenter\"><img decoding=\"async\" class=\" size-full wp-image-12923\" alt=\"\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-2.png\" style=\"width: 887px; height: 200px;\" width=\"887\" height=\"200\" srcset=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-2.png 887w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-2-300x68.png 300w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-2-768x173.png 768w\" sizes=\"(max-width: 887px) 100vw, 887px\" \/><\/p>\n<p class=\"rtejustify\">Podemos observar que los puertos 161 y 3389 est\u00e1n abiertos, como dato interesante el puerto 161 maneja SNMP.<\/p>\n<p>En este caso, se prioriza la investigaci\u00f3n del puerto 161, un puerto cr\u00edtico que no deber\u00eda ser accesible desde el exterior. Debido a una mala configuraci\u00f3n, se pueden obtener unas credenciales que nos permiten saber que el servidor utiliza una versi\u00f3n de Pandora en local en el puerto 80, a la que se puede acceder redirigiendo los puertos.<\/p>\n<p class=\"rtecenter\"><img decoding=\"async\" class=\" size-full wp-image-12926\" alt=\"\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-3.png\" style=\"width: 887px; height: 400px;\" width=\"887\" height=\"400\" srcset=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-3.png 887w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-3-300x135.png 300w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-3-768x346.png 768w\" sizes=\"(max-width: 887px) 100vw, 887px\" \/><\/p>\n<p class=\"rtejustify\">En la parte inferior de la p\u00e1gina se ve que la versi\u00f3n de Pandora es la v7.0NG.742_FIX_PERL2020, una versi\u00f3n con vulnerabilidades conocidas.<\/p>\n<h2>Exploiting<\/h2>\n<p class=\"rtejustify\">Esta fase se basa en explotar las vulnerabilidades encontradas previamente y, en caso de encontrar m\u00e1s y ver hasta d\u00f3nde se puede llegar.<\/p>\n<p>Dentro de las vulnerabilidades conocidas de la versi\u00f3n v7.0NG.742_FIX_PERL2020 de Pandora, existe una inyecci\u00f3n de SQL, documentada en Mitre (CVE-2021-32099).<\/p>\n<p>Una inyecci\u00f3n SQL es una vulnerabilidad que se basa en inyectar c\u00f3digo SQL en un campo determinado para conseguir llamadas arbitrarias a una base de datos. Esto se debe a que no se comprueban correctamente los datos que introduce un usuario en un campo determinado.<\/p>\n<p>As\u00ed pues, obtenemos las credenciales del formulario necesarias enviando una petici\u00f3n POST a la ubicaci\u00f3n mencionada en la descripci\u00f3n del CVE con un par\u00e1metro session_id malicioso, que nos permite saltarnos la autenticaci\u00f3n del servidor:<\/p>\n<pre class=\"rtejustify\">\r\nsession_id=666' UNION SELECT 1,2,data FROM tsessions_php WHERE data LIKE '%user%' -- xxx \u200b<\/pre>\n<p class=\"rtecenter\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-12929\" alt=\"\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-4.png\" style=\"width: 885px; height: 370px;\" width=\"885\" height=\"370\" srcset=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-4.png 885w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-4-300x125.png 300w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-4-768x321.png 768w\" sizes=\"(max-width: 885px) 100vw, 885px\" \/><\/p>\n<p class=\"rtejustify\">Una vez dentro de la interfaz explotaremos otra vulnerabilidad, tambi\u00e9n documentada en Mitre (CVE-2020-13851), un RCE (<em>Remote Code Execution<\/em>), que permite ejecutar comandos de forma remota. Se utiliza esta vulnerabilidad para generar una Reverse Shell y obtener acceso al sistema como usuario raso.<\/p>\n<p class=\"rtecenter\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-12932\" alt=\"\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-5.png\" style=\"width: 887px; height: 414px;\" width=\"887\" height=\"414\" srcset=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-5.png 887w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-5-300x140.png 300w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-5-768x358.png 768w\" sizes=\"(max-width: 887px) 100vw, 887px\" \/><\/p>\n<p class=\"rtecenter\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-12935\" alt=\"\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-6.png\" style=\"width: 887px; height: 227px;\" width=\"887\" height=\"227\" srcset=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-6.png 887w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-6-300x77.png 300w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-6-768x197.png 768w\" sizes=\"(max-width: 887px) 100vw, 887px\" \/><\/p>\n<p class=\"rtejustify\">Una vez se ha conseguido acceder al sistema, mediante un script de enumeraci\u00f3n llamado linPEAS, se puede observar lo siguiente:<\/p>\n<p class=\"rtecenter\"><span style=\"text-align: justify;\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-12938\" alt=\"\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-7.png\" style=\"width: 885px; height: 181px;\" width=\"885\" height=\"181\" srcset=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-7.png 885w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-7-300x61.png 300w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-7-768x157.png 768w\" sizes=\"(max-width: 885px) 100vw, 885px\" \/><\/span><\/p>\n<p class=\"rtejustify\">En la \u00faltima l\u00ednea se puede ver informaci\u00f3n muy interesante, un archivo que tiene permisos de SUID, y que tambi\u00e9n puede ser ejecutado por el usuario que hemos conseguido.<\/p>\n<p><span style=\"text-align: justify;\">Un binario con permisos SUID puede cambiar sus privilegios por los del propietario del archivo. Por tanto, si lo ejecutamos con el usuario que hemos conseguido anteriormente, el binario podr\u00e1 obtener permisos de administrador, ya que root es el propietario del archivo.<\/span><\/p>\n<p><span style=\"text-align: justify;\">Al examinar las llamadas de sistema que ejecuta, se puede ver que se llama el binario tar sin el path absoluto. Esto significa que si se modifica la variable de entorno $PATH y se crea un archivo llamado \u201ctar\u201d, se podr\u00e1 ejecutar este archivo con privilegios de administrador.<\/span><\/p>\n<p><span style=\"text-align: justify;\">Los siguientes comandos hacen esto mismo y ejecutan el binario:<\/span><\/p>\n<pre>\r\n<span style=\"text-align: justify;\">export PATH=.:$PATH<\/span>\r\n\r\n<span style=\"text-align: justify;\">echo '\/bin\/bash' &gt; tar<\/span>\r\n\r\n<span style=\"text-align: justify;\">chmod +x tar<\/span>\r\n\r\n<span style=\"text-align: justify;\">\/usr\/bin\/pandora_backup<\/span><\/pre>\n<p class=\"rtecenter\"><span style=\"text-align: justify;\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-12941\" alt=\"\" src=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-8.png\" style=\"width: 887px; height: 212px;\" width=\"887\" height=\"212\" srcset=\"https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-8.png 887w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-8-300x72.png 300w, https:\/\/inlab.fib.upc.edu\/wp-content\/uploads\/2022\/01\/pentest-8-768x184.png 768w\" sizes=\"(max-width: 887px) 100vw, 887px\" \/><\/span><\/p>\n<p class=\"rtejustify\">\u00c9ste es un ejemplo de escalado de privilegios, obteniendo permisos de administrador y, en consecuencia, el control total del servidor.<\/p>\n<p><span style=\"text-align: justify;\">Por \u00faltimo, es necesario aclarar que un <em>pentest<\/em> no se basa \u00fanicamente en obtener acceso a una m\u00e1quina, sino que consiste en intentar encontrar todas las vulnerabilidades o malas configuraciones que pueden poner en peligro la seguridad e integridad de un servicio.<\/span><\/p>\n<h2 class=\"rtejustify\"><span style=\"text-align: justify;\">Reporting<\/span><\/h2>\n<p class=\"rtejustify\">Esta fase final, se basa en agrupar todo lo que se ha encontrado y documentado para poder explicarlo todo de manera clara y fija. El documento final debe tener una recopilaci\u00f3n de todas las vulnerabilidades encontradas, las respectivas mitigaciones y la manera en que las primeras se han encontrado. De esta forma, a la hora de que los desarrolladores tengan que arreglar las vulnerabilidades, ser\u00e1n capaces de replicarlas para asegurarse de que se han resuelto correctamente.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Con el objetivo de mitigar posibles fallos en diferentes entornos o sistemas de la red, desde los \u00faltimos a\u00f1os, las empresas se han visto obligadas a realizar pruebas peri\u00f3dicamente a sus propias infraestructuras para corregir anomal\u00edas y agujeros que pongan en peligro la integridad, la disponibilidad la confidencialidad de sus activos. Este conjunto de pruebas [&hellip;]<\/p>\n","protected":false},"author":594,"featured_media":12917,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[495],"tags":[],"experteses":[],"class_list":["post-12945","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-noticias"],"acf":[],"_links":{"self":[{"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/posts\/12945","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/users\/594"}],"replies":[{"embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/comments?post=12945"}],"version-history":[{"count":1,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/posts\/12945\/revisions"}],"predecessor-version":[{"id":20836,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/posts\/12945\/revisions\/20836"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/media\/12917"}],"wp:attachment":[{"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/media?parent=12945"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/categories?post=12945"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/tags?post=12945"},{"taxonomy":"experteses","embeddable":true,"href":"https:\/\/inlab.fib.upc.edu\/es\/wp-json\/wp\/v2\/experteses?post=12945"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}