<?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; fpd</title>
	<atom:link href="http://blog.zerial.org/tag/fpd/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>Secureless.org: Repositorio de vulnerabilidades web</title>
		<link>http://blog.zerial.org/seguridad/secureless-org-repositorio-de-vulnerabilidades-web/</link>
		<comments>http://blog.zerial.org/seguridad/secureless-org-repositorio-de-vulnerabilidades-web/#comments</comments>
		<pubDate>Mon, 25 Apr 2011 19:41:54 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Interes general]]></category>
		<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Sitios Vulnerables]]></category>
		<category><![CDATA[fpd]]></category>
		<category><![CDATA[hacklab]]></category>
		<category><![CDATA[inseguridad]]></category>
		<category><![CDATA[secureless]]></category>
		<category><![CDATA[sitios vulnerables]]></category>
		<category><![CDATA[sqli]]></category>
		<category><![CDATA[vulnerabilidades]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2172</guid>
		<description><![CDATA[Como proyecto del hacklab, nace &#8220;Secureless&#8220;, un sitio web que busca centralizar y almacenar una base de datos de sitios web vulnerables con las tipicas vulnerabilidades como XSS, SQL-I, etc. Secureless nace simplemente de la necesidad de investigar y aprender aun mas sobre este tipo de vulnerabilidades y seguridad en la web. Aunque a muchos [...]]]></description>
			<content:encoded><![CDATA[<p>Como proyecto del <a href="http://hacklab.cl">hacklab</a>, nace &#8220;<a href="http://secureless.org">Secureless</a>&#8220;, un sitio web que busca centralizar y almacenar una base de datos de sitios web vulnerables con las <em>tipicas</em> vulnerabilidades como XSS, SQL-I, etc.</p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2011/04/sless.png"><img class="aligncenter size-full wp-image-2179" title="Secureless - http://secureless.org" src="http://blog.zerial.org/wp-content/uploads/2011/04/sless.png" alt="" width="522" height="541" /></a></p>
<p><a href="http://secureless.org">Secureless</a> nace simplemente de la necesidad de investigar y aprender aun mas sobre este tipo de vulnerabilidades y seguridad en la web. Aunque a muchos no les parezca lo correcto, con el tiempo nos hemos dado cuenta que las fallas se corrigen mucho mas rapido cuando son publicadas y creemos que de esta forma podemos ayudar a que los sitios sean más seguros.</p>
<p>Lo que buscamos en esta version es explorar un poco más en el mundo de la (in) seguridad en aplicaciones web. En esta primera version agregamos la posibilidad de que la gente pueda reportarnos mediante un mensaje cifrado sitios vulnerables y de esta forma poder contribuir de forma &#8220;segura&#8221; a este proyecto, aunque la mayoría (99%) de los sitios publicados son producto de nuestra propia invesgitacion, agradecemos a quienes nos apoyan y nos envian información al respecto.</p>
<p><span id="more-2172"></span></p>
<p>Como primera anecdota, tuvimos el caso de NIC Chile quien fue notificado al mismo tiempo de <a href="http://www.secureless.org/vulnerability/1347/">publicar la vulnerabilidad en Secureless</a>, quienes resolvieron el problema en menos de 20 minutos. La vulnerabilidad que afectaba a NIC Chile era de tipo XSS en uno de sus scripts cgi.</p>
<p>Ya estamos planificando noches de &#8220;hacking&#8221; para dedicarnos a seguir publicando sitios importantes con fallas de seguridad.</p>
<p><strong>Links:</strong></p>
<p>- <a href="http://twitter.com/secureless">Twitter @secureless</a></p>
<p>- <a href="http://secureless.org">Secureless.org</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%2Fsecureless-org-repositorio-de-vulnerabilidades-web%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/secureless-org-repositorio-de-vulnerabilidades-web/"></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/secureless-org-repositorio-de-vulnerabilidades-web/"  data-text="Secureless.org: Repositorio de vulnerabilidades web" 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/secureless-org-repositorio-de-vulnerabilidades-web/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<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>
	</channel>
</rss>

