<?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; firefox</title>
	<atom:link href="http://blog.felix-aime.fr/tag/firefox/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>Petite dose de CSS et de JS pour une grande dose de SE.</title>
		<link>http://blog.felix-aime.fr/securite-des-systemes-dinformation/petite-dose-de-css-et-de-js-pour-une-grande-dose-de-se/</link>
		<comments>http://blog.felix-aime.fr/securite-des-systemes-dinformation/petite-dose-de-css-et-de-js-pour-une-grande-dose-de-se/#comments</comments>
		<pubDate>Mon, 01 Nov 2010 18:04:08 +0000</pubDate>
		<dc:creator>feu</dc:creator>
				<category><![CDATA[Développement (divers)]]></category>
		<category><![CDATA[Sécurité des systèmes d'information]]></category>
		<category><![CDATA[Tips&tricks]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[malicieuse]]></category>
		<category><![CDATA[malicious]]></category>
		<category><![CDATA[malware]]></category>

		<guid isPermaLink="false">http://blog.felix-aime.fr/?p=719</guid>
		<description><![CDATA[Dans la série : &#171;&#160;Les codes à la con que que je n&#8217;ai jamais publié&#160;&#187; voici un petit bout de code pouvant pousser un internaute à installer une extension malveillante ou un malware quelconque. Ce code, fait uniquement de JS et de CSS, permet d&#8217;imiter les bannières d&#8217;alerte de Firefox : pouvant donc être intégré [...]]]></description>
			<content:encoded><![CDATA[<p>Dans la série : &laquo;&nbsp;Les codes à la con que que je n&#8217;ai jamais publié&nbsp;&raquo; voici un petit bout de code pouvant pousser un internaute à installer une extension malveillante ou un malware quelconque. Ce code, fait uniquement de JS et de CSS, permet d&#8217;imiter les bannières d&#8217;alerte de Firefox : pouvant donc être intégré dans n&#8217;importe quelle page vulnérable aux XSS. Une attaque de masse est ainsi possible si l&#8217;on couple ce petit code à des trucs funs tels que <a href="http://www.bindshell.net/tools/beef/">BeEF</a> ou tout autre <a href="http://www.segmentationfault.fr/projets/xeek-framework-exploitation-xss/">framework d&#8217;exploitation XSS</a>.</p>
<p><strong>Fonctionnement du chmilblick :</strong></p>
<p>Le code est assez simple, il réalise juste la suppression de la totalité du corps de la page<br />
visée et remplace ce dernier par notre fausse bannière et une iframe contenant cette même page.</p>
<p><strong>Modifications à réaliser :</strong></p>
<p>Le code n&#8217;est pas &#8211; du tout &#8211; évolué, car je le livre &laquo;&nbsp;tel quel&nbsp;&raquo;. Il manque plusieurs choses, tout d&#8217;abord, la détection de la version navigateur, du système d&#8217;exploitation et de la résolution. Les fonts (et le design) changent de Linux, Mac à Windows, mais aussi, suivant les versions de l&#8217;OS et du navigateur. &#8211; Celui présenté est optimisé pour Windows Vista/7 avec Firefox 3.6.*.</p>
<p>Plusieurs optimisations doivent également être mises en place telles que le chargement &laquo;&nbsp;lourd&nbsp;&raquo; de l&#8217;iframe (facile), <a href="http://blog.reybango.com/2010/09/02/how-to-easily-inject-jquery-into-any-web-page/">la détection de jQ avec un simple if(jQuery) pour une attaque de type Return to jQ</a>. Mais je pense que ce type de code peut être sympa en étant couplé à une attaque de type <a href="http://tonylamm.posterous.com/tab-jacking-internet-threat">Tab-jacking</a>. Enfin pour plus de réalisme, il peut être couplé à un petit code remplaçant les sources de divers objets Flash/Java/Silver(lol) etc. pour inciter l&#8217;internaute à installer une mise à jour de faux plugin (<a href="http://directory.felix-aime.fr/other/fake_ext/POC.js">voir source</a>).</p>
<p><strong>Un exemple ?</strong><br />
<strong><center><script src="http://directory.felix-aime.fr/other/fake_ext/POC.js"></script><br />
 <a href="javascript:main()">[Cliquez simplement ici.]</a></center></strong><br />
</p>
<p><strong>Extensions malveillantes ? </strong><br />
</p>
<p>Les &laquo;&nbsp;véritables&nbsp;&raquo; extensions Firefox malveillantes ne sont pas encore diffusées en masse sur le web. Seul des POCs &#8211; à ma connaissance &#8211; ont été réalisés (voir le très bon article d&#8217;<a href="http://www.xmcopartners.com/actualite-securite-vulnerabilite-fr.html">XMCO</a>). Cependant, elles peuvent faire mal, très mal. Contrairement à Chrome, elles peuvent accéder au système, &laquo;&nbsp;foutre la merde&nbsp;&raquo; dans le navigateur car elles ont accès à la zone chrome (bypass SOP etc.). De plus, comme les antivirus sont à la traîne (je ne referai pas le débat ici), il ne fait nul doute qu&#8217;une extension malicieuse sera bien planquée dans le système cible, que ce soit un Linux, Mac ou Windows (et oui, c&#8217;est cross-plateforme ces petites choses là et c&#8217;est tout l&#8217;intérêt d&#8217;en développer ! =)</p>
<p>En y pensant, j&#8217;avais énuméré diverses possibilités qu&#8217;offraient une extension Firefox malveillante parmi lesquelles (liste non exhaustive) :</p>
<p>Bypass SOP ; Network Sniffing ; Remote binaries installation &amp; execution ; Remote network HTTP Proxy ; Cloud Cracking ; Remote Files Stealing ; Banking (w/ live HTTP Headers Spoofing or Source code edition on the fly) ; DOS option (DDos w/ C&amp;C) ; RCE ; Remote Passwords Stealing ; Remote Cookies Stealing; Firewall Bypass (w/ HTTP/HTTPs)&#8230;</p>
<p>Je pense faire d&#8217;ailleurs quelques articles &#8211; si j&#8217;ai le temps &#8211; sur le développement d&#8217;une telle extension &laquo;&nbsp;basique&nbsp;&raquo; du genre un banker ou une extension contournant SOP et envoyant les divers informations à un serveur distant.</p>
<p><strong>Conclusion</strong></p>
<p>Comme je l&#8217;ai dit dans l&#8217;article, c&#8217;est juste un draft à améliorer et à coupler à d&#8217;autres tricks. De plus, pour ne pas vous faire avoir, pensez qu&#8217;une extension ne propose pas une mise à jour par ce type de bannière, mais par une info-bulle en bas à droite de l&#8217;écran. De plus, quelques détails tels que la sélection du texte du bandeau devrait vous mettre la puce à l&#8217;oreille. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.felix-aime.fr/securite-des-systemes-dinformation/petite-dose-de-css-et-de-js-pour-une-grande-dose-de-se/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<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>

