linux-security-bypass 是做什么的?
Linux 安全机制绕过手册。适用于在后期利用阶段需要绕过受限 bash/rbash、只读或无执行权限文件系统、AppArmor、SELinux、seccomp 过滤器或审计日志记录的场景。
概述
当攻击或测试活动进入 Linux 系统的后期利用阶段时,常会遇到多种安全机制的限制,如受限 shell、文件系统权限控制、强制访问控制(MAC)系统以及系统调用过滤等。本手册系统地收集并整理了绕过这些限制的实用技术,帮助操作者即使在高度受限的环境中也能维持执行权限并继续推进任务。
支持的平台
- Linux 发行版:广泛支持基于 Linux 内核的系统,包括 Ubuntu、Debian、CentOS、RHEL、Arch Linux 等。
- 安全机制:针对 rbash、noexec 文件系统、AppArmor、SELinux、seccomp 及 audit 日志。
- 工具栈:与
yaklang生态集成,可在 yak 脚本中直接调用本手册的技巧。
使用场景
- 远程 Shell 访问受限(如 rbash)
- 文件系统挂载为只读或禁止执行程序
- 系统启用了 AppArmor 或 SELinux 的强制模式
- 系统调用被 seccomp 策略限制
- 审计日志需要被绕过以避免被追踪
常用绕过技术
受限 Shell 绕过
- 利用子 shell:
bash -c 'command'或sh -c 'command' - 利用环境变量:
PATH=/usr/local/bin:$PATH或使用$SHELL - 通过 vi/less 逃逸:在
vi中执行:!bash获得完整 shell - 利用 Python 或 Perl:在受限 shell 中执行任意命令
noexec 文件系统绕过
- 使用解释器参数:
/lib/ld-linux.so.2 /path/to/binary - 直接使用脚本解释器:
python -c 'import os; os.execve("/bin/bash", [], {})' - 利用 /dev/shm 或 /tmp:如果这些目录有执行权限,则复制文件执行
AppArmor 绕过
- 查找未受保护的路径:使用
aa-status或find / -maxdepth 3 -type f -perm /u=x 2>/dev/null - 利用 profile 漏洞:搜索允许的脚本解释器(
/usr/bin/luajit,/usr/bin/node等) - https://gitlab.com/apparmor/apparmor/wiki/Initiative/Bypass 参考最新绕过方法
SELinux 绕过
- 检查上下文:
id -Z查看当前安全上下文 - 使用 setenforce 0 如果允许,临时禁用 SELinux
- 利用 unconfined 域:寻找
/usr/sbin/getenforce或其他允许的二进制
seccomp 绕过
- 使用更低级别的 syscall:如通过
ioctl或sched_setattr实现某些功能 - 利用内核漏洞:寻找已知的 seccomp 绕过 CVE
- 检查 strace 输出:分析哪些系统调用被允许
审计日志绕过
- 停止 auditd 服务:
systemctl stop auditd或service auditd stop - 加载自定义审计规则:
auditctl -a always,exit -S all -F key=bypass来覆盖原始规则需要 root 权限 - 临时禁用审计:
echo 0 > /proc/sys/kernel/audit_enabled
注意事项
- 某些绕过方法需要 root 权限或特定用户上下文。
- 操作前请确保已评估目标环境的安全策略,避免误操作导致系统崩溃。
- 本手册仅用于授权测试或安全研究,禁止用于非法目的。