声明:本文介绍的内容仅用于学习和研究目的,请勿用做非法用途。
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进行提权。
来源:CSDN
作者:h8x0r
链接:https://blog.csdn.net/qq_27828281/article/details/103648502