山石网科安全技术研究院简称“山石安研院”正式成立于2020年4月,是山石网科的信息安全智库部门,山石安研院旗下包括干将、莫邪两大安全实验室,以及安全预警分析、高端攻防培训两支独立的技术团队。
今天看啥  ›  专栏  ›  山石网科安全技术研究院

Linux内核可利用的结构体总结

山石网科安全技术研究院  · 公众号  ·  · 2024-10-28 13:32

主要观点总结

本文总结了Linux内核中可利用的对象及其相关属性,包括结构体名称、大小、可泄露的内核地址、劫持RIP等关键点。

关键观点总结

关键观点1: Linux内核对象概览

文章概述了Linux内核中各种可利用的对象,如cache、setxattr系统调用、ldt_struct、shm_file_data等,并介绍了它们的基本属性和特点。

关键观点2: 内核地址泄露

介绍了各种内核对象内核基址的泄露方式,如通过结构体的字段、系统调用等。

关键观点3: 堆地址和栈地址泄露

阐述了如何通过各种内核对象泄露堆地址和栈地址,以及在不同情况下这些泄露的可行性。

关键观点4: RIP劫持

分析了如何通过修改内核对象的某些字段来实现RIP劫持,包括可能的限制和具体实现方法。

关键观点5: 对象产生和释放

描述了各种内核对象的产生和释放机制,包括相关的系统调用和操作。

关键观点6: 相关说明和示例

提供了关于某些内核对象的额外说明、示例和写脚本的链接,以帮助读者更深入地理解这些对象。


文章预览

在Linux内核中,可以通过分配对象来对UAF、OOB等漏洞对象进行占位进行漏洞利用。内核中有许多可利用对象,某些对象有非常强大的利用原语,可以通过这些对象及其操作函数来实现权限提升。本文对Linux可利用的对象进行了统计和总结。总结表格如下: 结构体/系统调用名称 cache 大小(bytes) 可泄露内核地址 可泄露堆地址 可泄露栈地址 可劫持RIP 读写 signalfd_ctx kmalloc-8 8 ❌ ☑️ ❌ ❌ ❌ setxattr系统调用 大小可变 size < 65536 ❌ ❌ ❌ ☑️ ✅ ldt_struct kmalloc-16 16 ❌ ❌ ❌ ❌ ✅ shm_file_data kmalloc-32 32 ✅ ✅ ❌ ❌ ✅ seq_operations kmalloc-32 32 ✅ ❌ ❌ ✅ ❌ user_key_payload 大小可变 0x18 < size < (0x7fff + 0x18) ✅ ✅ ❌ ❌ ✅ msg_msg 大小可变 0x30 < size < 0x1000 ❌ ✅ ❌ ❌ ✅ sendmsg系统调用 大小可变 44 < size < 0x7fffffff ❌ ❌ ❌ ❌ ✅ subprocess_info kmalloc-128 96 ☑️ ✅ ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览