{"id":10,"date":"2007-01-27T04:04:01","date_gmt":"2007-01-27T08:04:01","guid":{"rendered":"http:\/\/hackarandas.com\/blog\/2007\/01\/27\/la-chinche-del-ftp\/"},"modified":"2007-01-30T17:50:21","modified_gmt":"2007-01-30T21:50:21","slug":"la-chinche-del-ftp","status":"publish","type":"post","link":"https:\/\/hackarandas.com\/blog\/2007\/01\/27\/la-chinche-del-ftp\/","title":{"rendered":"La chinche del FTP."},"content":{"rendered":"<p><img decoding=\"async\" align=\"left\" alt=\"Chinche del FTP\" id=\"image9\" title=\"Chinche del FTP\" src=\"http:\/\/hackarandas.com\/blog\/wp-content\/uploads\/2007\/01\/chinche.miniatura.jpg\" \/>Imaginemos que eres <a target=\"_blank\" title=\"Sysadmin\" href=\"http:\/\/es.wikipedia.org\/wiki\/Administrador_de_sistemas\">sysadmin<\/a> de una empresa con una red <a target=\"_blank\" href=\"http:\/\/es.wikipedia.org\/wiki\/Direcci\u00c3\u00b3n_IP\">clase B<\/a>, tus becarios est\u00c3\u00a1n en ex\u00c3\u00a1menes finales, te acaba de llegar una notificaci\u00c3\u00b3n de la BSA amenaz\u00c3\u00a1ndote de una auditor\u00c3\u00ada de software y encima es cierre y contabilidad te tiene azorado con preguntas repetitivas de los usaurios (no, no est\u00c3\u00a1 mal escrito).<\/p>\n<p>Obvio no tienes el tiempo de revisar cuales son los espont\u00c3\u00a1neos con servicios arriba compartiendo <a target=\"_blank\" href=\"http:\/\/es.wikipedia.org\/wiki\/Mp3\">MP3s<\/a>, <a target=\"_blank\" href=\"http:\/\/es.wikipedia.org\/wiki\/Warez\">warez<\/a> y <a target=\"_blank\" href=\"http:\/\/es.wikipedia.org\/wiki\/Pr0n\">pr0n<\/a> (lo peor es que no te avisan por ser el sysadmin).<\/p>\n<p>Este peque\u00c3\u00b1o script en perl te permite automatizar la b\u00c3\u00basqueda de informaci\u00c3\u00b3n dentro de servidores <a target=\"_blank\" href=\"http:\/\/es.wikipedia.org\/wiki\/FTP\">FTP<\/a> sin tener que estar pegado al cliente.<\/p>\n<pre lang=\"perl\">#!\/usr\/bin\/perl -w\r\n#\r\n# Script hecho por Adri\u00c3\u00a1n Puente Z.\r\n# Script hecho para Sm4rt Security Services\r\n# Dudas y comentarios a:\r\n# adrian [AT] sm4rt.com\r\n# ch0ks [AT] hackarandas.com\r\n#\r\n# Este script recibe los par\u00c3\u00a1metros de usuario, contrase\u00c3\u00b1a\r\n# y host (IP o nombre) por l\u00c3\u00adnea de comando y se conecta\r\n# al host creando un archivo con el listado del directorio\r\n# raiz y muestra una salida con el estatus del proceso.\r\n\r\nuse Net::FTP;\r\n\r\nif ( $#ARGV != 2 )\r\n{\r\nprint \"Sint\u00c3\u00a1xis: ftpdirgrepable.pl [Usuario] [Password] [Host] \\\\n\";\r\nexit;\r\n}\r\n\r\nmy $username =  $ARGV[0];\r\nmy $password =  $ARGV[1];\r\nmy $host =  $ARGV[2];\r\nmy $directory=\"\/\";\r\nmy $newerr = 0;\r\n\r\npush @ERRORS, \"$host\\\\t$username\\\\t$password\";\r\n\r\n$ftp=Net::FTP->new($host,Timeout=>60) or $newerr=1;\r\npush @ERRORS, \"\\\\tno_conexion\" if $newerr;\r\nmyerr() if $newerr;\r\npush @ERRORS, \"\\\\tsi_conexion\";\r\n\r\n$ftp->login($username,$password) or $newerr=1;\r\npush @ERRORS, \"\\\\tno_login\" if $newerr;\r\n$ftp->quit if $newerr;\r\nmyerr() if $newerr;\r\npush @ERRORS, \"\\tsi_login\";\r\n\r\n@files=$ftp->dir or $newerr=1;\r\npush @ERRORS, \"\\\\tno_dir\" if $newerr;\r\nmyerr() if $newerr;\r\npush @ERRORS, \"\\\\tsi_dir\";\r\n\r\nif ( $newerr != 1 )\r\n{\r\nopen(DAT,\">ftpdir-\".$username.\":\".$password.\"_AT_\".$host.\".txt\") || die(\"Error al abrir el archivo\");\r\nforeach(@files) { print DAT \"$_n\"; }\r\nclose(DAT);\r\n}\r\n\r\n$ftp->quit;\r\nmyerr();\r\n\r\nsub myerr {\r\nprint @ERRORS;\r\nprint \"n\";\r\nexit 0;\r\n}<\/pre>\n<p>Esto lo podemos integrar a una salida de <a target=\"_blank\" href=\"http:\/\/es.wikipedia.org\/wiki\/Nmap\">Nmap<\/a> procesada de forma que s\u00c3\u00b3lo nos devuelva las IPs de las m\u00c3\u00a1quinas.Con este comando obtenemos una lista de IPs ordenaditas y sin repetirse con un puerto 21 (ftp) abierto a partir de un scaneo Nmap con una salida tipo  gnmap.<\/p>\n<pre lang=\"bash\">grep -e 'Ports:.*21\/open' *.gnmap | awk '{print $2}' | sort -n | uniq > lst.IPs.txt<\/pre>\n<p>Y para integrar nuestro script usamos el siguiente comando:<\/p>\n<pre lang=\"bash\">for i in `cat lst.IPs.txt` ; do  ftpdirgrepable.pl anonymous algo@algo.com ${i} ; done<\/pre>\n<p>Terminado el comando nos generar\u00c3\u00a1 varios archivos con el contenido del servidor y el directorio raiz. Para muestra un bot\u00c3\u00b3n:<\/p>\n<pre lang=\"bash\">-=:)> ftpdirgrepable.pl anonymous algo@algo.com kernel.org\r\nkernel.org      anonymous       algo@algo.com   si_conexion     si_login       si_dir\r\n-=:)> cat ftpdir-anonymous:algo@algo.com_AT_kernel.org.txt\r\ndrwxrwx---    2 536      528          4096 May 21  2001 for_mirrors_only\r\ndrwx------    2 0        0           16384 Oct 02  2005 lost+found\r\ndrwxrwsr-x    9 536      536          4096 Aug 21 23:21 pub\r\nlrwxrwxrwx    1 0        0               1 Oct 03  2005 usr -> .\r\nlrwxrwxrwx    1 0        0              10 Oct 03  2005 welcome.msg -> pub\/README<\/pre>\n<p>Si vemos bien podemos observar que tiene una salida que nos permite aplicar un filtro con <em>grep <\/em>y al estar separado por <em>tabs<\/em> lo podemos redirigir a un archivo <em>csv<\/em> y abrirlo en <em>excel<\/em>.<\/p>\n<p>A mi me sirvi\u00c3\u00b3 mucho en el \u00c3\u00baltimo <em>pentest<\/em>, s\u00c3\u00b3lo hubo que descartar los servidores cuyo contenido ten\u00c3\u00ada un directorio <em>JetDirect<\/em> para descartar las impresoras. Puedes descargarlo de <a target=\"_blank\" title=\"c0d3\" href=\"http:\/\/hackarandas.com\/blog\/c0d3\/\">aqui<\/a>.<\/p>\n<div align=\"center\">\n<address>Adri\u00c3\u00a1n Puente Z.<\/address>\n<\/div>\n\n<div style=\"font-size: 0px; height: 0px; line-height: 0px; margin: 0; padding: 0; clear: both;\"><\/div>","protected":false},"excerpt":{"rendered":"<p>Imaginemos que eres sysadmin de una empresa con una red clase B, tus becarios est\u00c3\u00a1n en ex\u00c3\u00a1menes finales, te acaba de llegar una notificaci\u00c3\u00b3n de la BSA amenaz\u00c3\u00a1ndote de una auditor\u00c3\u00ada de software y encima es cierre y contabilidad te &hellip; <a href=\"https:\/\/hackarandas.com\/blog\/2007\/01\/27\/la-chinche-del-ftp\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,4],"tags":[],"class_list":["post-10","post","type-post","status-publish","format-standard","hentry","category-code","category-security"],"_links":{"self":[{"href":"https:\/\/hackarandas.com\/blog\/wp-json\/wp\/v2\/posts\/10","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hackarandas.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hackarandas.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hackarandas.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hackarandas.com\/blog\/wp-json\/wp\/v2\/comments?post=10"}],"version-history":[{"count":0,"href":"https:\/\/hackarandas.com\/blog\/wp-json\/wp\/v2\/posts\/10\/revisions"}],"wp:attachment":[{"href":"https:\/\/hackarandas.com\/blog\/wp-json\/wp\/v2\/media?parent=10"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hackarandas.com\/blog\/wp-json\/wp\/v2\/categories?post=10"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hackarandas.com\/blog\/wp-json\/wp\/v2\/tags?post=10"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}