用途
本技能文档是一份Linux安全机制绕过专家攻击手册,用于在渗透测试、红队评估或CTF竞赛中,面对目标Linux系统的安全限制时进行突破。文档以AI加载指令形式组织,指导使用者在遇到受限bash/rbash、只读或noexec文件系统、AppArmor、SELinux、seccomp过滤器或审计日志等安全机制时,采取相应的绕过技术。
主要能力
受限Shell(rbash)绕过
- SSH方式:通过ssh -t强制指定不同Shell或参数绕过限制
- 编辑器逃逸:利用vi/vim的:shell命令、ed的!/bin/bash、nano的快捷键组合执行命令
- 语言解释器逃逸:通过Python、Perl、Ruby、Lua、PHP、Node.js、AWK等解释器执行系统命令
- 环境变量技巧:利用BASH_CMDS覆盖、env命令启动无限制Shell、PATH操作等
- 其他逃逸:expect、script、rlwrap、nmap交互模式等
read-only / noexec文件系统执行
- DDexec:通过/proc/self/mem完全无文件执行ELF二进制
- memfd_create:利用内存文件描述符绕过noexec限制
- ld.so直接执行:使用动态链接器从noexec挂载点执行二进制
- 脚本解释器:脚本仍可在noexec上执行,因为解释器从允许执行的挂载点运行
- 可写挂载点利用:/dev/shm、/tmp、/var/tmp、/run等常见可写位置
AppArmor绕过
- 配置文件枚举:检查AppArmor状态、当前进程配置文件
- 利用策略:寻找unconfined进程、complain模式配置文件、配置文件路径覆盖缺口
SELinux绕过
- 模式检查:getenforce、sestatus等命令确认当前模式
- Permissive域利用:在permissive模式下进程可执行任意操作(仅记录日志)
- 上下文转换与布尔值滥用:利用semanage、sesearch、getsebool等工具发现可滥用配置
seccomp绕过
- 状态检查:通过/proc/self/status或amicontained工具确认seccomp状态
- 架构混淆:利用x86与x86_64系统调用号差异绕过仅检查x86_64的过滤器
- 允许的系统调用滥用:sendmsg/recvmsg、mmap/mprotect、process_vm_readv/writev等
- 已知内核漏洞:CVE-2019-2054、io_uring绕过等
审计规避
- 时间戳操纵:使用touch命令修改文件时间戳
- 日志篡改与进程伪装:sed删除日志条目、清空wtmp、journalctl清理、进程名伪装
- 禁用审计:auditctl -e 0及停止auditd服务
使用方式
文档以编号章节和决策树形式组织,使用者可根据遇到的安全机制类型,按照决策树指引定位到对应章节,获取具体的技术方案和命令示例。文档包含可直接执行的命令、代码片段和表格化信息。
适用场景
- 渗透测试中的权限提升与限制突破
- 红队评估中的安全机制对抗
- CTF竞赛中的Linux安全挑战
- 安全研究中的机制分析
限制
本工具仅限合法授权的安全测试使用。用户需确保拥有目标系统的明确测试授权。文档中涉及的技术可能因系统版本、内核配置、安全策略差异而失效。部分技术(如DDexec、memfd_create)需要特定内核支持。seccomp绕过依赖于过滤器实现缺陷,并非通用方案。所有操作应在受控环境中进行。