Nytro Posted November 7, 2013 Report 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
Active Members akkiliON Posted November 7, 2013 Active Members Report 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
mah_one Posted November 7, 2013 Report 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
mah_one Posted November 7, 2013 Report 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
Nytro Posted November 8, 2013 Author Report 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