免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 独孤九贱

新爆内核高危漏洞sock_sendpage的利用分析的讨论 [复制链接]

论坛徽章:
0
发表于 2009-08-19 09:11 |显示全部楼层
原帖由 emmoblin 于 2009-8-19 00:01 发表
我有有点不解,想请教一下:
return sock->ops->sendpage(sock, page, offset, size, flags);
没做检测就直接调用了。这时会跳到进程的虚拟地址0的位置执行。

但是我不理解的是:之前他做了一个mmap,这时 ...


我也没有这样做过,不过我想这并不是直接对地址0进行写操作。而是先做了一个匿名映射,由系统创建了一个内存区域,把它映射到地址0上去而已。漏洞能不能被利用的关键在于,系统允不允许做这样的映射!!!

“mmap这里我觉得很神奇,相当于让内核执行了用户进程空间的代码”

内核执行用户空间的代码?什么意思?不懂!!!

论坛徽章:
0
发表于 2009-08-19 13:45 |显示全部楼层
e9 是相对跳转   执行地址地址 0x1上的那个jmp时,eip = 6;  kernel_code的地址为 0xXXXXXX, 相对的话就需要减去当前eip的值,也就是6

论坛徽章:
0
发表于 2009-08-19 14:10 |显示全部楼层
佩服!!CU上果然什么问题都能找到答案

论坛徽章:
0
发表于 2009-08-19 14:58 |显示全部楼层
牛啊~~ 学习了,学习了……

原帖由 emmoblin 于 2009-8-19 00:01 发表
但是我不理解的是:之前他做了一个mmap,这时 ...


虚拟地址0是属于用户空间的吧~ 所以mmap一下就可以用了。
不过我感觉内核应该限制一下对0地址的分配(任何vma都不能包含0地址),因为习惯上很多情况下都把NULL看成是非法的了。

论坛徽章:
0
发表于 2009-08-19 20:24 |显示全部楼层

回复 #11 独孤九贱 的帖子

kernel_code()函数的地址是用户空间的,举例来说,在我的机器上的地址为0x8048afd,小于0xc0000000。在内核态,jmp到一个小于3G的地址上。这个怎么解释?
是不是这个样子,用户态到内核态切换的时候,current还是有效的,指向一个用户空间进程,cr3寄存器的内容内容不会改变,还指向原先用户空间程序的页表。这个用户空间的地址会通过页表找到相应的位置?

论坛徽章:
0
发表于 2009-08-19 20:34 |显示全部楼层

回复 #15 CUDev 的帖子

是通过系统调用sendfile进入内核态的, 所以current, cr3, 等东西都没变

论坛徽章:
0
发表于 2009-08-19 21:10 |显示全部楼层
原帖由 CUDev 于 2009-8-19 20:24 发表
kernel_code()函数的地址是用户空间的,举例来说,在我的机器上的地址为0x8048afd,小于0xc0000000。在内核态,jmp到一个小于3G的地址上。这个怎么解释?
是不是这个样子,用户态到内核态切换的时候,current还 ...


系统调用的时候,已经切换到内核态了.正因为如此,后面才有退出kernel,返回用户态的状态.

论坛徽章:
0
发表于 2009-08-19 21:14 |显示全部楼层

回复 #1 独孤九贱 的帖子

感觉exit_kernel()那个函数没有多少用处,可以直接声明为int kernel_code(),返回-1。kernel_code自动跳回到用户空间,然后直接调用execl()就好了。

另外,kernel_code()中可以调用标准库里面的函数吗?
http://www.securityfocus.com/dat ... derbar_emporium.tgz
这是这个漏洞的另外一个exploit,它在kernel中执行的函数中调用了memset()。

[ 本帖最后由 CUDev 于 2009-8-19 22:28 编辑 ]

论坛徽章:
0
发表于 2009-08-19 21:49 |显示全部楼层

回复 #1 独孤九贱 的帖子

搭车问一个mmap的问题。

mmap的参数中addr如果为NULL的话,是kernel自动选择一个地址,但是这里为什么mmap返回的地址是0呢?
       If addr is NULL, then the kernel chooses the address at which to create the mapping; this is the most portable method of  creat‐\r
       ing a new mapping.  If addr is not NULL, then the kernel takes it as a hint about where to place the mapping; on Linux, the map‐\r
       ping will be created at a nearby page boundary.  The address of the new mapping is returned as the result of the call.


已解决,原来是MAP_FIXED选项的问题

[ 本帖最后由 CUDev 于 2009-8-19 22:14 编辑 ]

论坛徽章:
0
发表于 2009-08-19 22:20 |显示全部楼层
dex@dx wunderbar_emporium]$ ls
exploit.c  pwnkernel.c  tzameti.avi  wunderbar_emporium.sh
[dex@dx wunderbar_emporium]$ ./wunderbar_emporium.sh
[+] Personality set to: PER_SVR4
I: caps.c: Limited capabilities successfully to CAP_SYS_NICE.
I: caps.c: Dropping root privileges.
I: caps.c: Limited capabilities successfully to CAP_SYS_NICE.
E: alsa-util.c: Error opening PCM device hw:0: Permission denied
E: module.c: Failed to load  module "module-alsa-sink" (argument: "device_id=0 sink_name=alsa_output.pci_8086_27d8_sound_card_0_alsa_playback_0 tsched=1"): initialization failed.
E: alsa-util.c: Error opening PCM device hw:0: Permission denied
E: module.c: Failed to load  module "module-alsa-source" (argument: "device_id=0 source_name=alsa_input.pci_8086_27d8_sound_card_0_alsa_capture_0 tsched=1"): initialization failed.
[+] MAPPED ZERO PAGE!
[+] Resolved selinux_enforcing to 0xc0951f94
[+] Resolved selinux_enabled to 0xc07dbaf4
[+] Resolved security_ops to 0xc0950768
[+] Resolved default_security_ops to 0xc07db624
[+] Resolved sel_read_enforce to 0xc04fbbfa
[+] Resolved audit_enabled to 0xc091b16c
[+] got ring0!
[+] detected 2.6 style 4k stacks
[+] Disabled security of : nothing, what an insecure machine!
[+] Got root!
sh-3.2# passwd root
Changing password for user root.
New UNIX password:
BAD PASSWORD: it is WAY too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP