Attaque: Open Redirect

Attaque: Open Redirect

What Are They And How To Avoid Them ?

Longtemps négligé, le phishing est désormais au cœur des préoccupations de chacun et a su se renouveler ces dernières années, tant du côté de l'attaque que de la défense.

Les méthodes évoluent rapidement, tout comme les outils utilisés pour la combattre. Au cours des dernières années, nous avons vu les solutions passer de de filtre bayésien classique (qui évaluent l'en-tête et le contenu d'un message électronique entrant et déterminent la probabilité qu'il constitue un spam) à des solutions dites d'intelligence artificielle, sans pour autant que les changements soient massifs sur le temps de prise en charge. En fait, l'explosion de l'usage du phishing combinée à une obligation des entreprises à rembourser induit une augmentation toujours plus importante de travail pour la #blueteam, aussi bien dans la détection que dans la remédiation (au travers des take-down par exemple).

Faire du Threat Hunting, ça on connait chez Stroople, et c'est pour cela que je vais vous présenter ici une méthode assez méconnue mais simple et particulièrement efficace contre les systèmes de sécurité basés sur la "qualité" du domaine présent dans l'URL. Qualité mesurée au moyen de calcul de l'ancienneté de domaine, DA du domaine et ainsi de suite.

Mais l'Open Redirect, c'est quoi?

L'Open Redirect, on en rencontre souvent quand on parle de Web, lors d'un audit ou d'un #pentest. Bien souvent, elle est causée par un manque de sanitization donc il se trouve souvent que le même paramètre en cause soit vulnérable à une #xss, ou même #lfi / #rfi voire une #xxe.

Considérée souvent comme un problème mineur en terme de sécurité pure, les dernières années ont montré qu'elle pouvait être un problème majeur en matière de #seo et de #phishing.

Passons le SEO pour cet article même s'il y'aurait beaucoup à dire et intéressons nous au cas du phishing.

Je vous donne une petite définition simple:

Une Open Redirect, c'est une redirection non voulue, sans interaction utilisateur, d'un site A vers un site B.

Et parce que rien ne vaut un exemple, je vais vous donner une OR que j'ai trouvé récemment:

https://www.notamweb.aviation-civile.gouv.fr/Script/IHM/Com_Chargement.php?URL=https://google.fr/humans.txt

Donc si vous prenez ce lien, et que vous cliquez dessus, vous serez redirigé vers le site de google sans votre accord, alors que vous étiez supposé cliquer sur un lien de l'aviation civile. C'est ça une OR.

Imaginez que vous recevez, par exemple, un courriel d'une entreprise en qui vous avez confiance et qui vous propose une offre exceptionnelle pour vous remercier d'être client. Comme l'offre semble trop belle pour être vraie, vous soupçonnez que quelque chose pourrait être "bidon", c'est pourquoi vous passez votre curseur sur le lien pour vérifier sa légitimité.

Tout semble correct, alors vous cliquez sur le lien. 😱 Mais que faire si le lien pointe vers le site web de confiance et vous redirige ensuite vers une page web ou une application malveillante contrôlée par des escrocs ? C'est exactement ce que peut faire Open Redirect.

Maintenant le concret.. Open Redirect & Phishing

Je pense que vous devez voir dès maintenant où je veux en venir.. Avec une OR, avec en site A un site respectable, crédible avec une vraie activité et en site B un site malveillant, récent, clairement du phishing, on peut arriver à faire de l'évasion.

Si, par exemple, vous pensiez mettre en place un système d'ancienneté de domaines pour lutter contre le spam et le phishing, sachez que vous devez aussi vérifier la méthode. En effet, si vous récupérez classiquement la valeur du domaine dans un cas d'OR, le domaine extrait sera le domaine A et non le domaine malveillant B.
Un peu de pratique maintenant. Cette fois-ci, je vous propose de prendre un autre exemple que celui plus haut avec une vraie page de phishing. Et je vais utiliser une campagne en cours pour être en condition réelle. Voici la page de phishing une fois que vous êtes dessus:

Donc on voit clairement que c'est une page de phishing, aux couleurs d'Amazon car j'ai choisi Amazon via le paramètre GET logo. Cette campagne ne cible pas qu'Amazon mais aussi des groupes français.

Pour des raisons de sécurité, je vais mettre les urls malveillantes dans des balises de code pour qu'elles soient non cliquables. L'url de la page est donc:

Je l'ai bien sûr testé sur urlscan.io: https://urlscan.io/result/6a9a7105-f7c2-4252-887b-9aff3bdca7f6/

Et je l'ai testé sur https://www.isitphishing.ai of Vade:

Ce n'est pas encore détecté par cette solution mais l'idée globale est faite. Donc on a une page évidente de phishing avec un domaine malicieux.

Maintenant prenons une OR utilisée par une campagne de phishing en cours, et utilisons l'url de phishing donnée plus haut.

Vous constaterez bien la redirection.

Pour finaliser la démonstration, je vous propose une petite expérience en utilisant la librairie urllib pour récupérer la valeur du domaine:

Ces 2 liens pointent tous deux vers la page de phishing mais dans le 2e cas, l'OR fait que le parsing considère le domaine de l'url comme étant celui de bigpress et non le domaine de destination qui est buysong.
Bien sûr, il est possible d'améliorer encore cette méthode, en la combinant à d'autres méthodes, ou en déguisant le lien dans une balise html.

Chez Stroople, l'OR on la connait bien et on couvre bien des méthodes de détection grâce à notre pôle de #cti. On rend fou aussi nos collègues commerciaux grâce à l'OR.

Amusez-vous bien et bon phishing à tous😉

Jules (Oletros)
Purple Team Analyst