Linux权限提升—Kernel exploit

假如想象 提交于 2019-12-23 09:15:02

声明:本文介绍的内容仅用于学习和研究目的,请勿用做非法用途。

 kernel exploits是利用内核漏洞以提升的权限执行任意代码的程序。成功的kernel exploit通常能够使攻击者获得超级用户权限。在多数情况下,提升到root权限只需简单地下载kernel exploit到目标文件系统,编译exploit,然后执行。
假定我们现在为低权限的用户,kernel exploit的常规流程为:
1、诱使kernel以内核模式运行我们的payload
2、操纵内核数据,如进程权限
3、加载一个有新权限的shell获得root
要成功执行内核exploit,需要4个条件:
1、存在漏洞的kernel
2、匹配的exploit
3、能够将exploit传输到目标主机
4、能够在目标主机执行expliot
 防御内核exploit的简单方法就是打补丁。此外,管理员应该限制或者移除能够传输文件的程序,如FTP,TFTP,SCP,wget,curl等,如果这些程序需要,应该进行访问控制。下面使用2个例子说明内核exp的利用过程。

  • DirtyCow exploit – Linux Kernel <= 3.19.0-73.8
     在Linux kernel的内存子系统处理copy-on-write时存在一个竞态条件,可破坏私有的read-only内存映射。一个低权限的本地用户可利用这个问题对read-only内存映射获得write权限,因此能够提升他们的权限。

利用DirtyCow漏洞提权(Linux Kernel 2.6.22 < 3.9)
查看当前用户和内核版本信息:

whoami
uname -a

在这里插入图片描述
从https://www.exploit-db.com/exploits/40839/下载dirtycow exploit,然后编译并执行,在payload执行后,会修改/etc/passwd,创建一个新的用户firefart,密码为123456(可以自己修改),且为root权限:

gcc -pthread dirty.c -o dirty -lcrypt

切换到firefart用户,可以看到uid和gid等都为0:

su firefart

在这里插入图片描述
其他衍生的dirtycow exploit:
https://github.com/dirtycow/dirtycow.github.io/wiki/PoCs

  使用kernel exploit能够获得root权限取决于内核是否存在漏洞。kali存在一个exploit-db的本地复制可用来搜索本地提权exp。

searchsploit Linux Kernel 4.4.0

在这里插入图片描述
下面的例子为Ubuntu 16.04.4,内核为4.4.0-87,可利用内核exp进行权限提升。

  • Linux Kernel 4.4.0(Ubuntu 16.04.4)
    查看目标系统信息:
    在这里插入图片描述
    首先在kali上进行编译:
gcc -o pwn2 44298.c

下载编译的exploit到目标系统执行:
在这里插入图片描述
如上图,exp执行完成,可获得root权限。

需要注意的是应该避免将利用kernel exploit提权作为首选的方法,而是应该作为最后一个选择,原因为:
1、远程主机可能会崩溃,因为公布的exploit可能并不稳定。
2、可能在获得root权限后系统崩溃。
3、exploit可能留下踪迹/日志使你被捉住。
因此,在其他技巧无效时,可考虑利用内核exploit进行提权。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!