<?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>WEBlog de Félix Aimé &#187; post</title>
	<atom:link href="http://blog.felix-aime.fr/tag/post/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.felix-aime.fr</link>
	<description>{ OpenSource Intelligence, Information Security, Information Warfare }</description>
	<lastBuildDate>Mon, 06 Feb 2012 12:39:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Requête POST en cross-domain &#171;&#160;presque-sans&#160;&#187; JavaScript.</title>
		<link>http://blog.felix-aime.fr/securite-des-systemes-dinformation/bypasser-noscript-pour-faire-une-requete-post-sans-javascript/</link>
		<comments>http://blog.felix-aime.fr/securite-des-systemes-dinformation/bypasser-noscript-pour-faire-une-requete-post-sans-javascript/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 16:13:02 +0000</pubDate>
		<dc:creator>feu</dc:creator>
				<category><![CDATA[Sécurité des systèmes d'information]]></category>
		<category><![CDATA[Tips&tricks]]></category>
		<category><![CDATA[addon]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Bypass]]></category>
		<category><![CDATA[csrf]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[noscript]]></category>
		<category><![CDATA[post]]></category>

		<guid isPermaLink="false">http://blog.felix-aime.fr/?p=63</guid>
		<description><![CDATA[Il y a encore quelques mois, on me disait qu&#8217;il était impossible de réaliser une requête POST automatiquement sans passer par de l&#8217;Ajax ou un Framework javascript tiers. (notez que celles en GET nécessitaient simplement un appel vers la page demandée par l&#8217;intermédiaire d&#8217;une image mal formée, un embed, ou une feuille de style etc.)
Cette [...]]]></description>
			<content:encoded><![CDATA[<p>Il y a encore quelques mois, on me disait qu&#8217;il était <strong>impossible</strong> de réaliser une requête POST automatiquement sans passer par de l&#8217;<strong>Ajax</strong> ou un Framework javascript tiers. (notez que celles en GET nécessitaient simplement un appel vers la page demandée par l&#8217;intermédiaire d&#8217;une image mal formée, un embed, ou une feuille de style etc.)</p>
<p>Cette histoire de POST pouvait poser quelques problèmes lors de lorsqu&#8217;un script appelait des variables en POST et que PHP était configuré sans les <em>register_globals</em> (donc à off). Ainsi, nous devions forcément passer par une requête POST afin de faire passer les variables, cela incluait alors, dans le cadre d&#8217;attaques <strong>CSRF</strong> l&#8217;utilisation d&#8217;ajax dans une page afin de perpétrer l&#8217;attaque et d&#8217;envoyer les données au script.</p>
<p>Gros problème, les navigateurs empêchent les requêtes ajax POST en cross domain pour des raisons évidentes de sécurité. Et puis, j&#8217;ai eu une idée, pourquoi ne pas passer par un formulaire HTML pur et de le valider sur un évènement ? Là était la réponse ! =) Il suffit simplement de réaliser une page contenant un formulaire et une image qui ne se charge pas contenant l&#8217;évènement (non DOM) onerror , par exemple, quelque chose dans ce genre :</p>
<pre>&lt;form id="form" action="[vers la page vuln aux CSRF]" method="POST"&gt;
&lt;input name="test1" type="hidden" value="valeur test 1" /&gt;
&lt;input name="test2" type="hidden" value="valeur test 2" /&gt;
&lt;/form&gt;
&lt;img src="xxxx" onerror="form.submit()" /&gt;</pre>
<p>Et hop, vous avez votre requête POST, cross domain sans utiliser de l&#8217;Ajax =) Vous voulez voir ce que cela donne ? <a href="http://www.felix-aime.fr/projets/securite/bypass_post_noscript/badaboum.html">Allez par ici -&gt; [ -]</a></p>
<p>Pour conclure, nous pouvons dire que le code est simple, très simple, voir même trop simple. Nous pourrions un peu le customiser afin que l&#8217;envoi des données soit invisible pour l&#8217;utilisateur, mais je reste dans le cadre d&#8217;un PoC, donc pas de choses très méchantes ici.</p>
<p>De plus, cette technique reste assez limitée dans l&#8217;efficacité qu&#8217;aurai pu avoir une requête à dose de javascript, car cela permet de faire autre chose bien plus élaborées&#8230; et surtout de récupérer certaines informations lorsque nous sommes sur le même domaine&#8230; (arf, le cross domaine, les navigateurs n&#8217;aiment pas cela et nous pouvons les comprendre&#8230; ah si, ie6 et &lt; aiment ça, mais c&#8217;est une autre histoire&#8230;)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.felix-aime.fr/securite-des-systemes-dinformation/bypasser-noscript-pour-faire-une-requete-post-sans-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

