主要观点总结
本文总结了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 ☑️ ✅
………………………………