Archives de Catégorie: sécurité

Sécurité : social engineering

social engineering une vulnérabilité souvent oublié. En effet rien de plus simple que de remplir un faux formlulaire et l’envoyer vers la cible de votre formulaire avec les dégats que cela entrainent.

Pour palier à ça il y a une méthode toute simple qui consiste à ajouter un champs hidden qui contient un gui et de copier ce même gui dans la session de l’utilisateur. Dans la page cible vous testez si le gui de la session est le même que celui envoyé via le form.

si ce n’est pas le cas vous pouvez simplement rediriger vers une page par défaut de votre site.

un petit exemple:

<!--- page source --->
<cfset session.token = createuuid()>

<form action="target.cfm">
<input type="hidden" id="token" value="#session.token#">
<input type="text" id="prenom">
<input type="submit">
</form>

<!--- page cible --->
<cfif structKeyExists(form,"token") and structKeyExists(session,"token") and session.token is form.token>
<p>vous avez passé le test du token.</p>
<cfelse>
<p>il y a un problème avec votre token.</p>
</cfif>

<cfset structdelete(session,"token")>

Dans cf10 cette protection est incluse : CSRF attack.

J’espère que ce petit truc pourra vous aider dans la sécurisation de votre application.

Sécurité : Cross-site scripting

Aujourd’hui parlont de sécurité.

Qu’est-ce que le cross-site scripting ? définition de Wikipédia XSS.

Pour protéger correctement une application il y a plusieurs choses à faire. Je vous propose de voir ce qui est important de réaliser sur coldfusion ainsi que sur l’application.

Coté serveur
– Il faut activer l’option « Enable Global Script Protection » qui se trouve dans Server settings/settings. Cette option ce base sur un fichier de configuration qui se trouve dans \Coldfusion9\lib. Il faut donc modifier le fichier neo-security.xml en lui ajoutant iframe dans la liste des noms à valider ce qui aura pour effet de remplacer le tag interdit par InvalidTag

<var name='CrossSiteScriptPatterns'>
<struct type='coldfusion.server.ConfigMap'>
<var name='<\s*(object|embed|script|applet|meta|iframe)'>
<string>
<InvalidTag>
</string>
</var>
</struct>
</var>

Coté application
Au niveau de l’application il faut ajouter une petite ligne dans application.cfc :

<script>
this.scriptprotect="all";
</script>

Maintenant il reste à mettre en place une API qui permet d’encoder toutes les infos envoyées par l’utilisateur. pour ce faire il y a plusieurs étapes à suivre pour installer cette API et pour pouvoir l’utiliser.

  • Télécharger l’API à cette adresse : ESAPI 2.0.1
  • Copier le fichier esapi-2.0.1.jar du fichier zip téléchargé dans le répertoire /wwwroot/WEB-INF/lib
  • Télécharger un bon fichier de propriété ESAPI.properties vérifier que les répertoires mappé dans ce fichier pointe bien sur des répertoires existant
  • Modifier les deux paramètres suivant dans le fichier de properties avec des données plus facile à gérer pour vous puis sauvegarder ce fichier dans un répertoire (ex: c:\esapi\config)
  • Encryptor.MasterKey=placer votre clef ici
  • Encryptor.MasterSalt=placer votre clef salt ici
  • Vous devez modifier la configuration de démarrage de la JVM en ajoutant « -Dorg.owasp.esapi.resources=c:\esapi\config »
  • Ajouter dans le classpath de la JVM l’emplacement du fichier.

Voila vous pouvez redémarrer Coldfusion.

Maintenant comment faire pour utiliser cette API ? Très facile.

<cfset ojbEsapi = CreateObject("java","org.owasp.esapi.ESAPI")>
<cfset encoder = ojbEsapi.encoder()>

<form action="#cgi.script_name#" method="post">
txt: <input type="text" name="txt" id="txt">
<input name="btnsub" type="submit">
</form>

<cfif structkeyexist(form,"fieldnames")>
<cfoutput>
#encoder.encodeForHTML(form.txt)#
</cfoutput>

Voila j’espère que cette aide vous aura été utile autant que la recherche d’info l’a été pour moi.

Référence:
securing coldfusion applications vous trouverez d’autres trucs dans cette vidéo.

%d blogueurs aiment cette page :