在渗透测试的过程中,当我们拿到普通用户的shell后,会因为各种各样的权限限制,导致无法进行更多的操作,这个时候我们就要想办法进行提权。
收集环境信息
一旦我们拿到了受限制的shell,第一步是尽可能多地收集有关我们当前shell环境的信息。收集的信息将让我们了解我们所处的受限制的shell类型,以及所提供的功能和我们可以使用的技术。我们可以做以下的测试:检查可用的命令,方法是手动尝试,按两次TAB键看看能不能列出文件和目录
检查使用SUID权限配置的命令,看看它们是不是归root用户所有
检查可以使用的命令列表sudo,看看能不能用我们的密码执行其他用户的权限命令
检查有什么语言,如python,expect,perl,ruby等,他们会在以后派上用场
检查重定向运算符是否可用,例如'|' (pipe), “>”, “>>”, “
检查转义字符和执行标记,例如:( “;”冒号),“&”(后台支持),“’”(单引号),“”(双引号),“$(“(shell执行标记),“${“
然后,自己在本地搭建环境,进行各种测试,根据报错信息,确认是哪种类型的shell...
常见的shell类型报错如下:
rbash
rksh
rzsh
lshell
一些受限制的shell在错误消息中会显示其名称,有些则没有。
常用的突破技术
我们从基础开始、我们可以使用一些非常简单的技术逃避受限制的shell来执行命令或访问我们不能或者不应该访问的系统区域、、、这些技术大多依赖简单的命令转义字符,重定向运算符甚至Linux系统shell变量污染、、、我们来分析一下:
1.Console编辑(vim)
Vim有一个功能,允许我们在其中运行脚本和命令、如果vim可用,可以用一下的命令来进行测试::!/bin/ls -l b*
Vim会离开编辑器并显示“ls -l b*”执行命令的结果,显示所有目前目录下以字母“b”开头的文件...
我们可以使用这个技术执行任何其他命令甚至是另一个可用的shell,比如bash,以突破我们目前的限制,就比如::set shell=/bin/sh
<