NewbieContest

Divers => Hacking => Discussion démarrée par: 3rr0r404 le 26 Avril 2012 à 10:27:53



Titre: [AIDE] Sécurisation d'applet JAVA
Posté par: 3rr0r404 le 26 Avril 2012 à 10:27:53
Bonjour à toute la communauté !

Je tourne vers vous car je souhaiterais avoir des éclaircissements au niveau de la sécurisation d'applets JAVA.

Pour vous situer dans le contexte je suis jeune développeur Web qui se passionne pour la sécurité, d'où ma présence sur ce site depuis quelques mois =)
En revanche mes connaissances en JAVA sont réellement limitées !

Je travaille depuis peu avec des gens qui prennent plaisir à coller des applets JAVA un peu partout dans leurs services web...
Cependant en suivant les tutoriels présent sur le web, et notamment ici, j'ai montré à mes collègues qu'il était aisément possible de télécharger leurs applets (fichiers *.jar) en saisissant l'url directement dans le navigateur...

Ces mêmes applets son "auto signés" (certificat auto généré) mais apparemment cela n'empêche en rien la décompilation via un petit soft comme JAD...
J'ai donc découvert en fouillant les codes sources décompilés que ces mêmes applets contenaient des accès FTP (login et mdp) !

Vous imaginez donc mon problème et celui de mes collègues : n'importe qui aurait pu télécharger les applets, les décompiler et accéder à certains FTP !

J'ai imaginé plusieurs scénarios pour tenter de pallier à ce problème :
  • Protéger le répertoire contenant les applets avec un .htaccess et .htpasswd correctement construit de façon à empêcher leur téléchargement par n'importe qui.
    Mais comment faire pour que les applets continuent de fonctionner dans le site web ? A ma connaissance seul un script php peut accéder à un répertoire protéger par .htaccess, or plusieurs de nos sites web appellent ces applets en AJAX...
    Nos services étant en HTTPS le passage des paramètres par le script php pour accéder au .htaccess ne devrait pas être compromis...
  • Laisser "libre accès" à nos applets mais modifier celle ci afin qu'elle ne contiennent par directement les comptes FTP :
    L'applet accéderais à un répertoire protéger par .htaccess et .htpasswd, ce répertoire contiendrait des fichiers (*.txt ou autres ?) qui eux mêmes contiendrait les login et mdp FTP...
    Là encore nous sommes en HTTPS, donc a priori lorsque l'applet accède au répertoire protégé le mot de passe n'est pas espionnable ?
  • Combiner les deux ?
    Est-ce réellement utile ?
  • Un autre moyen ?
    A ma connaissance il n'est pas possible d'empêcher de décompiler du code JAVA, la protection doit se faire donc ailleurs : empêcher de télécharger l'applet JAVA ou s'arranger pour qu'elle ne contiennent rien de compromettant me semble être les deux seules issues...

Bien entendu toutes les réponses et remarques concernant mon problème sont les bienvenues !


Titre: Re : [AIDE] Sécurisation d'applet JAVA
Posté par: _o_ le 27 Avril 2012 à 17:18:21
Il n'y a aucune réponse satisfaisante à ton problème, car le principe même d'une applet java public faisant du FTP est bancal. Si l'applet peut le faire, quiconque se faisant passer pour l'applet le pourra également. Et empêcher la décompilation ne résout rien  : en imaginant que l'analyse statique soit impossible (ce qui est hautement improbable), il suffit de lancer l'applet dans un navigateur avec en parallèle un sniffer pour voir les flux FTP et donc les login et mot de passe utilisés.

À ce niveau là, ce n'est plus un problème de sécurisation de l'existant (ce qui, de toute façon, est une mauvaise idée), mais de conception.


Titre: Re : Re : [AIDE] Sécurisation d'applet JAVA
Posté par: 3rr0r404 le 27 Avril 2012 à 18:14:21
Il n'y a aucune réponse satisfaisante à ton problème, car le principe même d'une applet java public faisant du FTP est bancal. Si l'applet peut le faire, quiconque se faisant passer pour l'applet le pourra également. Et empêcher la décompilation ne résout rien  : en imaginant que l'analyse statique soit impossible (ce qui est hautement improbable), il suffit de lancer l'applet dans un navigateur avec en parallèle un sniffer pour voir les flux FTP et donc les login et mot de passe utilisés.

À ce niveau là, ce n'est plus un problème de sécurisation de l'existant (ce qui, de toute façon, est une mauvaise idée), mais de conception.

Tout d'abord merci de cette réponse !
Je commençais à désespérer d'en avoir une ^^

J'avoue ne pas tout comprendre à ta réponse :
_ quiconque se faisant passer pour l'applet le pourra également : tu pourrais détailler le processus qui pourrait être utilisé stp ?
_ il suffit de lancer l'applet dans un navigateur avec en parallèle un sniffer pour voir les flux FTP et donc les login et mot de passe utilisés : je crois alors que j'ai un gros manquement dans mes connaissances de bases car il me semblait que si le site web était en HTTPS les flux sniffés n'étaient pas "compréhensibles" et donc pas utilisable ... J'aurais mal compris un truc ?

Encore merci de chercher à m'aider !


Titre: Re : [AIDE] Sécurisation d'applet JAVA
Posté par: Zmx le 27 Avril 2012 à 20:49:59
1) on Suppose que l'applet se fait reconnaitre avec des header spécifique (ce qui ne sert à rien comme l'a dit l'autre)
2) Ton Flux https (et donc tous le transit de l'applet) n'est en effets pas sniffable, mais si ton applet Java fait du FTP (OMG **No Sms** ???), la session FTP elle ne sera en rien protégé par le HTTPS.


Une (eventuel) solution vu que je ne connais pas le context.

Tu download l'applet qui ne contient pas de login/password. L'applet demande un login/password en au serveur https (en fonction de l'utilisateur connecté, ce qui demande d'avoir des users). Ce login/password est personnel et utilisé pour se connecter a des page d'upload/download en httpS.


Titre: Re : [AIDE] Sécurisation d'applet JAVA
Posté par: 3rr0r404 le 28 Avril 2012 à 12:37:24
Ok je vois mieux ce que vous voulez dire...
Je confondais les principes de protocoles en pensant que le FTP pouvait être encapsulé dans du HTTPS !

Le premier gros problème à résoudre et donc de ne plus faire de FTP via l'applet JAVA !

Et sinon qu'en est il de l'utilisation de FTPS ? Il me semble avoir lu que cela ne pouvait pas être sniffé ?

Merci pour ces éclaircissements !