除了Vim和less,还有哪些冷门命令可以用于权限提升?
Linux 提权—突破受限制的shell权限
当渗透测试者或安全研究员成功获取一个受限制的shell后,视野往往会被Vim、less这类众所周知的“逃生舱”所吸引。然而,linux和Unix系统的工具箱远比这丰富,其中隐藏着一些看似无害、实则功能强大的“冷门”命令,它们同样能成为权限提升的跳板。这些命令的隐蔽性,恰恰是它们最大的价值所在。

被遗忘的编辑器:ed与ne
除了Vim,一些古老的或轻量级的编辑器也保留着执行外部命令的能力。ed,这个行编辑器界的活化石,通常被视为一个简单的文本处理工具。但在ed的交互模式下,输入! /bin/sh,它就能像Vim一样,暂时挂起编辑器并启动一个shell。这个功能在那些为了保持系统最小化而仅安装ed的环境中,可能成为唯一的选择。
另一个例子是ne,一个旨在替代Vi的轻量级编辑器。它的“Load Prefs”功能本意是加载用户配置文件,但在某些受限制的shell(如lshell)中,这个文件浏览对话框可能意外地允许用户导航到父目录,甚至直接访问/etc/passwd等敏感文件。这并非设计上的命令执行漏洞,而是功能在受限上下文中的“滥用”,效果却出奇的好。
不止于翻页:more与pinfo的玄机
大家都知道less的!command技巧,但别忘了它的前辈more。在许多系统上,more同样支持在浏览文件时通过!sh来启动子Shell。关键在于,系统管理员可能会记得禁用less,却忽略了more。
更冷门的是pinfo,一个用于查看info页面的工具。在某些严格限制命令执行的定制Shell里,pinfo可能被允许运行以查看帮助文档。一旦进入pinfo的浏览界面,输入感叹号!,同样会触发一个命令执行提示符。原本用来查询ls用法的工具,瞬间变成了执行ls /etc甚至启动/bin/sh的通道。
系统工具的双重身份:find与nmap的旧事
有些命令的“本职”与Shell无关,但设计上的灵活性埋下了伏笔。find命令的-exec参数本意是对找到的文件执行操作,但find . -exec /bin/sh ;这条指令会让它为当前目录下的每个文件(甚至是一个已知的文件)启动一个Shell。如果这个Shell以root权限运行(例如通过SUID位),提权就直接完成了。
nmap的旧版本(约2009年以前)曾有一个--interactive模式,开启后是一个交互式控制台。在这个控制台里,输入!sh就能逃逸到系统Shell。虽然现代版本早已移除该功能,但在一些遗留系统或特定嵌入式环境中,它依然是一个需要警惕的“历史特性”。
环境变量与文本处理器的“跨界”
权限提升有时不需要直接执行新命令,而是拓宽现有命令的边界。export命令本身不执行代码,但它可以修改环境变量,比如PATH。在极度受限的环境里,如果允许执行export,攻击者可以将PATH指向一个包含自定义二进制文件的目录,之后执行的任何命令都可能被劫持。
文本处理器awk也不容小觑。它不仅仅用于处理字段,其BEGIN块中的system()函数可以直接调用系统命令:awk 'BEGIN {system("/bin/sh")}'。当bash或sh被明确禁止时,awk可能还在允许列表里,静静地等待着被唤醒。
说到底,这些冷门命令的利用,核心在于对系统工具行为机制的深度理解。防御者封堵了常见的门,攻击者就去寻找那些没上锁的窗。安全是一场永不停歇的博弈,而知识库的深度,往往决定了在这场博弈中,你能看到多少别人忽略的细节。

参与讨论
ed还能这么用?学到了新姿势!
more居然也能弹shell,管理员真容易漏掉这个
awk的system函数确实阴险,防不胜防啊
求问pinfo在Ubuntu 22.04上默认装了吗?
之前渗透时就靠find提权成功过,绝了
nmap老版本还有这功能?现在基本见不到了吧🤔
export改PATH这招太脏了,但好用
ne那个文件浏览能越权?有点意思