ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

kptr_restrict 内核文件简介

2022-07-11 21:35:51  阅读:172  来源: 互联网

标签:kptr proc restrict 地址 内核 root


一、简介

系统为了保护内核符号地址不被泄露, 而用的一种保护手段, 从而使除 root 用户外的普通用户不能直接查看符号地址。原因在于内核文件 kallsyms.c 中的显示符号地址命令中做了如下限制:

seq_printf(m, "%pK %c %s\n", (void *)iter->value, iter->type, iter->name);

只需要把其中的 %pK 换成 %p 就可以让普通用户查看符号地址了. 很多提权漏洞一般会用到此处的修改来获取符号地址。

内核提供控制变量 /proc/sys/kernel/kptr_restrict 来进行修改. 从内核文档 Documentation/sysctl/kernel.txt 中可以看到 kptr_restrict 用于控制内核的一些输出打印,Documentation/printk-formats.txt 有更加详细的描述。

值和权限对应关系如下:

kptr_restrict        权限描述
---------------------------------------------------------------------
    2                内核将符号地址打印为全0, root和普通用户都没有权限
    1                root用户有权限读取, 普通用户没有权限
    0                root和普通用户都可以读取

 

二、实验

1. 为0时可以看到符号地址

# echo 0 > /proc/sys/kernel/kptr_restrict

# cat /proc/kallsyms | head -10
...
ffffffee02481000 t efi_header_end
ffffffee02481000 t sun4i_handle_irq

# cat /proc/modules | head -5
...
rmnet_offload 28672 0 - Live 0xffffffedb6e9b000 (O)
rmnet_shs 159744 0 - Live 0xffffffedb7192000 (O)

2. 为2时root用户也看不到符号地址

# echo 2 > /proc/sys/kernel/kptr_restrict

# cat /proc/kallsyms | head -10
...
0000000000000000 t efi_header_end
0000000000000000 t sun4i_handle_irq

# cat /proc/modules | head -5
rmnet_offload 28672 0 - Live 0x0000000000000000 (O)
rmnet_shs 159744 0 - Live 0x0000000000000000 (O)

 

 

 

 

参考:https://blog.csdn.net/gatieme/article/details/78311841

 

标签:kptr,proc,restrict,地址,内核,root
来源: https://www.cnblogs.com/hellokitty2/p/16468019.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有