内网穿透

Frp

根据对应的操作系统及架构,从 Release 页面下载最新版本的程序。
frpsfrps.ini 放到具有公网 IP 的机器上。( s - server )
frpcfrpc.ini 放到处于内网环境的机器上。( c - client )

访问路径:
攻击机 -> VPS(跑frps的) -> 内网中转机(跑frpc的) -> 访问内网其它环境

配置 frps

修改 frps.ini 文件,这里使用了最简化的配置

1
2
3
# frps.ini
[common]
bind_port = 1000

启动 frps

1
2
3
./frps -c ./frps.ini
如果需要后台运行:
nohup frps -c frps.ini >/dev/null 2>&1 &

配置 frpc

修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x

1
2
3
4
5
6
7
8
9
10
11
# frpc.ini
[common]
server_addr = IP #vps地址
server_port = 10808 #vps监听端口

[plugin_socks]
type = tcp
remote_port = 12345 #代理端口
plugin = socks5
plugin_user =
plugin_passwd = #代理密码

启动 frpc

1
2
3
./frpc -c ./frpc.ini
如果需要后台运行:
nohup frpc -c frpc.ini >/dev/null 2>&1 &

连接代理

假设我们已经控制了一台内网机器,内网中存在另一个主机开启了 Web 服务。

image.png

网络为 192.168.174.0/24
存在 Web 服务的主机 IP 为 192.168.174.128,我们正常是访问不了的

image.png

写好 frps 配置文件

image.png

启动 frps

image.png

192.168.174.132上配置 frpc.ini

image.png

启动 frpc

image.png

Server 端接收到连接,连接成功

image.png

  1. 使用 Proxifier

添加代理

image.png

设置规则

image.png

访问成功

image.png

  1. 使用浏览器插件/配置系统代理

使用 SwitchyOmega 插件配置代理

image.png

选择代理

image.png

访问成功

image.png

系统代理同理,在 socks proxy 填上 server ip & port 即可:

image.png

二层代理

为了简便(懒),不开那么多容器/主机,直接在配置文件限制 Web 服务仅本机登录,正常访问是这样的:

image.png

单纯为了学习搭建代理,就不配置漏洞环境了(懒),这里假设我们通过 192.168.174.132 打进了 192.168.174.128,需要用 192.168.174.128,继续搭建代理中转来渗透另一个网段。

访问路径:
攻击机 -> VPS(跑frps的) -> 一层内网中转机(192.168.174.132) -> 二层内网中转机(192.168.174.128) -> 访问内网其它环境

配置文件

放在二层内网里的主机:frpc.ini,如 192.168.174.128

1
2
3
4
5
6
7
8
9
10
//frpc.ini

[common]
server_addr = 0.0.0.0 //一层内网主机地址
server_port = 10809 //一层内网主机监听端口

[socks5]
type=tcp
remote_port = 12346
plugin = socks5

放在一层内网里的主机:frps.ini,如 192.168.174.132

1
2
3
4
//frps.ini

[common]
bind_port = 10809

frps:

image.png

frpc:

image.png

接收到了信号

image.png

配置 Proxychains

创建一个 Chains,并按顺序拖入代理,顺序从上到下

image.png

配置后成功访问

image.png

Summary

多层代理的原理是一样的,上层代理(如一层)运行 frps,下一层(如二层)运行 frpc时的 server地址为一层的地址,端口为上层代理的监听端口 (bind_port),设置代理时所填的 IP 为一层主机的 IP,端口填二层主机里的 remote_port

IOX

简介

端口转发 & 内网代理工具,功能类似于 lcx/ew,但是比它们更好

工作模式

fwd

监听 0.0.0.0:88880.0.0.0:9999,将两个连接间的流量转发

1
./iox fwd -l 8888 -l 9999

监听 0.0.0.0:8888,把流量转发到 1.1.1.1:9999

1
./iox fwd -l 8888 -r 1.1.1.1:9999

连接 1.1.1.1:88881.1.1.1:9999, 在两个连接间转发

1
./iox fwd -r 1.1.1.1:8888 -r 1.1.1.1:9999

proxy

在本地 0.0.0.0:1080启动 Socks5 服务

1
./iox proxy -l 1080

在被控机开启 Socks5 服务,将服务转发到公网 VPS
在 VPS 上转发 0.0.0.0:99990.0.0.0:1080
你必须将两条命令成对使用,因为它内部包含了一个简单的协议来控制回连

1
2
./iox proxy -r 1.1.1.1:9999
./iox proxy -l 9999 -l 1080 // 注意,这两个端口是有顺序的

接着连接内网主机

1
2
3
4
# proxychains.conf
# socks5://1.1.1.1:1080

$ proxychains rdesktop 192.168.0.100:3389

详细可浏览 官方文档

使用方法

所有的参数都是统一的。-l/--local意为监听本地端口;-r/--remote 意为连接远端主机
注意: v0.4 版本之后,-l/--local参数可以指定监听哪个 IP。如果只指定了端口,则默认是 0.0.0.0:PORT

1
2
3
4
-l 127.0.0.1:9999      -l *127.0.0.1:9999      # 127.0.0.1:9999
-l 9999 -l *9999 # 0.0.0.0:9999

`-l :9999`也是可以的,但并不推荐。因为`-l *:9999`(监听0.0.0.0:9999,开启加密)会有歧义

开搞

搞了 docker 靶场(终于)

  • 192.168.100.10 是跳板机,开启了 Shiro 服务,外网可访问
  • 192.168.100.11 是内网服务器,开启了 st2,外网不可访问

image.png
修改 /etc/proxychains.conf

1
socks5  0.0.0.0 10888

监听并映射端口

1
./iox proxy -l 22222 -l 10888

利用过程不多说,写入🐎后上传 iox
image.png
在目标机器上

1
./iox proxy -r x.x.x.x:22222

接收到连接
image.png
配置 Proxifier 或浏览器插件都可以,代理地址为 x.x.x.x:1088822222 是客户端连接的端口,10888 是我们代理连接的端口,iox 会对 22222 端口和 10888 端口的流量进行转发,注意顺序,2222210888 不能互换。

可用内网地址访问 Shiro
image.png
访问 st2 的机子 192.168.100.11:8080
Docker 中有 struts2 全版本的漏洞平台,需要检测哪一个漏洞就直接更改地址即可,这里以 S2-001为例:
192.168.100.11:8080/S2-001/
image.png

至此内网转发成功

image.png

地址也确认是 192.168.100.11

image.png

进接着添加新网络,st2 有两个网卡,IP 为 192.168.1.2
image.png
这个网段内存在 192.168.1.3,开启了 thinkphp5 服务
Shiro1 192.168.100.10 的主机只在一个网络内,因此与 tk5 是不通的
image.png
st2 192.168.100.11里可以通
image.png
现在为双网卡
image.png
上传小马
image.png
上传大马
image.png
连接上去后开始上传 iox 建立代理
image.png
192.168.100.10 上开启监听 22221080192.168.100.11 上连接 2222
image.png
设置 chains,连接成功
image.png

Summary

iox 相比起 frp 是更加的简便,iox yyds!

To be continued

先整理了 frp,更多代理工具挖坑待填。


内网穿透
https://52hertz.tech/2023/07/29/nat/
作者
Ustin1an
发布于
2023年7月29日
许可协议