Jump to content
Nytro

XSS filter bypass

Recommended Posts

Salut,

Discutam cu niste baieti despre problema urmatoare.

Avem urmatorul cod:

<img src=<?php print filtru($_GET['plm']); ?> />

Unde filtru este o functie care:

1. Face htmlentities cu ENT_QUOTES

2. Transforma caracterul "=" in entitate HTML (ca si htmlentities pentru celelalte caractere)

Cu alte cuvinte nu va mai merge " onerror=alert(1)" pentru ca "=" va fi filtrat.

Aveti idei de bypass la asa ceva? Vechiul "javascript:..." mai merge pe vreun browser?

Nu am vazut niciodata asa ceva in practica, dar sunt curios daca s-ar putea exploata.

Daca nu se poate, inseamna ca ar cam fi recomandat ca in functia de filtrare sa luati in considerare si "=".

Astept parerile voastre pertinente aici. Thanks.

Link to comment
Share on other sites

Cand zici ca nu va merge " onerror=alert(1)" fiindca "=" va fi filtrat, imi lasa impresia ca ghilimelele nu sunt filtrate. Iar de aici am sa trag o prima concluzie:

Pe exemplu de mai sus, in care te folosesti de <img> html tag, nu exista modalitate prin care sa treci de filtru (latest ver. of Firefox, Chrome si IE).

Ideea este ca daca filtrezi '=' nu mai poti executa javascript decat daca input-ul utilizatorului este inserat intr-un event attribute.

Ex:

<style/onload = !-alert(1)> Poti sa faci tot felul de encodari.

SAU

<style/onload = !-\u0061\u006c\u0065\u0072\u0074(1)>

<object data=jAvascriPt://%00%0d%0aalert(3)//>

STYLE=xss:expression(alert(1)) merge doar pe IE - (merge sigur pe IE9 dar nu am testat pe IE10)

Daca filtrezi "'>< nu are rost sa mai adaugi si =, e o operatie in plus

Link to comment
Share on other sites

Era ceva de genu pentru a trece de = : +{string:alert} . Sunt pe tel acuma si nu pot sa scriu atat de mult...

Probabil stiu la ce te referi.

<img src=test:alert(alt) onerror=eval(src) alt=0>

Ca sa nu mai scrii cod javascript intr-un event attribute, bypasezi cu schema de mai sus.

Edited:

Sorry for double post.

Link to comment
Share on other sites

Cand zici ca nu va merge " onerror=alert(1)" fiindca "=" va fi filtrat, imi lasa impresia ca ghilimelele nu sunt filtrate.s

Ghilimelele fac parte doar din textul meu, ca sa se inteleaga codul de care vorbeam:

 onerror=alert(1)

Daca filtrezi "'>< nu are rost sa mai adaugi si =, e o operatie in plus

Are rost. Daca lucrezi doar la partea de backend si un designed de 2 lei scrie:

<img src=[TEMPLATE_ENGINE_TEXT] />

Daca nu filtrezi si "=" o sa ai probleme.

Daca gasiti vreun truc care sa mearga, ceva prin HTML5 poate, nu stiu, sa postati aici sa stim si noi.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...