Nytro Posted November 7, 2013 Report Share Posted November 7, 2013 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_QUOTES2. 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. Quote Link to comment Share on other sites More sharing options...
Active Members akkiliON Posted November 7, 2013 Active Members Report Share Posted November 7, 2013 (edited) Era ceva de genu pentru a trece de = : +{string:alert} . Sunt pe tel acuma si nu pot sa scriu atat de mult... Edited November 7, 2013 by akkiliON Quote Link to comment Share on other sites More sharing options...
mah_one Posted November 7, 2013 Report Share Posted November 7, 2013 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 Quote Link to comment Share on other sites More sharing options...
mah_one Posted November 7, 2013 Report Share Posted November 7, 2013 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. Quote Link to comment Share on other sites More sharing options...
Nytro Posted November 8, 2013 Author Report Share Posted November 8, 2013 Cand zici ca nu va merge " onerror=alert(1)" fiindca "=" va fi filtrat, imi lasa impresia ca ghilimelele nu sunt filtrate.sGhilimelele 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 plusAre 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. Quote Link to comment Share on other sites More sharing options...